如何使用matlab命令进行LU分解

如何使用matlab命令进行LU分解,第1张

matlab有多种LU分解程序下面算一种:

function

[L,U]=myLU(A)

%实现对矩阵A的LU分解,L为下三角矩阵

A

[n,n]=size(A)

L=zeros(n,n)

U=zeros(n,n)

for

i=1:n

L(i,i)=1

end

for

k=1:n

for

j=k:n

U(k,j)=A(k,j)-sum(L(k,1:k-1).*U(1:k-1,j)')

end

for

i=k+1:n

L(i,k)=(A(i,k)-sum(L(i,1:k-1).*U(1:k-1,k)'))/U(k,k)

end

end

用法,在控制台输入

A=[1

2

3

-4-3

-4

-12

132

10

0

-34

14

9

-13]

网上很多高手编的程序,随便找找就是。

找了一个,你看看。

1.lu分解程序

function

[l,u,detA]

=

mylu(

a

)

%

该程式主是对系数矩阵a进行LU分解,具体算法可参见数值分析.

n=size(a,2)

u=zeros(size(a))

l=eye(size(a))

u(1,:)=a(1,:)

l(2:end,1)=a(2:end,1)/a(1,1)

for

r=2:n

for

j=r:n

u(r,j)=a(r,j)-l(r,1:r-1)*u(1:r-1,j)

end

for

i=r+1:n

l(i,r)=(a(i,r)-l(i,1:r-1)*u(1:r-1,r))/u(r,r)

end

end

detA=det(a)

2.调用

>>

A=magic(4)

>>

[L,U,detA]=mylu(A)

L

=

1.0000

0

0

0

0.3125

1.0000

0

0

0.5625

0.5663

1.0000

0

0.2500

1.3012

-3.0000

1.0000

U

=

16.0000

2.0000

3.0000

13.0000

0

10.3750

9.0625

3.9375

0

0

-0.8193

2.4578

0

0

0

0

detA

=

0

>>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7782669.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存