先寫m文件
function
[x,y]=line_solution(A,b)
[m,n]=size(A);
y=[];
if
norm(b)>0
rank(A)==rank([A,b])
rank(A)==n
disp('方程有唯一解x');
x=A\b;
else
disp('方程有無窮多解,特解為x,其齊次方程組的基礎解係為y');
y=null(A,'r');%null是用來求齊次線性方程組的基礎解系的,加上'r'則求出的是一組最小正整數解,如果不加,則求出的是解空間的規範正交基。
end
disp('方程無解');
x=[];
disp('原方程組有唯一零解x');
x=zeros(n,1);
rank(A)<n
disp('方程組有無窮個解,基礎解係為y');
y=null(A,'r');
----------------------------------------------------------------------
舉例調用:
format
rat
%以有理數形式輸出
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
short
%保留4位有效數字
先寫m文件
function
[x,y]=line_solution(A,b)
[m,n]=size(A);
y=[];
if
norm(b)>0
if
rank(A)==rank([A,b])
if
rank(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);
if
rank(A)<n
disp('方程組有無窮個解,基礎解係為y');
y=null(A,'r');
end
end
----------------------------------------------------------------------
舉例調用:
format
rat
%以有理數形式輸出
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
format
short
%保留4位有效數字