旁听了今天的上机课,收获良多。
方阵A求逆,先做LU分解。A的逆等于U的逆乘于L的逆,L的逆就利用下三角矩阵求逆算法进行求解,U的逆可以这样求:先将U转置成下三角矩阵,再像对L求逆一样对U的转置求逆,再将得到的结果转置过来,得到的就是U的逆。
因此,关键是下三角矩阵的求逆。
1.下三角矩阵求逆算法
我利用的公式计算公式如下:
对角元素.png
对角元素以下的元素.png
我的代码如下:
def triInverse(matA):
'''
@author:zengwei
输入:
matA:一个等待求逆的下三角矩阵,大小为n*n,并且希望里面的元素值是浮点数
输出:
matInv:matA的逆矩阵
'''
numRows = matA.shape[1]
matL = matA.copy()
matInv = np.zeros((numRows,numRows))
for row in np.arange(0,numRows):
matInv[row,row] = 1/matL[row,row]
for k in np.arange(row-1,-1,-1):
matInv[row,k] = -(np.dot(matInv[row,k