数值分析上机实验——解线性方程组
更新时间:2024-06-07 16:13:01 阅读量: 综合文库 文档下载
- 数值计算上机实验报告推荐度:
- 相关推荐
实 验 报 告
课程名称 数值分析 解线性方程组 上机 20111131 张振 理学楼407 预习部分 实验过程 表现 实验学时 学号 指导教师 实验时间 实验报告 部分 日期 4 2011113130 沈艳 2013.12.9 总成绩 实验项目名称 实验类型 班级 姓名 实验室名称 实验成绩 教师签字
哈尔滨工程大学教务处 制
实验四 解线性方程组
一.解线性方程组的基本思想 1.直接三角分解法:
将系数矩阵A转变成等价两个矩阵L和U的乘积 ,其中L和U分别是下三角和上三角矩阵。当A的所有顺序主子式都不为0时,矩阵A可以分解为A=LU,且分解唯一。其中L是单位下三角矩阵,U是上三角矩阵。 2.平方根法:
如果矩阵A为n阶对称正定矩阵,则存在一个对角元素为正数的下三角实矩阵L,使得:A=LL^T。当限定L的对角元素为正时,这种分解是唯一的,称为平方根法(Cholesky)分解。 3.追赶法:
设系数矩阵为三对角矩阵
?b1??a2?0A?????0??0?c1b2a3?000?c2?b3??00?000?0000?an?an?1bn?10??0?0?? ??cn?1??bn??则方程组Ax=f称为三对角方程组。
设矩阵A非奇异,A有Crout分解A=LU,其中L为下三角矩阵,U为单位上三角矩阵,记
?b1???2?0 L?????0??0?000?00??000??2?3?00?3???n?1??n0??0?0??,??0???n???1?10??01?2?001U???????000??000??????0??00?00??
???0?n?1???1??0可先依次求出L,U中的元素后,令Ux=y,先求解下三角方程组Ly=f得出y,再求解上三
角方程组Ux=y。
4.雅克比迭代法:
首先将方程组中的系数矩阵A分解成三部分,即:A = L+D+U,如图1所示,其中D为对角阵,L为下三角矩阵,U为上三角矩阵。
之后确定迭代格式,X(k?1) = BX(k) +f ,如图2所示,其中B称为迭代矩阵,雅克比迭代法中一般记为J。(k = 0,1,......)再选取初始迭代向量X(0),开始逐次迭代。
5.超松弛迭代法(SOR)
它是在GS法基础上为提高收敛速度,采用加权平均而得到的新算法。 选取分裂矩阵M为带参数的下三角矩阵
M=
1(D-?L), ?其中?>0 为可选择的松弛因子,一般当1<2时称为超松弛。 二.实验题目及实验目的
1.(第五章习题8)用直接三角分解(杜利特尔(Doolittle)分解)求线性方程组
111x1 +x2 +x3= 9, 456111x1 +x2 +x3= 8,
4531x1 + x2 +2x3= 8 2的解。
2.(第五章习题9)用追赶法解三对角方程组Ax=b,其中
?2?1000??1???????12?100??0?A=?0?12?10?,b=?0?. ?????00?12?1??0??000?12??0?????3.(第五章习题10)用改进的平方根法解线性方程组
?2?11??x1??4????????1?23x = ???2??5? ?1???6?31????x3???4.(第六章习题7)用SOR方法解线性方程组(分别取松弛因子ω=1.03,ω=1,
ω=1.1)
4x1 - x2 = 1, -x1 +4x2- x3= 4,
-x2 +4x3= -3.
11,1,-)T.要求当x*?x(k)?<5×10?6时迭代终止,并且对每22一个ω值确定迭代次数.
5.(第六章习题8)用SOR方法解线性方程组(取ω=0.9)
精确解x*=(
5x1 -2x2+ x3= -12, -x1 +4x2- 2x3= 20, 2x1 -3x2+10x3= 3.
要求当x(k?1)?x(k)?<10?4时迭代终止.
6.(第六章习题9)设有线性方程组Ax=b,其中A为对称正定阵,迭代公式
x(k?1)?x(k)+ω(b- Ax(k)),k=0,1,2…,
试证明当0<ω<
2时上述迭代法收敛(其中0??(A)??). ?7.(第六章计算实习题1)给出线性方程组Hnx=b,其中系数矩阵Hn为希尔伯特矩阵:
Hnx=(hij)?Rn?n, hij=
1,i,j=1,2,…,n.
i?j?1假设x*=(1,1,…,1)T?Rn,b= Hnx*.若取n=6,8,10,分别雅克比迭代法及SOR迭代(ω=1,1.25,1.5)求解.比较计算结果. 三.实验手段:
指操作环境和平台:win7系统下MATLAB R2009a
程序语言:一种类似C语言的程序语言,但比C语言要宽松得多,非常方便。 四.程序
1.
①直接三角分解(文件ZJsanjiao.m) function x=ZJsanjiao(A,b) [m,n]=size(A); [l u]=lu(A); s=inv(l)*[A,b]; x=ones(m,1);
for i=m:-1:1 h=s(i,m+1); for j=m:-1:1; if j~=i
h=h-x(j)*s(i,j); end end
x(i)=h/s(i,i); end
②控制台输入代码:
>> A=[1/4,1/5,1/6;1/3,1/4,1/5;1/2,1,2]; >> b=[9;8;8];
>> x=ZJsanjiao(A,b) 2.
①追赶法(文件ZG_SDJ.m) function x=ZG_SDJ(a,b,c,f) %aê????????a??
%bê???????é?·?μ??a??£???êy±èaéùò??? %cê?????????·?μ??a??£???êy±èaéùò??? %fê?3£êy??b
N=length(a); b=[b,0]; c=[0,c];
a1=zeros(N,1); b1=zeros(N,1); y=zeros(N,1); x=zeros(N,1);
a1(1)=a(1);
b1(1)=b(1)/a1(1); y(1)=f(1)/a1(1); for j1=2:N
a1(j1)=a(j1)-c(j1)*b1(j1-1); b1(j1)=b(j1)/a1(j1);
temp1=f(j1)-c(j1)*y(j1-1); y(j1)=temp1/a1(j1); end j1=N;
x(j1)=y(j1); for j1=N-1:-1:1
x(j1)=y(j1)-b1(j1)*x(j1+1);
end
②控制台输入代码: >> a=[2 2 2 2 2]; >> b=[-1 -1 -1 -1]; >> c=[-1 -1 -1 -1]; >> f=[1;0;0;0;0]; >> x=ZG_SDJ(a,b,c,f) 3.
①改进的平方根法(文件GJPFG.m) function GJPFG(A,b) n=length(b);% n?aáD??£? % LDL'·??a£? d(1)=A(1,1); for i=2:n
for j=1:i-1 sum1=0; for k=1:j-1
sum1=sum1+t(i,k)*l(j,k); end
t(i,j)=A(i,j)-sum1; l(i,j)=t(i,j)/d(j); end sum2=0; for k=1:i-1
sum2=sum2+t(i,k)*l(i,k); end
d(i)=A(i,i)-sum2; end for i=1:n l(i,i)=1; end
disp('μ¥????èy?????óL?a£o'); %?a3?μ¥????èy?????óL£? l
disp('???????óD?a£o'); %?a3????????óD£? d
%óéLDL'x=b?ó?ax£? %óéLy=b£??óy£?
%óéL'x=inv£¨D£?y£??ó?ax£? y(1)=b(1); for i=2:n sum3=0; for k=1:i-1
sum3=sum3+l(i,k)*y(k);
end
y(i)=b(i)-sum3; end
x(n)=y(n)/d(n); for i=n-1:-1:1 sum4=0; for k=i+1:n
sum4=sum4+l(k,i)*x(k); end
x(i)=(y(i)/d(i))-sum4; end
disp('óéLy=b?ó?ayμ?£o'); y
disp('Ax=bμ??ax?a£o'); x
②控制台输入代码:
>> A=[2 -1 1;-1 -2 3;1 3 1]; >> b=[4;5;6]; >> GJPFG(A,b) 4.
①SOR方法(文件SOR_1.m) function SOR_1(A,b,x0,x_a,w) %x_a?a??è·?a
if(w<=0 || w>=2)
error('2?êy·??§′í?ó'); return; end
eps=5.0e-6;
D=diag(diag(A)); %?óAμ????????ó L=-tril(A,-1); %?óAμ???èy???ó U=-triu(A,1); %?óAμ?é?èy???ó B=inv(D-L*w)*((1-w)*D+w*U); f=w*inv((D-L*w))*b; x=B*x0+f;
n=1; %μü′ú′?êy
while norm(x_a-x)>=eps x0=x; x =B*x0+f; n=n+1; if(n>=200)
disp('Warning: μü′ú′?êyì??à£??é?ü2?ê?á2£?');
return; end end
disp('Ax=bμ??a?a£o'); x
disp('μü′ú′?êy?a£o'); n
②控制台输入代码:
>> A=[4 -1 0;-1 4 -1;0 -1 4]; >> b=[1;4;-3]; >> x0=[0;0;0];
>> x_a=[0.5;1;-0.5]; >> w=1.03;
>> SOR_1(A,b,x0,x_a,w) >> w=1;
>> SOR_1(A,b,x0,x_a,w) >> w=1.1;
>> SOR_1(A,b,x0,x_a,w) 5.
①SOR方法(文件SOR_2.m) function SOR_2(A,b,x0,w,eps) if(w<=0 || w>=2)
error('2?êy·??§′í?ó'); return; end
D=diag(diag(A)); %?óAμ????????ó L=-tril(A,-1); %?óAμ???èy???ó U=-triu(A,1); %?óAμ?é?èy???ó B=inv(D-L*w)*((1-w)*D+w*U); f=w*inv((D-L*w))*b; x=B*x0+f;
n=1; %μü′ú′?êy
while norm(x-x0)>=eps x0=x; x =B*x0+f; n=n+1; if(n>=200)
disp('Warning: μü′ú′?êyì??à£??é?ü2?ê?á2£?'); return; end end
disp('Ax=bμ??a?a£o'); x
disp('μü′ú′?êy?a£o'); n
②控制台输入代码:
>> A=[5 2 1;-1 4 2;2 -3 10]; >> b=[-12;20;3]; >> x0=[0;0;0]; >> w=0.9;
>> eps=10e-4;
>> SOR_2(A,b,x0,w,eps)
6.此题为证明题,无程序代码。 7.
① 雅克比迭代法(文件Jocabi.m) function x=Jocabi(n) A=hilb(n);
x_a=ones(n,1); b=A*x_a; eps=1e-4;
n=length(b); N=50;
x=zeros(n,1); y=zeros(n,1);
for k=1:N sum=0; for i=1:n
y(i)=(b(i)-A(i,1:n)*x(1:n)+A(i,i)*x(i))/A(i,i); end
for i=1:n
sum=sum+(y(i)-x(i))^2; end
if sqrt(sum) for i=1:n x(i)=y(i); end end end ② SOR方法(文件SOR_3.m) function SOR_3(n,w) %x_a?a??è·?a if(w<=0 || w>=2) error('2?êy·??§′í?ó'); return; end x0=zeros(n,1); A=hilb(n); x_a=ones(n,1); b=A*x_a; eps=1e-4; D=diag(diag(A)); %?óAμ????????ó L=-tril(A,-1); %?óAμ???èy???ó U=-triu(A,1); %?óAμ?é?èy???ó B=inv(D-L*w)*((1-w)*D+w*U); f=w*inv((D-L*w))*b; x=B*x0+f; n=1; %μü′ú′?êy while norm(x-x0)>=eps x0=x; x =B*x0+f; n=n+1; if(n>=2000) disp('Warning: μü′ú′?êyì??à£??é?ü2?ê?á2£?'); return; end end disp('Hx=bμ??a?a£o'); x disp('μü′ú′?êy?a£o'); n ③控制台输入代码: >> x=Jocabi(6) >> x=Jocabi(8) >> x=Jocabi(10) >> SOR_3(6,1) >> SOR_3(6,1.25) >> SOR_3(6,1.5) >> SOR_3(8,1) >> SOR_3(8,1.25) >> SOR_3(8,1.5) >> SOR_3(10,1) >> SOR_3(10,1.25) >> SOR_3(10,1.5) 五.实验结果比较与分析 1. 2. 3. 4. 5. 9.证: x(k?1)?(I??A)x(k)+?b,(k=0,1,2…) 故迭代矩阵B=I-?A,其特征值?=1-??(A). 由|?|<1,|1-??(A)|<1得 0< 2?(A) 故当0< 2?时,更有0<2?(A),从而有|?|<1,7. ①雅克比迭代法: ?(B)<1,迭代格式收敛。 可以看到用雅克比迭代法求希尔伯特阵方程组的解是病态的,这是因为希尔伯特阵的谱半径大于1,并不收敛。 ②SOR迭代法: n=6 ,?<10?4时, 松弛因子? 迭代次数 近似解 1 620 (1.0005 ,1.0045,0.9626,1.0441,1.0285,0.9583) 1.25 588 ( 0.9997,1.0134,0.9362,1.0706,1.0230,0.9555) 1.5 539 ( 0.9991,1.0211,0.9082,1.1146,0.9899,0.9656) n=8 ,?<10?4时 松弛因子? 迭代次数 近似解 1 426 (0.9970,1.0417,0.8967,1.0155,1.0654,1.0505,0.9991, 0.9309) 1.25 1157 (0.9971,1.0353,0.9174,1.0167,1.0408,1.0378,1.0022,0.9508) 1.5 1701 (0.9980,1.0232,0.9484,1.0045,1.0260,1.0324,1.0037,0.9623) n=10 ,?<10?4时 松弛因子? 迭代次数 近似解 1 1216 (0.9977,1.0203,0.9797,0.9654,1.0010,1.0300,1.0367,1.0223,0.9924,0.9525) 1.25 1379 (0.9985,1.0103,1.0049,0.9503,1.0001,1.0257,1.0347,1.0221,0.9946,0.9570) 1.5 1520 (0.9993,1.0003,1.0354,0.9171,1.0187,1.0116,1.0405,1.0185,0.9982,0.9588) 六.学习心得 直接法可以求得线性方程组的精确解,但实际计算中会有误差,一般求得近似解。适用于解低阶稠密矩阵方程组及某些大型稀疏矩阵方程组。 迭代法是逐步逼近求方程组的近似解,但存在收敛性及收敛速度问题,适用于解大型稀疏矩阵方程组。
正在阅读:
数值分析上机实验——解线性方程组06-07
卡诺循环的原理05-12
高二语文期中试卷江苏省东海高级中学2009届高二上学期期中考试05-19
(精)2022年人事专员季度工作总结04-19
法人身份证明02-14
高二历史破解李约瑟难题02-28
关于学生顶岗自我鉴定简短范本08-17
军礼,初三作文02-06
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 方程组
- 上机
- 线性
- 数值
- 实验
- 分析
- 学校中考备考工作汇报总结3篇
- (48+80+48)m连续梁施工方案
- 王氏宗祠
- 呼和浩特市2018年中考英语试题含答案
- 大英二考试复习(杨庆芳)
- 《广东司法警官职业学院教师岗位首次聘用实施方案》(讨论稿)
- VB计算机考试练习
- 浙江省建设领域推广应用技术公告 - 图文
- 人教版三年级上册体育教案
- 人教版-六年级品德与社会下册全册教案
- 毕业设计--智能化卫生间设计 - 图文
- 关于印发《公益事业捐赠票据使用管理暂行办法》的通知
- 《行政管理学》夏书章(第四版)经典笔记
- 在BootWare菜单中通过TFTP升级应用程序
- 彭俊毕业设计 2改
- 《汽车发动机机械系统检修》考卷A
- 浅谈我国第三方支付的风险及监管
- 塘承高速公路二期工程第一标施工组织设计2(1) 2
- 造价咨询实施方案(道路工程)
- 7331高一数学下册第二次月考试卷