我想用一个较短的表达式代替一个长方程。这是一个简单的示例:
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
。有什么办法可以自动解决此问题?
我不认为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