Gauss 列主元消去法、QR(MATLAB)(5 页)Good is good, but better carries it
精益求精,善益求善
例:用 Gauss 列主元消去法、QR 方法求解如下方程组:1
1)Gauss列主元法源程序:function x=Gauss(A,b)[m,n]=size(A); if m~=n error('矩阵不是方阵') returnendB=[A,b];n=length(A);for j=1:n-1 q=[zeros(j-1,1);B(j:n,j)]; [c,r]=max(abs(q)); %c为列主元,r为所在行 if r~=j temp=B(j,:); %交换两行 B(j,:)=B(r,:); B(r,:)=temp; end for i=j+1:n B(i,:)=B(i,:)-B(j,:)*(B(i,j)/c); endendx(n)=B(n,n+1)/B(n,n);for i=n-1:-1:1 for j=i:n-1 B(i,n+1)=B(i,n+1)-B(i,j+1)*x(j+1); end x(i)=B(i,n+1)/B(i,i);end2)在命令窗口输入 A,b,得到 x 的近似解:>> A=[2,2,1,2;4,1,3,-1;-4,-2,0,1;2,3,2,3];>> b=[1;2;1;0];>> x=Gauss(A,b)x = 1
5417 -2
7500 0
1)QR方法源程序:function [Q,R,X]=qrfj(A,b)[m,n]=size(A);if m