求解变量方程
Solving an equation for a variable
我怎样才能得到这个给我 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
不要分配 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
。 =
与相等完全不同。
solve(z,x)
正确 returns 0 因为您的代码实际上是在询问:
What's the value of x that would cause z to become 0?
您真正想做的(如 here 所述)是解决 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]
我认为 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]
我怎样才能得到这个给我 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
不要分配 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
。 =
与相等完全不同。
solve(z,x)
正确 returns 0 因为您的代码实际上是在询问:
What's the value of x that would cause z to become 0?
您真正想做的(如 here 所述)是解决 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]
我认为 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]