Matlab 线性代数(二)--向量组的线性相关性及方程组的特解

本文通过MATLAB演示了线性代数中的两个经典问题:求解非齐次线性方程组的特解及齐次线性方程组的通解,并找到向量组的最大无关组,以及用该组线性表示其余向量。

1.

%求齐次线性方程组的通解
clear
A=[2,4,-1,4,16;-3,-6,2,-6,-23;3,6,-4,6,19;1,2,5,2,19]; %输入系数矩阵A
b=[-2;7;-23;43]; %输入常数列向量b
[R,s]=rref([A,b]);  %把增广矩阵的最简行阶梯矩阵赋给R
[m,n]=size(A);
x0=zeros(n,1);    %将特解x0初始化为n维零列向量
r=length(s);    %将矩阵A的秩赋给变量r
x0(s,:)=R(1:r,end);  %将矩阵R的最后一列按基准元素的位置给特解x0赋值
disp('非齐次线性方程组的特解为:')
x0               %显示特解x0
disp('对应齐次线性方程组的基础解系为:')
x=null(A,'r')  %得到齐次方程组的基础解系x

2.


%找向量组的最大无关组,并用它线性表示其他向量
clear
a1=[1;1;0;2;2]; %输入5个列向量
a2=[3;4;0;8;3];
a3=[2;3;0;6;1];
a4=[9;3;2;1;2];
a5=[6;-2;2;-9;2];
A=[a1,a2,a3,a4,a5];
[R,s]=rref(A);
r=length(s);
fprintf('最大线性无关组为:')
for i=1:r
    fprintf('a%d',s(i));
end
for i=1:r
    A0(:,i)=A(:,s(i));  %显示最大无关组矩阵A0
end
A0
s0=[1,2,3,4,5];
for i=1:r
    s0(s(i))=0;
end %若s0的某元素不为0,表示该元素为矩阵A中除最大无关组以外其他列向量的序号
s0=find(s0); %删除s0中的零元素,此时s0中元素为其他向量的序号
for i=1:5-r
    fprintf('a%d=',s0(i))
    for j=1:r
       fprintf('%3d*a%d+',R(j,s0(i)),s(j));
    end
    fprintf('\b\b \n'); %去掉最后一个“+”
end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值