函數x =高斯(A,B)
矩陣A,B的大小應該是NA x NA和NA x NB。
%這個函數用高斯消元算法求解Ax = B。
NA =大小(A,2);[NB1,NB]= size(B);
如果NB1 ~= NA,錯誤(' A和B必須有兼容的維度');結束
n = NA+NB;AB = [A(1:NA,1:NA) B(1:NA,1:NB)];%增廣矩陣
epss = eps*ones(NA,1);
對於k = 1:NA
%按等式在AB(k,k)處縮放部分旋轉。(2.2.20)
[akx,kx] = max(abs(AB(k:NA,k))。/max(abs([AB(k:NA,k+1:NA)epss(1:NA-k+1)])'));
如果akx & lteps,誤差(‘奇異矩陣且無唯壹解’);結束
MX = k+kx-1;
如果kx & gt1 %行更改(如有必要)
tmp_row = AB(k,k:N);
AB(k,k:N) = AB(mx,k:N);
AB(mx,k:N)= tmp _ row;
結束
%高斯正向消去法
AB(k,k + 1:N) = AB(k,k+1:N)/AB(k,k);
AB(k,k)= 1;%使每個對角元素成為壹個
對於m = k + 1: NA
AB(m,k+1:N) = AB(m,k+1:N) - AB(m,k)*AB(k,k+1:N);%Eq。(2.2.5)
AB(m,k)= 0;
結束
結束
上三角矩陣方程的%向後替換
%所有對角線元素都等於1
x(NA,)= AB(NA,NA+1:N);
對於m = NA-1: -1:1
x(m,)= AB(m,NA + 1:N)-AB(m,m + 1:NA)*x(m + 1:NA,);%Eq。(2.2.7)
結束
示例:
& gt& gta =[0 1 1;2 -1 -1;1 1 -1];b =[2 0 1]';
& gt& gtx =高斯(A,b)
x =
1.00000000000000
1.00000000000000
1.00000000000000