直接三角分解法(LU分解)

clear

clc

A=input('请输入矩阵A=')

b=input('请输入b=')

n=length(A(1,:));%求A矩阵第一行的长度,即矩阵维数

for k=1:n

   if (det(A(1:k,1:k))==0) %n阶矩阵A,若A的顺序主子式均不为零,则矩阵A存在唯一Doolittle分解,使得A=LU

       input('A矩阵不满足顺序主子式均不为零,请重新运行程序')

   end

end

%分解A

for k=1:n

    t1=0; %中间变量t1

    for j=1:k-1

        t1=t1+L(k,j)^2;

    end

    L(k,k)=sqrt(A(k,k)-t1);

    for i=k+1:n

        t2=0; %中间变量t2

        for j=1:k-1

            t2=t2+L(i,j)*L(k,j);

        end

        L(i,k)=(A(i,k)-t2)/L(k,k);

    end

end

L

U=L'

%%

%created by TGU cuienen1912

你可能感兴趣的:(matlab程序,数值计算方法)