1

我正在编写一个脚本以在 Python 中进行分析计算。为此,我需要参数的向量表示以及一些基本的向量操作,例如梯度和发散,因此我开始使用 SymPy。但是,我注意到在球坐标中没有一种直接的工作方式。

阅读文档后,我发现笛卡尔环境可以简单地定义为

from sympy.vector import CoordSys3D

N = CoordSys3D('N')

并直接开始使用酉笛卡尔酉向量 i, j, k

v = 2*N.i + 3*N.j - N.k

有什么方法可以为球坐标初始化这样的环境,我可以访问径向、theta 和 phi 酉矢量,因此基本矢量操作会相应地完成?非常感谢您!

4

2 回答 2

2

您可以将球坐标酉向量作为“r”、“t”、“p”(或者您可以使用“radius”、“theta”、“phi”等全名)而不是“i”、“j”、 'k' 如果你指出变换是'球形':

>>> from sympy.vector import CoordSys3D
>>> P = CoordSys3D('P', transformation='spherical', variable_names=list('rtp'))
>>> P.r
P.r
于 2020-04-08T14:26:08.443 回答
1

经过一番阅读,我发现可以将新基的变量定义为,新基 variable_names() 的酉向量定义为 vector_names()

所以球坐标系的完整定义是

P = CoordSys3D('P', transformation='spherical',
                    vector_names=list('rtp'), 
                    variable_names=list('RTP'))

现在酉向量确实尊重适当的关系,例如

P.r & P.t = 0
P.r ^ P.t = P.p

where&代表点积和^叉积

于 2020-04-09T12:26:32.240 回答