我怎样才能得到这个给我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
我怎样才能得到这个给我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
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]
不分配z = a*x/y
,并且不通过z
到solve
。
solve(expr, symbol)
决定什么symbol
值将使expr
等于0。如果你想弄清楚的x
值使得z
等于a*x/y
,你想z - a*x/y
等于0:
solve(z - a*x/y, x)
你做不想要分配z = a*x/y
。 =
意味着与平等完全不同的东西。
我认为答案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]
由于所有其他的答案指出了解决方案,
我想强调在这里使用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]
我强烈建议你[使用IDE(http://sopython.com/维基/ Python_IDEs)。它可以帮助你更快地学习python,并帮助避免微不足道的错误,如user2357112 [在他的回答](http://stackoverflow.com/a/35808171/4230591)中描述的为名称'z'分配新值。 (你使'z'成为一个符号,然后通过做'z = ...'它不再是那个符号)。虽然这个错误与你的实际问题有些无关。 –