diffgeomから演算子を使用するときは、sympy.diffgeomで定義されたシンボルを使用する必要があります。
あなたのセットアップは、次のようになります。行列は、現在サポートされていません
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()
、あなたは基本ベクトル場の線形結合として、それらを表現する必要があります。
In [19]: e_x, e_y, e_L, e_u, e_v = coord.base_vectors()
は、その後、あなたが導出ベクトルWRTを定義します成分と基底ベクトルの和として:
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
正確には、次元3の新しいマニフォールドを定義し、その上にパッチを、次にパッチ上の座標系を定義して、投影する空間のR^3を表す必要があります。簡単にするため、同じマニフォールドの投影を使用して、新しいマニュアルを定義しないようにしました。
注:あなたはおそらく以前diffgeomオブジェクトの簡素化を妨げバグがありました、SymPy(バージョン1.0)の最新バージョンが必要です。
ありがとうございました。 – sci9
しかし、2次導関数の導関数はどうでしょうか?次の設定が正しいか、より効果的な方法がありますか? >>> 'L1fh = LieDerivative(expr、sqrt(L ** 2 +(y - x)*) * 2)) >>> 'expr2 = L1fh.args [2] * e_x + L1fh.args [1] * e_y + L1fh.args [0] * e_L' >>>' L2fh = LieDerivative(expr2 、sqrt(L ** 2 +(y - x)** 2)) ' >>>' pprint(L2fh) ' – sci9
もし結果が正しいなら、それはやり方だと思います。 –