Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用sympy替换表达式_Python_Sympy_Symbolic Math - Fatal编程技术网

Python 用sympy替换表达式

Python 用sympy替换表达式,python,sympy,symbolic-math,Python,Sympy,Symbolic Math,我有以下的表达: 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是共矩阵对象,且第一个元素定义为p/l,则 g[0,0].subs([(p,u**2 + a**2*cos(

我有以下的表达:

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是共矩阵对象,且第一个元素定义为
p/l
,则

g[0,0].subs([(p,u**2 + a**2*cos(v)),(l,u**2 - us*u + a**2)])
应该这样做,但是我仍然得到
p/l
,表达式保持不变。如果我在ipython会话中简单地键入
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))}

谢谢我只是想说明一下,因为我上面列出的表达式是相互依赖的,所以我必须确保以正确的顺序替换:
us,p,a,l=symbols('us,p,a,l');g=g.subs({p:u**2+a**2*cos(v)});g=g.subs({l:u**2-us*u+a**2});g=g.subs({us:2*g*M/c**2});g=g.subs({a:J/(M*c)});g=简化(g)