线性方程组的迭代解法及收敛分析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Keywords:MATLAB,Mathematical model,Iterative method,ConvergenceSystem of linear equations
1
在实际生活中,存在着大量求解线性方程组的问题。这些方程组具有数据量大,系数矩阵稀疏,在一定精度保证下,只需要求解近似解等特点。线性方程组的迭代解法特别适合于这类方程组的求解,它具有程序设计简单,需要计算机的贮存单元少等特点,但也有收敛性与收敛速度问题。因此,研究线性方程组的迭代解法及收敛分析对于解决实际问题具有非常重要的作用。
2.2233
2.6181
1.8711
0.6508
0.6301
5
1.1997
2.2153
2.5919
1.9590
0.7699
0.5545
6
1.1829
2.1534
2.7302
1.9312
0.7704
0.4327
7
1.1405
2.1421
2.7323
1.9719
0.8352
0.3735
8
1.1252
2.1065
2.9793
1.9966
0.9851
0.03070
由表4.1可知:随着迭代次数的增多,x的各个分量越来越接近真实解,并且误差也在逐渐减小,可以知道,此时雅可比迭代法收敛。
由高斯塞德尔迭代法与雅可比迭代法的关系,易得高斯塞德尔的迭代公式:
MATLAB代码为:
function [x,a,count,e]=gsshiyan1(A,b,jd,x)
河南科技学院
2015届本科毕业论文
论文题目:线性方程组的三种迭代解法
及收敛分析
学生姓名:韦成州
所在院系:数学科学学院
所学专业:信息与计算科学
导师姓名:李巧萍
完成时间:2015年5月20日
线性方程组的三种迭代解法及收敛分析
摘 要
对于线性方程组的迭代解法,本文重点讨论雅可比迭代法,高斯塞德尔迭代法和超松弛迭代法三种迭代解法。主要讨论内容有:首先,写出三种迭代解法的基本思想,基本算法及收敛条件;其次,针对这三种迭代解法进行举例分析,通过MATLAB程序,求得三种迭代法各自的迭代次数、每次迭代的结果及误差;最后,在满足设定精度的情况下,对每个迭代方法所用的迭代次数进行通过分析比较,得出了在选择适当的松弛因子后,三种迭代法的收敛速度:超松弛迭代法>高斯塞德尔迭代法>雅可比迭代法,对于方程组 ,迭代法的收敛性只与系数矩阵 有关,而与右端项 无关。同时,本文又对算法设计,收敛速度的判定等问题提出了改进意见。
for i=1:5
x(i)=-1/A(i,i).*(A(i,1:i-1)*x(1:i-1)+A(i,i+1:5)*x(i+1:5)-b(i));
a(j)=x(i); %把每次迭代结果(x的五个分量)保存
1.近似解:x=[1.0000 -2.0000 3.0000 -2.0000 1.0000]
2.迭代次数count=75
3.每次迭代结果及误差见表4.1
表4.1雅可比迭代法中每次迭代结果及误差
Tab4.1 Theeach iteration results and errors of jacobi iteration method
2.若系数矩阵 为对称正定矩阵,且对角元 则有雅可比迭代法收敛的充要条件是 及 都是正定矩阵。
3.若方程组 的系数矩阵 是主对角线按行(或按列)严格占优矩阵,即
则有雅可比迭代法收敛。
3.2
3.2.1
1基本思想:
高斯塞德尔迭代法是在雅可比迭代法的基础上得到的迭代算法,主要不同是在计算 时,前面的 个值 已经算出,用这些新值代替上次迭代的旧值 ,用矩阵表示为
er=sqrt(sum((x-xx).*(x-xx)));%求误差
while er>=jd %迭代求解
x=M*x+g;
for i=1:5
a(j)=x(i);%把每次迭代结果(x的五个分量)保存
j=j+1;
end
er=sqrt(sum((x-xx).*(x-xx)));
e(k)=er;%把每次迭代的误差向量保存
次数
x1(k)
x2(k)
x3(k)
x4(k)
x5(k)
误差
er
1
1.20000
3.0000
2.0000
1.4167
0.8000
1.5557
2
1.2050
2.3296
2.4071
1wenku.baidu.com6500
0.4522
0.9616
3
1.2656
2.3490
2.3531
1.8937
0.7051
0.8421
4
1.2504
3若方程组 的系数矩阵 是主对角线按行(或按列)严格占优矩阵,即
则有高斯塞德尔迭代法收敛。
3.3
3.3.1
1基本思想:
超松弛迭代法一种加速收敛的新的迭代算法,与高斯塞德尔迭代法相比,它明显地提高了收敛的速度,具体来说就是采用加权平均的算法,在计算 时,用高塞德尔算法得到的 与前一步迭代中得到的 加权平均,即 ,其矩阵形式为:
关键词:MATLAB,数学模型,迭代解法,收敛,线性方程组
Three kinds of solutions of systems of linear equations iterative method and convergence analysis
Abstract
For iterative solution of linear equations, this article focuses on the Jacobi iteration method, gauss seidel iteration method and overrelaxation iteration method of three kinds of iterative method.Main discussion: first of all, write down three iterative method, the basic idea of the basic algorithm and convergence condition;Secondly, in view of the three kinds of iterative solution methods for analysis, through the MATLAB program, get three iterative method respective number of iterations, the results of each iteration and error;Finally, in the case of meet the setting precision, for each iteration method to carry through analysis and comparison, the number of iterations used in selecting the appropriate relaxation factor is obtained, the convergence rate of the three types of iterative method: overrelaxation iteration method, gauss seidel iteration method, Jacobi iteration method for the system of equations, the convergence of iterative method is only related to the coefficient matrix, and has nothing to do with the right items.And at the same time, this paper, the algorithm design, and the convergence rate of decision problems, such as improvement opinions are put forward.
其中 任选,由上式所表示的迭代法就是雅可比迭代法,其中
就是该迭代法的迭代矩阵,其分量式为:
2基本算法:
步一.取初始向量 ,精度 ;
步二.计算初始误差,并进入 循环,运算迭代公式
步三.如果误差 小于精度,则输出 ,否则,转步二
3.1.2
1.雅可比迭代法收敛的充要条件是该迭代法的迭代矩阵的谱半径 小于1。
其分量形式为:
其中w为松弛因子
2基本算法:
步一.输入初始向量 ;
步二.重复执行
1)用迭代格式:塞德尔迭代 ,加权平均:
2)计算误差
3)直到误差小于所给的精度
步三.输出迭代次数
3.3.2
1超松弛迭代法收敛的充分必要条件是该迭代法的迭代矩阵的谱半径 小于1
2超松弛迭代法收敛的必要条件是
3设系数矩阵A对称正定,且 ,则解线性方程组 的超松弛迭代法收敛。
两边左乘 ,整理得
于是可得迭代公式为:
其中迭代矩阵 为: ,其分量式为:
2基本算法:
步一.取初始向量 ;精度 ;
步二.计算初始误差 ,并进入 循环,运算迭代公式
步三.如果误差 小于精度,则输出 ,否则,转步二
3.2.2
1高斯塞德尔迭代法收敛的充要条件是该迭代法的迭代矩阵的谱半径 小于1
2若系数矩阵 为对称正定矩阵,且对角元 则有高斯塞德尔迭代法收敛的充要条件是 是正定矩阵。
4
4.1
先将 转化为等价方程组:
由此建立等价的迭代格式:
MATLAB代码为:
function [x,a,count,e]=jacobi(A,b,jd,x)
%A表示系数矩阵,b表示常数项矩阵,jd表示精度(本程序选择精度为1e-6),x表示任选的初始向量(本程序选零向量)
xx=inv(A)*b;%求出真实解
er=sqrt(abs(sum(x-xx)));%求出误差(二范数)
D=diag([10 9 7 12 15]);%求对角矩阵D
dd=inv(D);%求对角矩阵的逆矩阵
L=tril(A,-1);%求下三角矩阵
U=triu(A,1);%求上三角矩阵
M=-dd*(L+U);%求迭代矩阵
g=dd*b;j=1;count=0;k=1;
2.9561
1.9924
0.9678
0.0657
17
1.0218
2.0203
2.9627
1.9944
0.9739
0.0547
18
1.0182
2.0165
2.9699
1.9949
0.9781
0.0449
19
1.0149
2.0138
2.9746
1.9961
0.9821
0.0373
20
1.0124
2.0113
2
将方程组 写成等价的形式 ,定一个初值向量 ,可以得到迭代公式:
这样构造一个向量序列 ,使其极限向量 是方程组的精确解。
3
3.1
3.1.1
1基本思想:
如果方程组 的系数矩阵 ,满足条件 。把 分解成 。其中 , 为主对角线为零的下三角矩阵, 为主对角线为零的上三角矩阵,于是方程组 等价于
整理得:
由此可得迭代公式:
2.9077
1.9828
0.9303
0.1400
13
1.0463
2.0437
2.9191
1.9887
0.9448
0.1174
14
1.0392
2.0350
2.9363
1.9886
0.9527
0.0959
15
1.0318
2.0297
2.9451
1.9920
0.9620
0.0801
16
1.0267
2.0241
%A表示系数矩阵,b表示常数项矩阵,jd表示精度(本程序选择精度为1e-6),x表示任选的初始向量(本程序选零向量)
xx=inv(A)*b; %求出真实解
er=sqrt(sum((x-xx).*(x-xx)));%求出误差(二范数)
count=0;k=1;j=1;
while er>=jd %迭代求解
k=k+1;
count=count+1;%记录迭代次数
end
在命令窗口中输入:
A=[10 1 2 3 4;1 9 -1 2 -3;2 -1 7 3 -5;3 2 3 12 -1;4 -3 -5 -1 15];
b=[12 -27 14 -17 12]';
jd=1e-6; x=[0 0 0 0 0]'; [x,a,count,e]=jacobi(A,b,jd,x),可以得到:
2.8098
1.9583
0.8468
0.2974
9
1.0975
2.0954
2.8217
1.9788
0.8847
0.2533
10
1.0850
2.0738
2.8671
1.9735
0.8969
0.2041
11
1.0673
2.0645
2.8802
1.9843
0.9200
0.1723
12
1.0577
2.0509
相关文档
最新文档