数值分析中求解线性方程组的 MATLAB 程序(6 种)1。回溯法(系数矩阵为上三角)function X=uptrbk(A,B)%求解方程组,首先化为上三角,再调用函数求解[N,N]=size(A);X=zeros(N,1);C=zeros(1,N+1);Aug=[A B];for p=1:N—1 [Y,j]=max(abs(Aug(p:N,p))); C=Aug(p,:); Aug(p,:)=Aug(j+p-1,:); Aug(j+p-1,:)=C; if Aug(p,p)==0 'A was singular.No unique solution。’ break; end for k=p+1:N m=Aug(k,p)/Aug(p,p); Aug(k,p:N+1)=Aug(k,p:N+1)—m*Aug(p,p:N+1); endendD=Aug;X=backsub(Aug(1:N,1:N),Aug(1:N,N+1));2。系数矩阵为下三角function x=matrix_down(A,b)%求解系数矩阵是下三角的方程组n=length(b);x=zeros(n,1);x(1)=b(1)/A(1,1);for k=2:1:n x(k)=(b(k)-A(k,1:k-1)*x(1:k—1))/A(k,k);end3。普通系数矩阵(先化为上三角,在用回溯法)function X=uptrbk(A,B)%求解方程组,首先化为上三角,再调用函数求解[N,N]=size(A);X=zeros(N,1);C=zeros(1,N+1);Aug=[A B];for p=1:N-1 [Y,j]=max(abs(Aug(p:N,p))); C=Aug(p,:); Aug(p,:)=Aug(j+p—1,:); Aug(j+p—1,:)=C; if Aug(p,p)==0 ’A was singular.No unique solution.’ break; end for k=p+1:N m=Aug(k,p)/Aug(p,p); Aug(k,p:N+1)=Aug(k,p:N+1)—m*Aug(p,p:N+1); endendD=Aug;X=backsub(Aug(1:N,1:N),Aug(1:N,N+1));4.三角分解法function [X,L,U]=LU_matrix(A,B)%A 是非奇异矩阵%AX=B 化为 LUX=B,L 为下三角,U 为上三角%程序中并没有真正解出 L 和 U,全部存放在 A 中[N,N]=size(A);X=zeros(N,1);Y=zeros(N,1);C=zeros(1,N);R=1:N;for p=1:N-1 [max1,j]=max(abs(A(p:N,p))); C=A(p,:); A(p,:)=A(j+p-1,:); A(j+p-1,:)=C; d=R(p); R(p)=R(j+p-1); R(j+p—1)=d; if A(p,p)==0 'A is singular.No unique solution' break; end for k=p+1:N mult=A(k,p)/A(p,p); A(k,p)=mult; A(k,p+1:N)=A(k,p+1:N)-mult*A(p,p+1:N); endendY(1)=B(R(1));for k=2:N Y(k)=B(R(k))-A(k,1:k—1)*Y(1:k—1);endX(N)=Y(N)/A(N,N);for k=N-1:—1:1 X(k)=(Y(k)-A(k,k+1:N)*X(k+1:N))/A(k,k);endL=tril(A,-1)+eye(...