首页 > 领导讲话 > 纪检讲话 / 正文
基于matlab平台的三种迭代法求解矩阵方程
2020-11-16 17:06:57 ℃
数值分析第二次作业
学院:电子工程学院
基于matlab平台的三种迭代法求解矩阵方程组 求解系数矩阵由16阶Hilbert方程组构成的线性方程组的解,其中右端项为[2877/851,3491/1431,816/409,2035/1187,2155/1423,538/395,1587/1279,573/502,947/895,1669/1691,1589/1717,414/475,337/409,905/1158,1272/1711,173/244]. 要求:1)Gauss_Sedel迭代法;
2)最速下降法;
3)共轭梯度法;
4)将结果进行分析对比。
解:根据题目要求,编写了对应算法的matlab程序,求解结果如下:(求解精度为10e-4,最大迭代次数1000) 1、 方程的解:如下图1所示
图1 三种方法求解的结果对比
图2 Gause_Sedel算法收敛特性
图3 最速下降法收敛特性
图3 共轭梯度法收敛特性
从图中可以看到,在相同的最大迭代次数和预设求解精度条件下,共轭梯度算法仅需要4次迭代便可求出方程组的解,耗时0.000454秒,而且求出解的精度最高;Gauss_Sedel方法需要465次迭代,耗时0.006779秒,求解精度最差;最速下降法需要398次迭代,耗时0.007595秒,求解精度与共轭梯度算法差不多,因此两者求出的解也几乎相同。从中可以得出结论,共轭梯度算法无论从求解精度还是求解速度上都优于其他两种,最速下降法在求解精度上几乎与共轭梯度算法持平,但求解速度更慢。Gauss_Sedel方法在求解精度和速度两方面都最差。
具体的解为: Gauss_Sedel迭代法:
(共需465次迭代,求解精度达到9.97e-5) X=[0.995328360833192 1.01431732497804 1.05286123930011 0.934006974137998 0.931493373808838 0.966508138403066 1.00661848511341 1.03799789809258 1.05180690303654 1.06215849948572 1.04857676431223 1.02856199041113 1.01999170162638 0.971831831519515 0.952526166634813 0.916996019179182]. 最速下降法:
(共需398次迭代,求解精度达到9.94e-5) X=[0.998835379744322 1.01507463472900 0.982589093720185
0.980191460759243 0.991245169713628 1.00378022225329 1.01350884374478 1.01928337905816 1.02085909665194 1.01930314197028 1.01444777381651 1.00704058989297 0.998384452250809 0.987399404644377 0.975767814970912 0.963209150871750]. 共轭梯度法:
(共需4次迭代,求解精度达到3.98e-5) X=[ 0.996472751179456 1.02707840189049 0.977623373409853
0.973206695321590 0.986133032967607 1.00128902564234 1.01322158496914 1.02047386502293 1.02300905060565 1.02163015083975 1.01678089454399 1.00920310863874 0.999772406055155 0.988443827498859 0.976094192496949 0.962844741655005].
Matlab程序 主程序: clc;clear; %%
本程序用于计算第二次数值分析作业,关于希尔伯特矩阵方程的解,用三种方法,分析并比较,也可推广至任意n维的矩阵方程 %% A=hilb(16);
%生成希尔伯特系数矩阵 b=[2877/851;3491/1431;816/409;2035/1187;2155/1423;538/395;1587/1279;573/502;947/895;1669/1691;1589/1717;414/475;337/409;905/1158;1272/1711;173/244]; %右端向量 M=1000;
%最大迭代次数 err=1.0e-4;
%求解精度 [x,n,xx,cc,jingdu]=yakebi_diedai(A,b,err,M);
% 雅克比算法求解 tic; [x1,n1,xx1,cc1,jingdu1]=gauss_seidel(A,b,err,M);
% gauss_seidel算法求解 toc; tic; [x2,n2,xx2,jingdu2]=zuisuxiajiangfa(A,b,err,M);
% 最速下降法求解 toc; tic; [x3,flag,jingdu3,n3]=bicg(A,b,err);
% matlab内置双共轭梯度算法求解 toc; tic; [x4,xx4,n4,jingdu4]=con_grad(A,b,err,M); % 教材共轭梯度算法求解 toc;
%%
计算相应结果,用于作图
%% num=[1:16]'; jie=[num,x1,x2,x4];
% 三者的解对比
% 三者的收敛情况对比 num1=[1:n1]'; fit1=[num1,jingdu1'];
num2=[1:n2]'; fit2=[num2,jingdu2']; num4=[1:n4]'; fit4=[num4,jingdu4'];
子函数1(Gause_Sedel算法): function [x,n,xx,cc,jingdu] = gauss_seidel(A,b,err,M) %
利用迭代方法求解矩阵方程
这里是高斯赛尔得迭代方法 %
A 为系数矩阵 b 为右端向量
err为精度大小
返回求解所得向量x及迭代次数
%
M 为最大迭代次数
cc 迭代矩阵普半径
jingdu 求解过程的精度 n 所需迭代次数
xx 存储求解过程中每次迭代产生的解 for ii=1:length(b)
if A(ii,ii)==0
x='error';
break;
end end
D=diag(diag(A)); L=-tril(A,-1); U=-triu(A,1); B=(D-L)\U; cc=vrho(B); %迭代矩阵普半径 FG=(D-L)\b;
x0=zeros(length(b),1); x=B*x0+FG; k=0; xx(:,1)=x; while norm(A*x-b)>err
x0=x;
x=B*x0+FG;
k=k+1;
xx(:,k+1)=x;
if k>=M
disp('迭代次数太多可能不收敛!');
break;
end
n=k;
jingdu(k)=norm(A*x-b); end end
子函数2(最速下降算法): function [x,n,xx,jingdu]=zuisuxiajiangfa(A,b,eps,M) %
利用迭代方法求解矩阵方程
这里是最速下降迭代方法 %
A 为系数矩阵 b 为右端向量
err为精度大小
返回求解所得向量x及迭代次数
%
%
M 为最大迭代次数
jingdu 求解过程的精度
n 所需迭代次数
xx 存储求解过程中每次迭代产生的解
x0=zeros(length(b),1); r0=b-A*x0; t0=r0'*r0/(r0'*A*r0); x=x0+t0*r0; r=b-A*x; xx(:,1)=x; k=0; while
norm(r)>eps r=r;
x=x; t=r'*r/(r'*A*r); x=x+t*r; r=b-A*x; k=k+1; xx(:,k+1)=x; if k>=M
disp('迭代次数太多可能不收敛!');
break;
end
n=k; jingdu(k)=norm(r); end end
子函31(共轭梯度法): function [x,xx,n,jingdu]=con_grad(A,b,eps,M) %
利用迭代方法求解矩阵方程
这里是共轭梯度迭代方法 %
A 为系数矩阵 b 为右端向量
err为精度大小
返回求解所得向量x及迭代次数
%
M 为最大迭代次数
jingdu 求解过程的精度 n 所需迭代次数
xx 存储求解过程中每次迭代产生的解
x0=zeros(length(b),1); r0=b-A*x0; p0=r0; % t0=r0'*r0/(r0'*A*r0); % x=x0+t0*r0; % r=b-A*x; % xx(:,1)=x; k=0; x=x0; r=r0; p=p0; while
norm(r)>eps x=x; r=r; p=p; afa=r'*r/(p'*A*p); x1=x+afa*p; r1=r-afa*A*p; beta=r1'*r1/(r'*r); p1=r1+beta*p; x=x1; r=r1; p=p1; k=k+1; xx(:,k)=x; if k>=M
disp('迭代次数太多可能不收敛!');
break; end
n=k; jingdu(k)=norm(r); end
end
- 上一篇:班级家委会工作总结(5篇)
- 下一篇:2020年幼儿园阳光体育活动总结
猜你喜欢
- 2024-01-17 在纪检干部教育整顿交流研讨会上发言(2024年)
- 2024-01-09 2024年度某国企纪检干部在主题教育暨教育整顿学习研讨会上发言(全文)
- 2024-01-09 纪检干部在全市思想政治工作座谈会上交流发言(精选文档)
- 2024-01-09 XX国企纪检干部在主题教育暨教育整顿学习研讨会上发言(公司剖析问题)(完整)
- 2024-01-06 2024年公司纪检工作总结及下一步工作计划
- 2024-01-03 2024年(合集)纪检员个人工作总结范本
- 2024-01-02 2024年某国企纪检工作总结及2024年工作计划(党风廉政建设和反腐败)
- 2023-12-31 2024年公司纪检工作工作完成情况及2024年工作计划【优秀范文】
- 2023-12-30 纪检干部述职述廉工作报告
- 2023-12-29 2024纪检干部演讲稿:履职尽责担使命热血青春铸忠诚
- 搜索
-
- 【年轻人与老年人】 年轻人能玩老年妇 01-18
- 2020年1月国开(中央电大)学前教育专 09-22
- 纪检委员一对一谈心谈话记录(完整) 12-22
- 社区活动室管理制度 06-05
- 学习《长松组织系统》的心得体会 04-18
- 党支部落实全面从严治党主体责任报告 07-09
- 2021国家开放大学电大专科《学前儿童艺 11-07
- 关于打击电信诈骗犯罪活动工作总结 06-24
- 纪检委员一对一谈心谈话记录(全文完整 11-23
- [班主任年终工作总结]最精彩的班主任发 12-31
- 11-25国庆70周年庆典晚会 庆典晚会串词
- 11-25办公室礼仪的十大原则 浅谈办公室的电话礼仪
- 01-17用心灵轻轻地歌唱_心灵的歌唱
- 01-17也许你不是我一生的唯一|也许不是我
- 01-17爱了,请珍惜;不爱,趁早放手|爱就珍惜不爱就放手
- 01-17岁月带走的是记忆,但回忆会越来越清晰|有趣又有深意的句子
- 01-17曾经的美好只是曾经,我只想珍惜身边的人|我只想珍惜你
- 01-18从容不惊 [学会笑眼去看世界,不惊不乍,淡定从容]
- 02-03当代大学生学习态度调查报告
- 02-03常用护患英语会话
- 标签列表