前言
我们知道一个矩阵有15种广义逆矩阵,最常用的是和
!在这两种中
又是
的特例,我用的最多的就是
。因此,本文主要介绍广义逆矩阵
的预备矩阵知识:满秩分解。
满秩分解
定义:设矩阵,其中下标r是A的秩数(r>0);如果存在
和
,使得下式成立,则称为A的满秩分解:
注意:矩阵A的满秩分解不是唯一的!
定理:设,且A的"Hermite标准形 / 行最简形式"为H。取A的第
列构成的矩阵F;又取H的前r行构成矩阵G,则A = FG即为A的一个满秩分解。
定理说的很明白,下面我们就根据上面的定理进行矩阵的满秩分解:
% 满秩分解: A = FG
% 其中A是m*n, 秩为r; 则F是m*r, 秩为r; G是r*n, 秩也为r
% 满秩分解不是唯一的!但是一般得用下面的这种方法
clear ; clc;
A = [1 5 1 3;1 2 -1 2;-1 -2 -2 1];
r = rank(A); % 记录A的秩数r
[row,col] = size(A); % 记录A的尺寸
H = rref(A); % A的行最简形式H
G = H(1:r,:); % 取行最简形式前面r行
col_list = []; % 记录"行最简形式H"中各个主元1对应的列号
num = 1; % 一个计数器
for m = 1:row
for n = m:col
if H(m,n) == 1
col_list(num) = n;
num = num + 1;
break;
end
end
end
F = A(:,col_list); % 上面记录的H中的列号所对应的"A中"的那些列
% 判断满秩分解后再重组是否和原来的一样: 1是一样, 0是不一样
isequal(A,F*G)