NumPy没有符号解决方案的概念。您可以按如下方式使用Symphy:
from sympy import *
a1, a2, a3 = 3, 4, 5 # known coefficients, they could be symbols too
x1, x2, x3, x4, x5, x6 = symbols('x1:7')
y1, y2, y3, y4, y5, y6 = symbols('y1:7')
eqns = [a1*x1 - y1, a1*x2 - y2, a2*x3 - y3, a2*x4 - y4, a3*x5 - y5, a3*x6 - y6,
x2 - y3, x3 - y2, x4 - y5, x5 - y4]
linsolve(eqns, [x1, x2, x3, x4, x5, x6, y1, y2, y3, y4, y5, y6])
输出为
{(y1/3, 0, 0, 0, 0, y6/5, y1, 0, 0, 0, 0, y6)}
表示大多数变量必须为0,x1必须为y1/3,x5必须为y6/6,变量y1、y2可以是任意值。
上述用途
linsolve
因为系统在每个未知量上都是线性的。另外
solvers
可用于非线性方程。
请注意,方程式可以输入为
lhs - rhs
(如上所述)或
Eq(lhs, rhs)
.不作为
lhs == rhs
在Python中会立即计算为False。