我想将一组符号线性方程式转换为如下形式: {0} = [M] * {v} 其中{0}是零向量,[M]是变量矩阵,{v}是系数向量。
只是为了向您展示我的问题,我想如果有人能帮助我以所需的形式写下我的例子:
from sympy import*
init_printing()
a_0, a_1, a_2, x = symbols('a_0, a_1, a_2, x')
a_0 + a_1*x + a_2 * x**2
注意:我使用的是LaTeX表格,所以如果你没有安装LaTeX,你应该删除 init_printing()。
所以我想要的是制作一个表格:
{a_0
{0} = [1 x x^2] * a_1
a_2}
在我的例子中会有一组相似的线性方程,但我想学习一些能够将一组线性方程转换成矩阵形式的想法或函数。
答案 0 :(得分:3)
分解x
术语的一个简单方法是采用雅可比行列式
In [40]: eq = a_0 + a_1*x + a_2 * x**2
In [41]: Matrix([eq]).jacobian(Matrix([a_0, a_1, a_2]))
Out[41]:
⎡ 2⎤
⎣1 x x ⎦
另一个可能对您有用的功能是collect
:
In [45]: collect(eq, x, evaluate=False)
Out[45]:
⎧ 2 ⎫
⎨1: a₀, x: a₁, x : a₂⎬
⎩ ⎭
答案 1 :(得分:1)
以下示例演示:创建多项式,创建具有x次幂的矩阵;创建系数矩阵;矩阵的乘法;提取矩阵的元素。
参考文献:Polynomials Manipulation,Matrices。
from sympy import *
a_0, a_1, a_2, x = symbols('a_0, a_1, a_2, x')
p = Poly( a_0 + a_1*x + a_2 * x**2, x)
powers = Matrix([[x**k for k in range(p.degree()+1)]])
c = p.all_coeffs()
c.reverse()
coefficients = Matrix(c)
print(powers, coefficients, (powers*coefficients)[0,0])