MATLAB中矩阵LU分解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、 题目
编写实现对N 阶非奇矩阵A 进行LU 分解的程序。
二、 算法组织
若n 阶方阵的各阶顺序主子行列式不为零则存在唯一的单位上三角矩阵L 和上三角矩阵L 式的A=LU 。其基本思想是GAUSS 消去法。参照《计算方法》第38页L 、U 各项计算公式编写公式。
1.
输入带分解矩阵A 2. For i=1,2,……n
将L 对角线元素赋值L (i ,i )=1;
3. For j=1,2,……n
3.1 将U 第一行元素赋值U (1,j )=A (1,j );
4. For k=2,……n 4.1 将
L 第一列元素赋值L(k,1)=A(k,1)/U(1,1); 5. For i=2,……n
5.1 For j=i ,……n
1
0k kj ki ij kj i A L A U -=-⇒∑ For k=i+1,……n 10k jk ki ij kk jk i A L A U L -=⎛⎫-⇒ ⎪⎝⎭
∑
三、 程序实现
clear all
clc
A=input('请输入一个方阵 ');%
输入一个n 阶方阵
[n,n]=size(A);
L=zeros(n,n);
U=zeros(n,n);
for i=1:n %将L 的主对角线元素赋值1 L(i,i)=1; end for j=1:n %求矩阵U 的第一行元素 U(1,j)=A(1,j); end for k=2:n %求矩阵L 的第一列元素 L(k,1)=A(k,1)/U(1,1);
end
for i=2:n %求L、U矩阵元素
for j=i:n
s=0;
for t=1:i-1
s=s+L(i,t)*U(t,j);
end
U(i,j)=A(i,j)-s;
end
for k=i+1:n
r=0;
for t=1:i-1
r=r+L(k,t)*U(t,i);
end
L(k,i)=(A(k,i)-r)/U(i,i);
end
end
%输出矩阵L、U
L
U
四、计算与结果分析
本题中根据GAUSS消去算法对任意一各阶顺序主子式不为零的n阶方阵A进行L分解。并对《计算方法》第二章42页例进行了
计算。计算结果如右图。
该计算结果与实际分解结果相同,该算法可靠。但该算法没有考虑A顺序主子行列式值为0的情况,因此还有欠缺。