假设我有一个多元多项式:
import sympy
x_1, x_2, x_3, x_4 = sympy.symbols('x_1 x_2 x_3 x_4')
expressions = [
-x_1*x_1-x_2*x_2+x_1*x_2,
x_2*x_2-x_1*x_2,
x_1*x_1-x_1*x_2,
x_1*x_2,
x_1*x_1-x_1*x_3,
x_1*x_3,
x_3*x_3-x_2*x_3,
-x_2*x_2-x_4*x_4+x_2*x_4,
x_2*x_2-x_2*x_3,
x_2*x_3,
-x_3*x_3-x_4*x_4+x_3*x_4,
x_3*x_4,
]
model = sympy.Poly(sympy.Add(*expressions))
model
# Poly(x_1**2 - x_2*x_3 + x_2*x_4 + 2*x_3*x_4 - 2*x_4**2, x_1, x_2, x_3, x_4, domain='ZZ')
请注意,变量是[x_1, x_2, x_3, x_4]
,因此可以将多项式的系数表示为4x4方阵,其中平方项的系数(即x_i*x_i
)是沿矩阵的对角项,而非对角项取决于x_i*x_j
的系数:
[[1, 0, 0, 0],
[0, 0, -1, 1],
[0, 0, 0, 2],
[0, 0, 0, -2]
]
从sympy
多项式开始,对于任何变量为[x_1, x_2, ..., x_N]
的多项式,是否可以提取系数并构造如上所示的相应的sympy
矩阵?
最终,我真的希望获得numpy
数组的最终矩阵,这样它就可以用于sympy
以外的额外计算.