首页 > 解决方案 > 用 ReferenceFrame 向量替换 SymPy sp.Symbol

问题描述

我在使用SymPy 中的subs函数为向量替换符号时遇到问题。下面是我想做的一个例子:

N = ReferenceFrame('N')
zhat, Q, p = sp.symbols('\\hat{\\mathbf{z}} Q p')
expr = 4*Q*zhat/p
old = zhat
new = N.z
expr.subs(old, new)

我认为,考虑到这个问题的上下文,有必要声明我要求初始表达式expr完全由Symbols组成,并且在替换之前具有Mul类型。

标签: pythonsympy

解决方案


我还没有找到针对上述问题的解决方案,但有一个非常相似的解决方案:

N = CoordSys3D('N')
zhat, Q, p = sp.symbols('\\hat{\\mathbf{z}} Q p')
expr = 4*Q*zhat/p
old = zhat
new = N.k
expr.subs(old, new)

使用CoordSys3D代替ReferenceFrame允许替换。


推荐阅读