我有一个复杂的等式,它是几个变量的函数,我想像这个例子一样操作:
y = (x + a) / z
x = y*z - a
是否可以进行这种操作matlab或python?
如果有可能,请指出执行此操作的方法或功能。
我尝试在Sympy Shell中使用以下代码:
x,y,z,a = symbols ('x y z a')
solve ( y = (x-a)/z, x)
我收到以下错误:
Traceback (most recent call last):
File "<string>", line 1
SyntaxError: non-keyword arg after keyword arg
答案 0 :(得分:2)
在Matlab中,您需要符号化的数学工具箱(我没有,所以我无法测试)然后您应该能够使用solve
函数:
syms y x a z
solve(y == (x+a)/z, x)
我对sympy
没有任何体验,但非常确定based on the docs这就是你的做法:
from sympy import solve, Poly, Eq, Function, exp
from sympy.abc import x, y, z, a
solve(y - (x+a)/z, x)
答案 1 :(得分:1)
SymPy是一个Python库,因此您的SymPy代码需要是有效的Python。在Python中,=
是赋值运算符,这就是solve ( y = (x-a)/z, x)
给出SyntaxError的原因。请参阅http://docs.sympy.org/latest/gotchas.html#equals-signs。
要在SymPy中创建相等,请使用Eq
,例如solve(Eq(y, (x - a)/z, x)
,或使用假设SymPy中的表达式等于零的事实,例如solve(y - (x - a)/z, x)
。