使用Python+SymPy 求解线性方程组
2016-02-12 本文已影响7915人
NoneLand
最近几天在复习线性代数,想用Python求解线性方程组,最开始想用SciPy,但是SciPy求解方程组好像要求系数矩阵为方阵,经过几番搜索,在知乎上找到了一点线索,原知乎问题请点我。
根据知乎的答案实践之后发现此方法甚好,不仅可以求解系数矩阵为方阵的线性方程组,还可以求解含自由变量的线性方程组,所以记录在此。
方程组有一组数值解
原方程组如下:
2x+3y+z=4
4x+2y+3z =17
7x+y-z=1
求解方程组的代码Python代码如下:
from sympy import *
a = Matrix([[2,3,1],[4,2,3], [7,1,-1]])
b = Matrix([[4],[17],[1]])
x = symarray('x', 3)
solve(a*x-b)
执行以上代码得到
{x_1: -1, x_2: 5, x_0: 1}
求解存在自由变量的方程组
代码如下:
from sympy import *
a = Matrix([[3,0,-1,0],[8,0,0,-2], [0,2,-2,-1]])
x = symarray('x', 4)
solve(a*x)
得到:
{x_1: 5x_3/4, x_2: 3x_3/4, x_0: x_3/4}
更多请参照 SymPy Doc.