有关线性代数的Matlab代码笔记(4)——生成矩阵,消元矩阵

再继续:

%%%%%%%%%%%%%%%%%%%%%说明 %%%%%%%%%%%%%%%%%%%

生成矩阵:矩阵的一组基满足:这组基能够生成该矩阵且各向量线性无关。.若能找

到相同的一组基,那么矩阵的列空间必定相同。

%%%%%%%%%%%%%%%%%%%%%CODE %%%%%%%%%%%%%%%%%%

ffunction samespan(A1, A2)


% samespan  测试两个矩阵是否有相同的列空间.
%
% samespan(A1, A2) 
%如果A1 和 A2的列空间相同,函数返回其维数
%若不同,则返回零。


rankA1 = rank(A1)
rankA2 = rank(A2)
rankboth = rank([A1 A2])


if (rankA1 == rankA2) & (rankA1 == rankboth) 
  disp('A1和A2列空间相同.');
else
  disp('A1和A2列空间不同.');
end

%%%%%%%%%%%%%%%%%%%%%范例 %%%%%%%%%%%%%%%%%%

>> A=[1 2 3;2 2 5;1 1 1]


A =


     1     2     3
     2     2     5
     1     1     1

>> B=[3 3 1;3 4 5;9 0 4]


B =


     3     3     1
     3     4     5
     9     0     4


>> samespan(A,B)


rankA1 =


     3




rankA2 =


     3




rankboth =


     3


A1和A2列空间相同.
%%%%%%%%%%%%%%%%%%%%%说明 %%%%%%%%%%%%%%%%%%%

消元矩阵:高斯消元是矩阵的基本消元法,消元的过程相当于在原矩阵的基础上乘以

一个消元矩阵。

%%%%%%%%%%%%%%%%%%%%%CODE %%%%%%%%%%%%%%%%%%

function [E, R] = elim(A)


% elim  是对E*A = R的因数分解.
%
% E = elim(A) 返回消元矩阵 E
% E*A = R.R是行简化阶梯矩阵。
% 如果A是可逆方阵,那么 E = inv(A).
%
% [E, R] = elim(A) 返回消元矩阵E 
% 行简化阶梯矩阵R.


[m, n] = size(A);
I = eye(m);
%
%对增广矩阵[A I]消元得到[R E].
%
RE = rref([A I]);
R = RE(:, 1:n);
E = RE(:, (n+1):(m+n));

%%%%%%%%%%%%%%%%%%%%%范例 %%%%%%%%%%%%%%%%%%

>> A=[1 2 3;2 2 5;1 1 1]


A =


     1     2     3
     2     2     5
     1     1     1

>> [E,R]=elim(A)


E =


   -1.0000    0.3333    1.3333
    1.0000   -0.6667    0.3333
         0    0.3333   -0.6667




R =


     1     0     0
     0     1     0
     0     0     1

你可能感兴趣的:(自学自玩,linear,algebra,matlab)