我正在使用SymPy lib for Python。 我有两个同情符号和表达方式将它们绑定在一起:
x = Symbol('x')
y = Symbol('y')
expr = 2 * x - 7 * y
我如何用'x'来表达'y',即获得平等:
y = (2/7) * x
感谢。
答案 0 :(得分:9)
这就是你如何用x
:
In [1]: from sympy import *
In [2]: x, y = symbols('x, y')
In [3]: expr = 2*x - 7*y
In [4]: solve(expr, y)
Out[4]: [2*x/7]
这是有效的,因为如果solve()函数出现的东西不是完整的等式,它假定提供的表达式等于零。换句话说,写作
expr = 2*x - 7*y
上面的相当于写作
expr = Eq(2*x - 7*y, 0)
会告诉SymPy
2x - 7y = 0.
答案 1 :(得分:0)
由于这是在Google搜索中显示的第一个结果,因此我将提供一种替代方法,即使它不是问题的直接答案。
正如另一个答案所指出的,如果您有两个独立的符号和一个与它们相关的方程式,则可以使用expr.solve
来用另一个符号来表达它们:>
x, y = symbols('x y')
expr = 2*x - 7*y
y = solve(expr, y)[0]
y # outputs 2*x/7
但是有时候会发生,您只有仅一个独立符号x
,而另一个符号y
用x
表示,并且您想要反转依赖关系– 将y
设为独立符号。
# what we have
y = symbols('y')
x = 7*y/2
# what we want
x = symbols('x')
y = ???
在这里,这个简单的实用工具便派上了用场。它使您可以用a
来表达b
。
def express(a, b, name):
sym = symbols(name)
sol = solve(a-sym, b)
assert len(sol) == 1
return (sym, sol[0])
第一个参数a
是我们要根据自由变量b
表示的因变量。第三个参数name
是我们将赋予a
的名称(到目前为止,它只是一个未命名的表达式)。
用法示例:
y = symbols('y')
x = 7*y/2
x, y = express(x, y, 'x')
y # outputs 2*x/7