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.