根据Doolittle分解格式, 可以用matlab分解A矩阵为一个下三角矩阵L与上三角矩阵U的乘积。
其实现过程为:
第一步:初始化
1、初始化上三角阵的第一行
2、初始化下三角阵的第一列
第二步:前向分解计算
根据上述方法编程,为了说明问题,特举例如下。
3、例题
将 A=[1 11 2]分解成L和U矩阵
将 A =[2,2,34,7,7-2,4,5]分解成L和U矩阵
4、运行程序,可得到如下结果。
网上很多高手编的程序,随便找找就是。找了一个,你看看。
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
>>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)