SymPy 根据另一个表达变量
SymPy express variable in terms of another
我正在为 Python 使用 SymPy 库。
我有两个 sympy 符号和绑定它们的表达式:
x = Symbol('x')
y = Symbol('y')
expr = 2 * x - 7 * y
如何用 'x' 表示 'y',即等式:
y = (2/7) * x
谢谢。
这是用 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.
由于这是 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
用[=15=表示],而你想扭转依赖关系——使y
成为独立符号。
# what we have
y = symbols('y')
x = 7*y/2
# what we want
x = symbols('x')
y = ???
这就是这个简单实用函数派上用场的地方。它可以让你用 b
.
来表达 a
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
我正在为 Python 使用 SymPy 库。 我有两个 sympy 符号和绑定它们的表达式:
x = Symbol('x')
y = Symbol('y')
expr = 2 * x - 7 * y
如何用 'x' 表示 'y',即等式:
y = (2/7) * x
谢谢。
这是用 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.
由于这是 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
用[=15=表示],而你想扭转依赖关系——使y
成为独立符号。
# what we have
y = symbols('y')
x = 7*y/2
# what we want
x = symbols('x')
y = ???
这就是这个简单实用函数派上用场的地方。它可以让你用 b
.
a
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