用Python解矩阵方程——Numpy模块

用Python解矩阵方程,可以用两个模块——NumpySympy
矩阵方程:Ax=b
A为系数矩阵,b为解集矩阵

令B为A的增广矩阵
1、Ax=b无解的充要条件:r(A)+1=r(B)
2、Ax=b唯一解的充要条件:r(A)=r(B)=n
3、Ax=b无穷多解的充要条件:r(A)=r(B)<n

1、Numpy

这里要用到numpy.linalg模块

import numpy as np
# numpy.linalg模块包含线性代数的函数。使用这个模块,可以计算逆矩阵、求特征值、解线性方程组以及求解行列式等
from numpy.linalg import *

p1 = np.array([[1,2],[3,4]])
y = np.array([[5],[9]])
print(solve(p1,y))
p2 = np.array([[1,3,4],[2,3,4]])
print(solve(p1,p2))
p3 = np.array([[1,0,3],[2,5,4],[3,4,5]])
p4 = np.array([[1,3,4],[2,7,4],[6,5,8]])
print(solve(p3,p4))

结果:

[[-1.]
 [ 3.]]
[[ 0.  -3.  -4. ]
 [ 0.5  3.   4. ]]
[[ 4.75       -3.          3.        ]
 [-0.5         1.         -0.66666667]
 [-1.25        2.          0.33333333]]

用这个模块求解矩阵方程时,有一个缺点,就是:
系数矩阵A必须为n×n
相应的b矩阵为n×m

如果矩阵A不满足n×n,会出现下面的情况:

import numpy as np
# numpy.linalg模块包含线性代数的函数。使用这个模块,可以计算逆矩阵、求特征值、解线性方程组以及求解行列式等
from numpy.linalg import *

y = np.array([[5],[9]])
p2 = np.array([[1,3,4],[2,3,5]])
print(solve(p2,y))

结果:

numpy.linalg.LinAlgError: Last 2 dimensions of the array must be square

2、Sympy

用Python解矩阵方程——Sympy模块

猜你喜欢

转载自blog.csdn.net/weixin_48615832/article/details/109403308