On Mon, Apr 1, 2013 at 9:10 AM, Prasoon Shukla <[email protected]>wrote:
> Okay, so I have been away a while due to a lot of reasons. Fortunately, I > will have time from now on for about 3 weeks. As of now, I have a working > API of the Coordinate System class, the Vector class, and, the Reference > Frame class. The Reference Frame class is where I will try to implement all > of the time dependent functionality. I will explain all of these in detail > soon in my proposal on the wiki. > > The next thing that I am trying to think of is the Vector.integrate() > method. As is obvious, we will use it for integration over vector and > scalar fields. > > Now, the first thing is to have a VectorIntegral class that would > represent an integral complete with the field, the type (line, area or > volume) and the path/area/volume to integrate over. The problem I am having > now is this: Right now, SymPy can solve integrals symbolically for the > one-dimensional case. I need to implement > > a) Line integrals - For this I need some notion of a path. Right now, the > integrate function in SymPy takes only straight paths (that is we can only > provide end points and the path is just one of the coordinate axes). But, I > need support for three dimensional paths. One solution I thought of is to > have a class called Path that would contain the parametric definitions for > the path. The methods in this class can further be used as helpers to > evaluate the integral. This can be done by reducing the line integral into > simple integral in one variable which SymPy can already evaluate. > Take a look at the already existing line_integrate() as well. > > b) Surface Integrals - Again, I need some way to represent an area. So, > perhaps a Surface class will do the job? Implementation will be similar as > mentioned above. > > c) Volume Integrals - Needs a Volume class. Similar implementation. > > The implementation of a Path, Surface and a Volume class seems to be the > solution to this problem at this point. If anyone else has a better idea, > please do tell. Otherwise, I think I'll go ahead with this. > > Another problem that I have right now is this: How do I calculate the > multiple integrals that will arise in evaluating the above three cases? I > think that this can be implemented with some work in the integration > module, which I'll have to do at a later stage. > > But then again, SymPy is a symbolic maths library, and, the computations > of the above mentioned integrals will be numerical in nature. So, I think > that we may not need too many major changes to be able to implement this. > For example, line integrals can just be reduced to integrals in one > variable. Surface and volume integrals will need to be reduced to simple > integrals in 2 and 3 dimensions and then be evaluated. > How are they numerical in nature? Integrals are by their nature symbolic. They take symbolic functions and return a symbolic result. Numerics are useful if the answer is not expressible in terms of nice functions. Aaron Meurer > Anyway, these are just the ideas in my mind. And admittedly, they are in a > crude form. Hopefully, in a day or two, I'll have more refined ideas to go > on with. In the meantime, please make do tell any suggestions/changes that > you gentlemen think should be there. > > Thanks > > -- > 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 [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/sympy?hl=en-US. > > For more options, visit https://groups.google.com/groups/opt_out. > > > -- 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 [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sympy?hl=en-US. For more options, visit https://groups.google.com/groups/opt_out.
