MATLAB中矩阵LU分解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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的情况,因此还有欠缺。

相关文档
最新文档