使用Python+SymPy 求解线性方程组

最近几天在复习线性代数,想用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.

你可能感兴趣的:(使用Python+SymPy 求解线性方程组)