如何用matlab求解齐次线性方程组

2022-03-18 科技 309阅读
先写m文件
function[x,y]=line_solution(A,b)
[m,n]=size(A);
y=[];
ifnorm(b)>0
ifrank(A)==rank([A,b])
ifrank(A)==n
disp('方程有唯一解x');
x=A\b;
else
disp('方程有无穷多解,特解为x,其齐次方程组的基础解系为y');
x=A\b;
y=null(A,'r');%null是用来求齐次线性方程组的基础解系的,加上'r'则求出的是一组最小正整数解,如果不加,则求出的是解空间的规范正交基。
end
else
disp('方程无解');
x=[];
end
else
disp('原方程组有唯一零解x');
x=zeros(n,1);
ifrank(A)disp('方程组有无穷个解,基础解系为y');
y=null(A,'r');
end
end
----------------------------------------------------------------------
举例调用:
formatrat%以有理数形式输出
A=[1,1,-3,-1;3,-1,-3,4;1,5,-9,-8];
b=[1;4;0];
[x,y]=line_solution(A,b);
x,y
formatshort%保留4位有效数字
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com