先来看下矩阵的逆的定义:
我们设未知数
拆成2个矩阵和向量的乘积
最后就变成了4个未知数 4个方程的线性系统的求解
也可是看成2个小的线性系统,如下图
再观察 因为系数矩阵完全一样,所以我们可以做合并
上述我们只是求出了右逆矩阵。但是对于逆的定义是左乘和右乘都是单位矩阵,那为什么只要求右乘呢?
下面有个性质,如果一个方阵A 有右逆B,则B也是A的左逆。即B是A的逆。这个性质的证明我们留在后面再看。
下面我们来实现下求解矩阵的逆。
def inv(A):
if A.row_num() != A.col_num():
return None
n = A.row_num();
ls = LinearSystem(A, Matrix.identity(n))
if not ls.gauss_jordan_elimination():
return None
invA = [[row[i] for i in range(n, 2*n)] for row in ls.Ab]
return Matrix(invA)
初等矩阵
至此三种基本操作 都可以用矩阵的乘法来替代了。
初等矩阵和可逆性
为什么矩阵的逆重要
矩阵的LU分解
可以进行LU分解的条件: 对A进行公司消元的过程中,不用交换2行的位置。
LU分解的作用
如果出现需要行交换的时候,需要引入置换矩阵
如果要得到2个都是上三角单位矩阵 和下三角单位矩阵,需要引入一个对角矩阵,也就是下图的D。
列交换
右乘置换矩阵