小能豆

sympy 用 2 个未知数和符号求解一个方程

javascript

import sympy
from sympy.abc import x, y, z, a, b

我想找到以下方程的 x 和 y 的根:f(x,y) = 2(x - a) + (y - b),其根为 x=a, y=b。使用 sympy 我得到

sym.solve((x - a)*2 + (y - b), [x, y])

$\left[ \left( a + \frac{b}{2} - \frac{y}{2}, y\right)\right]$

换句话说,即使我要求 sympy 也求解 y,sympy 也会将 y 视为符号(或标量)而不是变量。我怎样才能克服这个问题?


阅读 199

收藏
2024-02-23

共1个答案

小能豆

您遇到的问题是 sympy 将 y 视为常数而不是变量。要解决这个问题,您可以使用 symbols 函数显式地将 y 声明为变量,而不是从 sympy.abc 中导入。这样做可以确保 sympy 将 y 视为待解变量。以下是修改后的代码:

import sympy as sym

# 显式声明 x 和 y 为变量
x, y = sym.symbols('x y')

# 给定的方程
f = 2 * (x - a) + (y - b)

# 解方程
roots = sym.solve(f, [x, y])
print(roots)

现在,您应该能够得到正确的解 {x: a, y: b}

2024-02-23