高斯消元法的弊端就是針對係數矩陣A,當遇到A(n,n)=0的狀況時邊沒法處理(出現除0錯誤),以及有效減小計算機在處理浮點運算時出現舍入偏差。 shell
列主消元法代碼: code
function [x]=ext_gauss(A,b) n=size(A,1); for k=1:n-1 [value,index]=min(abs(A(k:n,k))); index+=k-1; if value==0 break endif A([k,index],:)=A([index,k],:); b([k,index])=b([index,k]); %%gause m=A(k+1:n,k)/A(k,k); A(k+1:n,k+1:n)-=m*A(k,k+1:n); A(k+1:n,k)=zeros(n-k,1); b(k+1:n)-=m*b(k); %%end gauss endfor x=zeros(n,1); x(n)=b(n)/A(n,n); for k=n-1:-1:1 x(k)=(b(k)-A(k,k+1:n)*x(k+1:n))/A(k,k); endfor endfunction
解決了高斯消元法中存在不能消元的現象。 本程序只能處理滿秩係數矩陣。 io