将一组符号线性方程转换为矩阵形式

时间:2016-05-01 23:06:34

标签: python matrix vector linear-algebra sympy

我想将一组符号线性方程式转换为如下形式: {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}

在我的例子中会有一组相似的线性方程,但我想学习一些能够将一组线性方程转换成矩阵形式的想法或函数。

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 ManipulationMatrices

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])