求Riemann曲率张量同向散射为了一个sph

2024-06-02 21:03:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在测试同向散射图书馆。我的目的是找到一个预先计算的度量的Riemann曲率张量,这个度量是由笛卡尔坐标和球坐标之间的转换得到的。这是密码

from sympy.diffgeom import Manifold, Patch, CoordSystem, TensorProduct
import sympy as sym
from sympy import cos,sinh,cosh, sin

m = Manifold("M",3)
patch = Patch("P",m)

cartesian = CoordSystem("cartesian",patch, ["x", "y", "z"])
x, y, z = cartesian.coord_functions()
spherical = CoordSystem("spherical", patch, ["r", "theta", "phi"])
r, theta, phi = spherical.coord_functions()
g = sym.Matrix([[1, 0, 0], [0, r**2, 0], [0, 0, r**2*sin(theta)**2]])

diff_forms = toroidal.base_oneforms()
metric_diff_form = sum([TensorProduct(di, dj)*g[i, j] for i, di in enumerate(diff_forms) for j, dj in enumerate(diff_forms)])

# Find the Riemann curvature tensor
from sympy.diffgeom import metric_to_Riemann_components
R = metric_to_Riemann_components(metric_diff_form)

当我运行这个时,我得到最后一行的以下错误

^{pr2}$

我不明白为什么,因为我测试了一个不同的(更复杂的)度量的代码。在


Tags: fromimport度量diffformsmetricriemannpatch
1条回答
网友
1楼 · 发布于 2024-06-02 21:03:24

你的矩阵是由坐标系球面的坐标函数组成的,你把它们和坐标系的两种形式混合在一起。在

在将度量矩阵转换为两种形式的和之前,请尝试以下操作:

diff_forms = spherical.base_oneforms()

错误消息非常简单。在

相关问题 更多 >