目录
1定理
设 ,则存在, 满足
A = BC
2求解过程
2.1求解B
对A仅做初等行变换即可得到简化阶梯形矩阵J,其秩为r,假设主元所在的第列,第...第列(r个线性无关的列向量,组成一个对角矩阵或r个基向量组成一个对角矩阵),然后选取矩阵A中的第列,第...第列组成B。注意此时(r个线性无关的列向量,组成一个对角矩阵或r个基向量组成一个对角矩阵)的对角线元素都应该是1。如果不为1,这应该对乘上相应的因子使其为1,然后不同的列有不同的变换因子,对应的列变换因子乘上B对应的列。
列如下图的B是阶梯简化后的矩阵。取第1,第2列作为基向量矩阵,但是对角元素不为1 ,B的第1列要乘上-1,第2列要乘上0.5才是元素为1的基向量。因此F = (A的第1列*(-1),A的第二列*0.5)组成标题中的B。
2.2求解C
将J的全为零的行去掉,剩下的行向量组成矩阵C。
3 matlab程序
因为rref函数简化后的 基向量的元素都为1,因此程序里面不需要额外乘上变换因子。
function [B,C] = FRdec(A)
% B = rref(A);
si = size(A);
k = rank(A);
B = zeros(si(1),k);
[C,D]= rref(A);
% D = zeros(1,k);%记录k个线性无关组在C中所在的列
% for i=1:k
% for j=1:si(2)
% if C(i,j) == norm(C(:,j));
% D(i) = j;
% continue;
% end
% end
% end
for i=1:k
B(:,i) = A(:,D(i)); %提取无关组对应的A的列向量
end
C = C(1:k,:);