Thanks for clarifying that. And sorry for the late reply. I am buried to 
the neck in academics and will stay that way till about 10th May so forgive 
me if I cannot reply soon.

About dual vectors; I haven't read about dual vectors as of yet. So I 
looked around on Google and found an introductory link, 
http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/other/dualVectors/
 . 
Now, if only I had some time on my hands, I could have gone to the library, 
found a book and read up more on the topic. Unfortunately, I do not have 
any time till the 10th of May and hence I won't be able to modify my 
application to accommodate dual vectors and how to represent dual vectors.

Nevertheless, as soon as I get free, I will *definitely* study the topic. 
Since the final results for GSoC will be announced on 27th May, so I am 
hoping that I can use the time before that date to read up on dual vectors 
and then I'll be more clear on how to implement them in code.

Also, I will submit the application today on the melange gsoc portal.

On Wednesday, April 17, 2013 12:00:17 AM UTC+5:30, Stefan Krastanov wrote:
>
> On 16 April 2013 20:16, Prasoon Shukla <prasoon...@gmail.com <javascript:>> 
> wrote: 
> > 
> > 
> > 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. 
> >> > To post to this group, send email to sy...@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. 
> >> > 
> >> > 
> >> 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. 
>
> You will need a smart way to represent dual vectors and scalar 
> products to represent Hessians. Even if some of us consider Hessians 
> less important, dual vectors and scalar products should be very high 
> on your list (and btw Hessians become trivial when you have the 
> aforementioned objects). 
>
> > 
> > @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. 
>
> It depends on a lot of things (and no body knows how many slots will 
> be provided by Google), but indeed this is one of the projects in 
> which I might have enough math/compsci background to volunteer to 
> mentor (if accepted, etc, etc). 
>

-- 
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