我怎样才能得到这个给我x = z * y / a?
from sympy import *
x,y,a,z = symbols('x y a z')
z = a*x/y
solve(z,x) # returns 0!
# would like to get z*y/a
答案 0 :(得分:6)
solve(z,x)
正确返回0,因为你的代码有效地询问“x的值是什么导致z变为0?”。
您真正想要做的事情(如this example in the sympy docs中所述)是解决a*x/y==z
,可以按照以下方式完成
from sympy import *
x,y,a,z = symbols('x y a z')
equation = a*x/y
new_eq = solve(equation - z, x) # its value is [y*z/a]
答案 1 :(得分:4)
不要指定z = a*x/y
,也不要将z
传递给solve
。
solve(expr, symbol)
确定symbol
的哪些值会使expr
等于0.如果您想确定x
使z
的值a*x/y
等于{{} 1}},您希望z - a*x/y
等于0:
solve(z - a*x/y, x)
您不想要分配z = a*x/y
。 =
意味着与平等完全不同的东西。
答案 2 :(得分:1)
我认为this question的答案可能有所帮助。应用于您的示例,这给出了:
>>> from sympy import *
>>> x,y,a,z = symbols('x y a z')
>>> l = z
>>> r = a*x/y
>>> solve(l-r,x)
[y*z/a]
答案 3 :(得分:0)
正如所有其他答案都指出了解决方案,
我想强调在这里使用Eq
个实例
Eq
对象代表An equal relation between two objects.
对于使用Eq
对象,您的代码应如下所示:
In []: a, x, y, z = symbols('a, x, y, z')
In []: foo = Eq(z, a*x/y)
In []: solve(foo, x)
Out[]: [y*z/a]