matlab数值分析程序--高等数学,数值代数的matlab实现-文字版, matlab电子书, 和matlab 有关的电子书:

3.4.2 直接LU分解法及其MATLAB程序

3.4.2  直接LU分解法及其MATLAB程序

将矩阵进行直接LU分解的MATLAB程序

function hl=zhjLU(A)

[n n] =size(A); RA=rank(A);

if RA~=n

disp('请注意:因为A的n阶行列式hl等于零,所以A不能进行LU分解.A的秩RA如下:'), RA,hl=det(A);

return

end

if RA==n

    for p=1:n

h(p)=det(A(1:p, 1:p));

end

hl=h(1:n);

for i=1:n

if h(1,i)==0

disp('请注意:因为A的r阶主子式等于零,所以A不能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:'), hl;RA

return

end

end

  if h(1,i)~=0 

disp('请注意:因为A的各阶主子式都不等于零,所以A能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:')

for j=1:n

U(1,j)=A(1,j);

end

for k=2:n

for i=2:n

       for j=2:n

            L(1,1)=1;L(i,i)=1;

         if i>j

L(1,1)=1;L(2,1)=A(2,1)/U(1,1); L(i,1)=A(i,1)/U(1,1);

L(i,k)=(A(i,k)- L(i,1:k-1)*U(1:k-1,k))/U(k,k);

else

U(k,j)=A(k,j)-L(k,1:k-1)*U(1:k-1,j);

end

end

end

end

hl;RA,U,L

end

end

 

例3.4.3  用矩阵进行直接LU分解的MATLAB程序分解矩阵

.

解 在MATLAB工作窗口输入程序

>> A=[1 0 2 0;0 1 0 1;1 2 4 3;0 1 0 3]; hl=zhjLU(A)

运行后输出结果

L = 1   0   0   0     

    0   1   0   0     

    1   2   1   0     

    0   1   0   1     

hl = 1   1   2   4    

 
请注意:因为A的各阶主子式都不等于零,所以A能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:

RA = 4     

U = 1   0   2   0 

    0   1   0   1 

    0   0   2   1 

    0   0   0   2 

L = 1   0   0   0     

    0   1   0   0     

    1   2   1   0     

    0   1   0   1     

hl = 1   1   2   4    

 

欢迎转载,转载请注明来自一手册:http://yishouce.com/book/3/3030402.html
友情链接It题库(ittiku.com)| 版权归yishouce.com所有| 友链等可联系 admin#yishouce.com|粤ICP备16001685号-1