?? gauss.m
字號:
%高斯列主消元法接方程組
a=input('請輸入方程組系數(shù)矩陣a:') %輸入方程組的系數(shù)矩陣(a)為方陣
disp(a)
[m,n]=size(a) %輸入系數(shù)矩陣的行(m)和列(n)的大小
if m~=n %若a不是方陣顯示false錯誤
disp('false')
end
de=det(a);
if de==0
disp('a矩陣奇異請檢查!')
end
b=input('請輸入b矩陣:') %輸入方程組右邊的矩陣b
disp(b)
xrt=b; %備注,xrt為x的結(jié)果返回值
temp=zeros(m,1);
dmax=zeros(1,1);
for k=1:n %循環(huán)次數(shù)用k控制
dmax=zeros(1,1);
row1=ones(1,1);
for row=k:n %選主元
for col=k:n
if abs(a(row,col))>dmax
dmax=abs(a(row,col));
row1=row;
end
end
if dmax==0 %若選主元素為0則顯示高斯求解出錯:矩陣奇異
disp('高斯求解出錯:矩陣奇異')
end
if row1~=k %若選出的行位置與k不相等則換行
temp=a(k,:)
a(k,:)=a(row1,:)
a(row1,:)=temp;
temp=zeros(n,1);
temp=xrt(k)
xrt(k)=xrt(row1) %對b矩陣即x的結(jié)果矩陣換行
xrt(row1)=temp;
disp(a)
disp(xrt)
end
end
for row=k+1:m %消元計算
temp = a(row,k)/a(k,k)
xrt(row)=xrt(row)-temp*xrt(k);
for col=k:n
a(row,col)= a(row,col)-temp* a(k,col);
end
end
end
disp(a)
disp(xrt)
if a(end,end)==0 %若a矩陣最后一行一列的元素為0,則顯示false錯誤
disp('false')
end
xrt(end)=xrt(end)/a(end,end); %回代計算x的解xrt
row=m-1;
temp=zeros(m,1);
while row>0
for col=row+1:n
temp(row)=temp(row)+a(row,col)*xrt(col)
end
xrt(row)=(xrt(row)-temp(row))/a(row,row)
row=row-1;
end
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -