数值分析中直接三角分解法matlab程序
%直接三角分解法(1)function [x,y,L,U]=nalu(a,b)n=length(a);x=zeros(n,1);y=zeros(n,1);U=zeros(n,n);L=eye(n,n);U(1,:)=a(1,:);L(2:n,1)=a(2:n,1)/U(1,1);for k=2:nU(k,k:n)=a(k,k:n)-L(k,1:k-1)*U(1:k-1,k:n);L(k+1:n,k)=(a(k+1:n,k)-L(k+1:n,1:k-1)*U(1:k-1,k))/U(k,k);endfor i=2:ny(1,1)=b(1,1);y(i,1)=b(i,1)-L(i,1:i-1)*y(1:i-1,1);endy(:,1);for i=n-1:-1:1x(n,1)=y(n,1)/U(n,n);x(i,1)=(y(i,1)-U(i,i+1:n)*x(i+1:n,1))/U(i,i);end x(:,1);clear all;clc;A=[1,2,3;2,5,2;3,1,5];b=[14;18;20];[x,y,L,U]=nalu(A,b);function [x,y,L,U]=sanjiao(a,b)n=length(a);x=zeros(n,1);y=zeros(n,1);L=eye(n,n);U=zeros(n,n); %L,U·Ö½âU(1,:)=a(1,:);L(2:n,1)=a(2:n,1)/U(1,1);for j=2:nU(j,j:n)=a(j,j:n)-L(j,1:j-1)*U(1:j-1,j:n);L(j+1:n,j)=(a(j+1:n,j)-L(j+1:n,1:j-1)*U(1:j-1,j))/U(j,j);end%Çó½â£¬ÁíUx=y,Ly=by(1,1)=b(1,1);for i=2:n y(i,1)=b(i,1)-L(i,1:i-1)*y(1:i-1,1);end x(n,1)=y(n,1)/U(n,n);for i=n-1:-1:1 x(i,1)=(y(i,1)-U(i,i+1:n)*x(i+1:n,1))/U(i,i);end clear all;a=[1,2,3;2,5,2;3,1,5];b=[14;18;20];[x,y,L,U]=sanjiao(a,b);xy