> 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.
I considered doing this for contour integrals in the complex plane some long time ago. If you do it the "right" way, then the code could maybe be reused for that case too. Although the typical paths in contour integrals are somewhat specific combinations of circles and lines. (I hoped that I could parametrize this all with the usual epsilons.) > 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. I have the hope that one could get away with just a single parametric object depending on as many parameters as necessary: L(u) := L(u_1, u_2, ..., u_n) would then represent an integral over an N-dimensional hypervolume (path: n=1, surface: n=2, volume: n=3 and so on) and the integral Int(f , L) --> Int( f(L(u)) |J L| du --> Int(...Int( f(L(u_1, ..., u_n)) |J L| du_1, ..., du_n It is for sure not easy to do this all the correct way such that all fits well together. But I think it's worth thinking about it! There is the most general version of the Stoke's theorem: http://upload.wikimedia.org/math/8/e/4/8e4e3b1cd7d06acf2438e40509c4f4e7.png in this notation independent on dimension of the "volume" Omega and its border dOmega. From this we can get all others, and that is the point why I think it should be possible to do this in a mostly dimension agnostic way. -- 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.