No way to choose orientation—except for
Line
regions or explicit parametrizations, integrals are only unique up to a sign, and you may get the opposite sign than the one you bargained for without any indication of this. We should create a newOrientedRegion
datatype.When we don't have enough info for orientation, we should at least have messages for alerting the user as to what kind of integral will be taken (absolute or not). There are also arguments to be made (or had!) about whether regions that automatically get converted to parametric form should have a sign or not, and if not, where the sign should be set to "positive". There's a big difference between $\int_{\vec{\gamma}} |\vec{v}\cdot d\vec{\gamma}|$ and $\left|\int_{\vec{\gamma}} \vec{v}\cdot d\vec{\gamma}\right|$!
Just realized I demand that the argument be an explicit vector field (a list). I should instead allow arbitrary expressions, like
v[x,y,z,...]
as well; this should be an easy fix when I get back.We put a lot of trust in formal variables being definitionless, and also we allow expressions like
v
andf
to evaluate fully with those formal variables inside. (Not to mention the newly-exposed conditions inImplicitRegion
!) This could be risky, in part because they might have a definition, but mostly because parts of our given expression might evaluate to something undesirable when acting on them outside of an integral—we don't know, and don't want to risk it.No error messages yet; it just returns unevaluated. Ideally we should say what's wrong if we can't evaluate.
We could generalize to higher dimensions! Why only integrate on curves? (Note that the current implementation supports any embedding dimension, by the way.)
Options! To, e.g., specify the preferred representation of our region, or include extra assumptions in our internal
Simplify
s.Mathematica has access to a great curated collection of curves via
SpaceCurve
. These often come with tangent vectors included as properties! We could extend this to use those too—not just regions—but that's pretty straightforward.We could add support for simple-enough
BooleanRegions
.Numerical functionality! There's lots to be done there.