gpt4 book ai didi

python - 将 sympy 矩阵转换为两种形式 (sympy.diffgeom)

转载 作者:太空宇宙 更新时间:2023-11-03 17:23:24 25 4
gpt4 key购买 nike

有没有办法将对称 SymPy 矩阵转换为两种形式?

当我尝试使用

sym.diffgeom.metric_to_Christoffel_1st(expr)

对于以下矩阵

Matrix([[a**2/(cos(theta) - cosh(eta))**2, 0, 0], 
[0, a**2/(cos(theta) - cosh(eta))**2, 0],
[0, 0, a**2*sinh(eta)**2/(cos(theta) - cosh(eta))**2]])

我收到错误

ValueError: The input expression is not a two-form.

矩阵表达式是笛卡尔坐标和环形坐标之间转换的度量。当我尝试在其他 sympy.diffgeom.metric_to_* 函数上使用该指标时,我遇到了同样的错误。

最佳答案

假设你的度量矩阵存储在变量m中,你可以这样做:

diff_forms = your_coord_system.base_oneforms()

metric_diff_form = sum([TensorProduct(di, dj)*m[i, j] for i, di in enumerate(diff_forms) for j, dj in enumerate(diff_forms)])

请注意,对于单一形式,TensorProduct(dx, dy) = -TensorProduct(dy, dx),这意味着如果您的矩阵不是对角矩阵,则元素 m[i, j] 将与 i != j 的元素 m[i, j] 相加。

如果您有一个对称矩阵,并且您只想添加一次非对角线元素,则为 i != j 添加 1/2 项。

关于python - 将 sympy 矩阵转换为两种形式 (sympy.diffgeom),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32889298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com