用SymPy替换表达式不起作用

问题描述 投票:1回答:1

我想用一个较短的表达式代替一个长方程。这是一个简单的示例:

from sympy.abc import z, h, m, G
y = 0.2 * m + z - h + 0.2 * z * m
y_1 = y.subs({m + z * m: G})
print(y_1)

预期结果为z - h + 0.2 * G,但它不会替换表达式。我知道问题是0.2。有什么办法可以自动解决此问题?

python sympy substitution
1个回答
0
投票

我不认为subs方法的工作方式与您认为的一样。它只是将一个术语替换为传递的输入值。例如,

expr = cos(x)
expr.subs(x, 0)#here 0 is replaced with x
print(expr) # 1, sinces cos(0) is 1

#Or

expr = x**3 + 4*x*y - z
expr.subs([(x, 2), (y, 4), (z, 0)])
print(expr) #40

如您所见,在您的subs方法中,您没有确切说明应替换的内容。按照上面的示例作为指导,它应该可以工作。您可以阅读更多here

© www.soinside.com 2019 - 2024. All rights reserved.