直接法解线性方程组

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

直接法解线性方程组

实习题目:

仿照三对角方程组的追赶法解五对角方程组,其中系数矩阵为A,右端向量为:r。将A分解为LU。其中L为下三角,U为单位上三角。A为7*7阶的矩阵,其中对角元为4 5 6 7 8 9 10。上下次三角对角线元素为1 2 3 4 5 6 ;上下第二条对角线元素为1 2 3 4 5;右端项为:1 2 3 4 5 6 7.

要求:输出系数矩阵A,右端向量r,下三角矩阵L,单位上三角矩阵U,下三角矩阵Ly=b 的解向量y,单位上三角方程组Ux=y的解(即最终的解向量。保留七位小数。

实现方法:通过MATLAB编程实现。建立MATLAB脚本文件。

首先通仿照三对角方程组的追赶法得到五对角矩阵的实现算法。

然后又MATLAB编程实现。

实验结果(MATLAB截图):

结果分析:

通过提供的计算数据得到最终的解向量x及中间过程产生的下三角矩阵L,单位上三角矩阵U,下三角矩阵Ly=b 的解向量y。

同时为了确保算法的正确性,我还通过MATLAB的左除运算检验得使用此算法的计算结果正确。

这里由于是用MATLAB,最终结果为分数形式,考虑到精确解一般比近似解更好,因此未化成七位小数形式。

算法实现分析:

首先计算L和U的元素。由于已知L和U的特定形式(及除了对角线和上下次对角线和上下第二条对角线外,其余为0。故通过矩阵的乘法即可得到LU中元素的计算公式。(具体算法见MATLAB程序)

算法优劣点:

1.解此题时看上去要用较多的存储单元,但实际上只需存储系数矩阵A的不为0的元素。

2.A分解为LU计算完成后,后续计算x和y的“追赶过程”运算量一般来说计算量比较小。

3.此题也可用之前的LU算法求解。但此处算法与一般的LU分解的解线性方程组的算法,相比计算量小了不少。

4.对于此处特定的对称的系数矩阵A,算法还可以进一步优化。

5.由于我在此算法中A.L U的各对角值均用一个列向量表示,一个缺点在于输出A,L,U时要重新组成矩阵形式。不过优点在于减少了存储单元。

6.另一缺点是,未能将结果封装成一个文件。

后附MATLAB代码:

c=[4,5,6,7,8,9,10];d=[1,2,3,4,5,6,0];b=[0,1,2,3,4,5,6];e=[1,2,3,4,5,0,0];a=[0,0,1,2,3,4,5];

r=[1 2 3 4 5 6 7];

w=zeros(7,1);x=zeros(7,1);y=zeros(7,1);m=zeros(7,1);n=zeros(7,1);h=zeros(7,1);

w(1)=c(1);m(1)=d(1)/c(1);n(1)=e(1)/c(1);

h(2)=b(2);w(2)=c(2)-h(2)*m(1);m(2)=(d(2)-b(2)*n(1))/w(2);n(2)=e(2)/w(2);

for k=3:5

h(k)=b(k)-a(k)*m(k-2);

w(k)=c(k)-a(k)*n(k-2)-h(k)*m(k-1);

m(k)=(d(k)-h(k)*n(k-1))/w(k);

n(k)=e(k)/w(k);

end

h(6)=b(6)-a(6)*m(4);

w(6)=c(6)-a(6)*n(4)-h(6)*m(5);

m(6)=(d(6)-h(6)*n(5))/w(6);

h(7)=b(7)-a(7)*m(5);

w(7)=c(7)-a(7)*n(5)-h(7)*m(6);

y(1)=r(1)/w(1);y(2)=(r(2)-h(2)*y(1))/w(2);

for k=3:7

y(k)=(r(k)-a(k)*y(k-2)-h(k)*y(k-1))/w(k);

end

x(7)=y(7);

x(6)=y(6)-x(7)*m(6);

for k=2:6

x(7-k)=y(7-k)-m(7-k)*x(8-k)-n(7-k)*x(9-k); end

A=[c(1),d(1),e(1), 0,0,0 0;

b(2),c(2),d(2),e(2),0,0,0;

a(3),b(3),c(3),d(3),e(3),0,0;

0,a(4),b(4),c(4),d(4),e(4),0;

0,0,a(5),b(5),c(5),d(5),e(5);

0,0,0,a(6),b(6),c(6),d(6);

0,0,0,0,a(7),b(7),c(7)]

B=r'

U=[1 m(1) n(1) 0 0 0 0;

0 1 m(2) n(2) 0 0 0;

0 0 1 m(3),n(3),0,0;

0 0 0 1 m(4),n(4),0;

0 0 0 0 1 m(5),n(5);

0 0 0 0 0 1 m(6);

0 0 0 0 0 0 1]

L=[w(1),0 0 0 0 0 0;

h(2) w(2) 0 0 0 0 0;

a(3),h(3),w(3),0 0 0 0;

0 a(4) h(4) w(4) 0 0 0;

0 0 a(5) h(5) w(5) 0 0;

0 0 0 a(6) h(6) w(6) 0;

0 0 0 0 a(7) h(7) w(7)]

y

x

相关文档
最新文档