gpt4 book ai didi

python - 用 sympy 替换表达式

转载 作者:行者123 更新时间:2023-12-01 04:26:10 24 4
gpt4 key购买 nike

我有以下表达式:

p/l

我从矩阵中提取的。我稍后用以下代码定义 p 和 l

from sympy.abc import c,G,M,J,l,u,v,w
us = (2*G*M/c**2)
a = (J/(M*c))
p = (u**2 + a**2*cos(v))
l = (u**2 - us*u + a**2)

我想替换表达式 p/l 并用上面的所有表达式来描述它。我尝试执行以下操作。如果 g 是 sympy.Matrix 对象并且第一个元素定义为 p/l,则

g[0,0].subs([(p,u**2 + a**2*cos(v)),(l,u**2 - us*u + a**2)])

应该可以解决问题,但我仍然得到 p/l,表达式保持不变。如果我只是在 ipython session 中输入 p/l,我就会得到输出

(J**2*cos(v)/(M**2*c**2) + u**2)/(-2*G*M*u/c**2 + J**2/(M**2*c**2) + u**2)

这就是我想要的。 (几乎,我更喜欢首先对其应用简化:(J**2*cos(v) + M**2*c**2*u**2)/(-2*G *M**3*u + J**2 + M**2*c**2*u**2) )。

最佳答案

您正在用相同的表达式替换表达式,因此替换的结果与原始表达式相同。

确保不要混淆 SymPy 符号和 Python 变量:

# Python variable: `p` stores an addition object:
p = (u**2 + a**2*cos(v))

# SymPy symbol, it's just a symbol, no expressions:
p = Symbol('p')

# express symbol-expression relation in some way, like:
{p: (u**2 + a**2*cos(v))}

关于python - 用 sympy 替换表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33113468/

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