Ihre Einrichtung aussehen könnte:
In [1]: from sympy.diffgeom import *
In [4]: M = Manifold("M", 5)
In [5]: P = Patch("P", M)
In [6]: coord = CoordSystem("coord", P, ["x", "y", "L", "u", "v"])
In [7]: x, y, L, u, v = coord.coord_functions()
Matrices werden derzeit nicht unterstützt, müssen Sie sie als lineare Kombination von Basisvektorfelder zum Ausdruck bringen:
In [19]: e_x, e_y, e_L, e_u, e_v = coord.base_vectors()
Dann definieren den Vektor WRT Sie ableiten als eine Summe von Komponenten und Basisvektoren:
In [27]: expr = (x + u)*e_x + (y + v)*e_y + L*e_L
In [28]: LieDerivative(expr, sqrt(L**2 + (y - x)**2))
Out[28]:
2
(-x + y)⋅(x + u) (-x + y)⋅(y + v) L
- ─────────────────── + ─────────────────── + ───────────────────
________________ ________________ ________________
╱ 2 2 ╱ 2 2 ╱ 2 2
╲╱ (-x + y) + L ╲╱ (-x + y) + L ╲╱ (-x + y) + L
Um mehr zu sein präzise, Sie sollten eine neue Mannigfaltigkeit der Dimension 3 definieren, dann ein Patch darauf, dann ein Koordinatensystem auf dem Patch, um den Raum, auf den Sie projizieren, darzustellen. Der Einfachheit halber habe ich die Projektion auf die gleiche Mannigfaltigkeit verwendet, um zu vermeiden, dass eine neue Mannigfaltigkeit definiert wird.
Vielen Dank. – sci9
Aber was ist mit Derivaten zweiter Ordnung? Ist das folgende Setup korrekt oder gibt es einen effektiveren Weg? >>> 'expr = (x + u) * e_x + (y + v) * e_y + L * e_L' >>>' L1fh = LieDerivativ (expr, sqrt (L ** 2 + (y - x) * * 2)) ' >>>' expr2 = L1fh.args [2] * e_x + L1fh.args [1] * e_y + L1fh.args [0] * e_L' >>> 'L2fh = LieDerivativ (ausdr2 , sqrt (L ** 2 + (y - x) ** 2)) ' >>>' pprint (L2fh) ' – sci9
Wenn das Ergebnis korrekt ist, nehme ich an, das ist der Weg zu gehen. –