On Saturday, April 13, 2013 2:40:52 AM UTC+5:30, brombo wrote:
>
> On 04/12/2013 03:53 PM, Prasoon Shukla wrote: 
> > So, after spending a couple of days writing the proposal, I've 
> > uploaded on to the wiki. 
> > 
> > 
> https://github.com/sympy/sympy/wiki/GSoC-2013-Application-Prasoon-Shukla:-Vector-Calculus-Module
>  
> > 
> > @All community members: Please give it a read. This is the first draft 
> > of the proposal so it's bound to be rough-ish. Please point out things 
> > that you don't like or would like to see improved. Also, please 
> > suggest any additions that you'd like to see. 
> > 
> > Thank you. 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> > Groups "sympy" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> > an email to sympy+un...@googlegroups.com <javascript:>. 
> > To post to this group, send email to sy...@googlegroups.com<javascript:>. 
>
> > Visit this group at http://groups.google.com/group/sympy?hl=en-US. 
> > For more options, visit https://groups.google.com/groups/opt_out. 
> > 
> > 
> Analogous to term pythonic code I would use sympythonic code and make 
> the following suggestions - 
>
> Start by defining you basis vectors as noncommutative symbols - 
>
> (e1,e2,e3) = symbols('e_1 e_2 e_3',commutative=False) 
>
> Then if a1, a2, and a3 are commutative sympy expressions (symbols) any 
> vector a is - 
>
> a = a1*e1+a2*e2+a3*e3 
>
> Then you automatically get vector addition, subtraction, and scalar 
> multiplication (if c, b1, b2, and b3 are scalars) 
>
> b = b1*e1+b2*e2+b3*e3 
>
> and 
>
> a+b = (a1+b1)*e1+(a2+b2)*e2+(a3+b3)*e3 
>
> a-b = (a1-b1)*e1+(a2-b2)*e2+(a3-b3)*e3 
>
> c*a = c*a1*e1+c*a2*e2+c*a3*e3 
>
> Then if you define dictionaries for the dot and cross products, dot 
> product 
>
> dot_dict = 
> {e1**2:1,e1*e2:0,e1*e3:0,e2*e1:0,e2**2:1,e2*e3:0,e3*e1:0,e3*e2:0,e3**2:1} 
>
> then - 
>
> dot(a,b) = (a*b).subs(dot_dict) 
>
> cross product 
>
> cross_dict = 
> {e1**2:0,e1*e2:e3,e1*e3:-e2,e2*e1:-e3,e2**2:0,e2*e3:e1,e3*e1:e2,e3*e2:-e1,e3**2:0}
>  
>
>
> cross(a,b) = (a*b).subs(cross_dict) 


> Like wise for coordinate transformations - 
>
> Let the bases be e1,e2,e3 ang g1,g2,g3 be related by g1 = f1(e1,e2,e3), 
> g1 = f2(e1,e2,e3), g1 = f2(e1,e2,e3) 
> where f1, f2, and f3 could also be functions of the coordinates then 
>
> g_to_e_dict = {g1:f1,g2:f2,g3:f3} 
>
> a = a1*g1+a2*g2+a3*g3 
>
> a_in_terms_of_e = a.subs(g_to_e_dict) 
>
> etc. 
>

 
First, I thank you for the suggestion sir.

Certainly, this methods will work. But in our case, a Vector object is not 
merely a sum of c*e like terms. Indeed, my whole project hinges on the 
segregation of the two elements required to represent a vector : The 
coordinate system providing a way to represent points in space and also 
providing bases and other relevant relations, and, the vector object that 
will hold the components of a vector field. Also, this project is based on 
a component based approach to vectors. Therefore, even though this method, 
namely, substituting from a dictionary, works, still it seems at this point 
that I will need something different.

Also we will need to implement the vector calculus operations (div, curl), 
which wouldn't work in such a manner. What I think is that we should 
implement a procedure that will take care of both the dot, cross products *
and* the div, curl. (Similar to what happens when we use the del operator). 
But perhaps that is a long shot. And also, this operation needs to work on 
individual components; the method you provide, however elegant it might be, 
still works on the vector as a whole. So, IMO, we should probably take this 
problem on with a different approach. But that's just what I think.

> Make sure this generalizes to the Jacobian Matrix for functions R^n -> 
R^M.

I have made some changes under the Gradient heading. I hope that takes care 
of the Jacobian matrix. Hessian is on hold for a bit, according to what 
Stefan said. But if I have some time towards the end, then certainly I 
shall try to implement the Hessian matrix as well.

@Stefan : A couple of days back, I asked on this thread who might be the 
mentor for this project, should it be accepted. From our interactions on 
this thread, I gather that you have a pretty strong mathematical knowledge 
as concerns my proposal. Also, I feel that you can be a very good guide; 
both for Python related things, and, the project implementation in general. 
You also seem to understand my level of mathematical and programming 
competence fairly well. So, if my project idea does get accepted, I was 
hoping that you would be willing to mentor for me. Would that be alright?

I understand that this is a pretty big request but I believe that you'd be 
a very good mentor and hence, I just had to ask.

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sympy+unsubscr...@googlegroups.com.
To post to this group, send email to sympy@googlegroups.com.
Visit this group at http://groups.google.com/group/sympy?hl=en-US.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to