前言
在Python中,无论是求方阵的逆矩阵,还是求非方阵的伪逆矩阵,都有现成的模块可供调用。
求方阵的逆矩阵:np.linalg.inv(a),其中a必须为N×N的方阵,运行结果为a的逆矩阵a-1。
求非方阵的伪逆矩阵:scipy.linalg.pinv(a),其中a可以为任意M×N的矩阵,且M可以不等于N,运行结果为a的伪逆矩阵x,其中x满足:axa=a且xax=x。
示例1:求方阵的逆矩阵
from numpy.linalg import inv #求方阵的逆矩阵
a=[[1,2],[3,4]]
inv(a)
输出如下:
array([[-2. , 1. ],
[ 1.5, -0.5]])
记上述输出为x,则可验证ax=xa=单位矩阵
示例2:求非方阵的伪逆矩阵
from scipy.linalg import pinv #求非方阵矩阵的伪逆矩阵
a=[[1,2,3],[4,5,6]]
pinv(a)
输出如下:
array([[-0.94444444, 0.44444444],
[-0.11111111, 0.11111111],
[ 0.72222222, -0.22222222]])
记上述输出为x,则可验证axa=a,xax=x:
import numpy as np
temp1=np.matmul(a,x)
np.matmul(temp1,a)
输出如下:
array([[1., 2., 3.],
[4., 5., 6.]])
import numpy as np
temp1=np.matmul(x,a)
np.matmul(temp1,x)
输出如下:
array([[-0.94444444, 0.44444444],
[-0.11111111, 0.11111111],
[ 0.72222222, -0.22222222]])
END