实验八、解线性方程组的迭代法

合集下载

迭代法解线性方程组数值分析实验报告

迭代法解线性方程组数值分析实验报告

迭代法解线性方程组数值分析实验报告一、实验目的本次实验旨在深入研究和掌握迭代法求解线性方程组的基本原理和方法,并通过数值实验分析其性能和特点。

具体目标包括:1、理解迭代法的基本思想和迭代公式的推导过程。

2、掌握雅克比(Jacobi)迭代法、高斯赛德尔(GaussSeidel)迭代法和超松弛(SOR)迭代法的算法实现。

3、通过实验比较不同迭代法在求解不同类型线性方程组时的收敛速度和精度。

4、分析迭代法的收敛性条件和影响收敛速度的因素。

二、实验原理1、线性方程组的一般形式对于线性方程组$Ax = b$,其中$A$ 是$n×n$ 的系数矩阵,$x$ 是$n$ 维未知向量,$b$ 是$n$ 维常向量。

2、迭代法的基本思想迭代法是从一个初始向量$x^{(0)}$出发,按照某种迭代公式逐步生成近似解序列$\{x^{(k)}\}$,当迭代次数$k$ 足够大时,$x^{(k)}$逼近方程组的精确解。

3、雅克比迭代法将系数矩阵$A$ 分解为$A = D L U$,其中$D$ 是对角矩阵,$L$ 和$U$ 分别是下三角矩阵和上三角矩阵。

雅克比迭代公式为:$x^{(k+1)}= D^{-1}(b +(L + U)x^{(k)})$。

4、高斯赛德尔迭代法在雅克比迭代法的基础上,每次计算新的分量时立即使用刚得到的最新值,迭代公式为:$x_i^{(k+1)}=(b_i \sum_{j=1}^{i-1}a_{ij}x_j^{(k+1)}\sum_{j=i+1}^{n}a_{ij}x_j^{(k)})/a_{ii}$。

5、超松弛迭代法在高斯赛德尔迭代法的基础上引入松弛因子$\omega$,迭代公式为:$x_i^{(k+1)}= x_i^{(k)}+\omega((b_i \sum_{j=1}^{i-1}a_{ij}x_j^{(k+1)}\sum_{j=i}^{n}a_{ij}x_j^{(k)})/ a_{ii} x_i^{(k)})$。

解线性方程组的迭代法数值计算上机实习报告

解线性方程组的迭代法数值计算上机实习报告

解线性方程组的迭代法数值计算上机实习报告一.综述:考虑用迭代法求解线性方程组,取真解为,初始向量取为零,以范数为度量工具,取误差指标为.其中。

分别完成下面各小题:第六题:编制程序实现Jacobi迭代方法和Gauss-Seidel 方法。

对应不同的停机标准(例如残量,相邻误差,后验误差停机标准),比较迭代次数以及算法停止时的真实误差。

其中残量准则:、相邻误差准则:后验误差停机准则:解:为了结果的可靠性,这里我分别对矩阵阶数为400、2500、10000进行试验,得到对应不同的方法、取不同的停机标准,迭代次数和真实误差的数据如下:分析上面数据可知,对应不同的停机标准,GS方法的迭代次数都近似为J方法的一半,这与理论分析一致。

而且从迭代次数可以看出,在这个例子中,作为停机标准,最强的依次为后验误差,再到残量,再到相邻误差。

第七题:编写程序实现SOR 迭代方法。

以真实误差作为停机标准,数值观测SOR 迭代方法中松弛因子对迭代次数的影响,找到最佳迭代因子的取值。

解:本题中考虑n=50,即对2500阶的矩阵A。

由于我们已经知道要使SOR方法收敛,松弛因子需要位于。

下面来求SOR方法中对应的最佳松弛因子。

应用筛选法的思想,第一次我们取松弛因子,间距为0.05,得到的对应的图像如下,从图中可以看出迭代次数随着的增大,先减小后变大,这与理论相符。

同时可以看出最佳松弛因子.第二次将区间细分为10份,即取,可得下面第二幅图像,从图像中可以看出最佳松弛因子第八题:对于J 方法,GS方法和(带有最佳松弛因子的)SOR 方法,分别绘制误差下降曲线以及残量的下降曲线(采用对数坐标系),绘制(按真实误差)迭代次数与矩阵阶数倒数的关系;解:对于J方法,考虑n=50时,采用相邻误差为迭代的终止条件,误差下降曲线及残量的下降曲线如下:对于GS方法,考虑n=50的时候,采用相邻误差作为迭代的终止条件,所得到的残量和误差的下降曲线如下图:从中可以看出,当相邻误差满足误差指标时,真实误差却并不小于误差指标,而为2.6281e-04。

数值分析--第6章 解线性方程组的迭代法

数值分析--第6章 解线性方程组的迭代法

数值分析--第6章解线性方程组的迭代法第6章 解线性方程组的迭代法直接方法比较适用于中小型方程组。

对高阶方程组,即使系数矩阵是稀疏的,但在运算中很难保持稀疏性,因而有存储量大,程序复杂等不足。

迭代法则能保持矩阵的稀疏性,具有计算简单,编制程序容易的优点,并在许多情况下收敛较快。

故能有效地解一些高阶方程组。

1 迭代法概述迭代法的基本思想是构造一串收敛到解的序列,即建立一种从已有近似解计算新的近似解的规则。

由不同的计算规则得到不同的迭代法。

迭代法的一般格式(1)()(1)()(,,,),0,1,k k k k m kF k +--==x x x x式中(1)k +x 与()(1)(),,,k k k m --x x x 有关,称为多步迭代法。

若(1)k +x 只与()k x 有关,即(1)()(),0,1,k k kF k +==x x称为单步迭代法。

再设kF 是线性的,即(1)(),0,1,k kk kk +=+=x B x f式中n nk ⨯∈B R ,称为单步线性迭代法。

kB 称为迭代矩阵。

若k B 和kf 与k 无关,即(1)(),0,1,k k k +=+=x Bx f称为单步定常线性迭代法。

本章主要讨论具有这种形式的各种迭代方法。

1.1 向量序列和矩阵序列的极限由于nR 中的向量可与nR 的点建立——对应关系,由点列的收敛概念及向量范数的等价性,可得到向量序列的收敛概念。

定义6.1 设(){}k x 为n R 中的向量序列,nx R ∈,如果()lim 0k k x x →∞-=其中为向量范数,则称序列(){}k x 收敛于x ,记为()lim k k x x →∞=。

定理6.1 nR 中的向量序列(){}k x 收敛于nR 中的向量x 当且仅当()lim (1,2,,)k i i k x x i n →∞==其中()()()()1212(,,,),(,,,)k k k k T Tnnx x x x x x x x ==。

计算方法-线性方程组的迭代法实验

计算方法-线性方程组的迭代法实验

实验五 线性方程组的迭代法实验一. 实验目的(1)深入理解线性方程组的迭代法的设计思想,学会利用系数矩阵的性质以保证迭代过程的收敛性,以及解决某些实际的线性方程组求解问题。

(2)熟悉Matlab 编程环境,利用Matlab 解决具体的方程求根问题。

二. 实验要求建立Jacobi 迭代公式、Gauss-Seidel 迭代公式和超松弛迭代公式,用Matlab 软件实现线性方程组求解的Jacobi 迭代法、Gauss-Seidel 迭代法和超松弛迭代法,并用实例在计算机上计算。

三. 实验内容1. 实验题目(1)分别利用Jacobi 迭代和Gauss-Seidel 迭代求解下列线性方程组,取()T 0,0,0,0,0,0=x ,要求精度510-=ε:⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡---------------626050410100141010014001100410010141001014654321x x x x x x ①Jacobi 迭代:②Gauss-Seidel迭代:(2)分别取1ω、1.05、1.1、1.25和1.8,用超松弛法求解上面的方程组,要求精度=为5ε。

=10-超松弛迭代代码如下所示:运行时初始化如下:分别以不同的松弛因子代入,W=1:W=1.05W=1.1:W=1.25W=1.8:当最大迭代次数增加时,我们可以看到,x向量的各个元素都变无穷大了,迭代发散2. 设计思想要求针对上述题目,详细分析每种算法的设计思想。

求解线性方程组的迭代法,其实质是将所给的方程组逐步地对角化或三角化,即将线性方程组的求解过程加工成对角方程组或三角方程组求解过程的重复。

⑴Jacobi迭代:将一般形式的线性方程组归结为对角方程组求解过程的重复;⑵Gauss-Seidel迭代:将一般形式的线性方程组的求解归结为下三角方程组求解过程的重复;⑶超松弛法:选择合适的松弛因子,利用旧值生成新值,使迭代加速;四.实验体会对实验过程进行分析总结,对比求解线性方程组的不同方法的优缺点,指出每种方法的设计要点及应注意的事项,以及自己通过实验所获得的对线性方程组求解问题的各种解法的理解。

(精校版)迭代法解线性方程组数值分析实验报告

(精校版)迭代法解线性方程组数值分析实验报告

(完整word版)迭代法解线性方程组-数值分析实验报告编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整word版)迭代法解线性方程组-数值分析实验报告)的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整word版)迭代法解线性方程组-数值分析实验报告的全部内容。

数学与计算科学学院《数值分析》课程设计题目:迭代法解线性方程组专业:信息与计算科学学号: 1309302—24姓名:谭孜指导教师:郭兵成绩:二零一六年六月二十日一、前言:(目的和意义)1.实验目的①掌握用迭代法求解线性方程组的基本思想和步骤.②了解雅可比迭代法,高斯—赛德尔法和松弛法在求解方程组过程中的优缺点。

2。

实验意义迭代法是用某种极限过程去逐步逼近线性方程组精确解的方法,它是解高阶稀疏方程组的重要方法。

迭代法的基本思想是用逐次逼近的方法求解线性方程组。

比较雅可比迭代法,高斯—赛德尔迭代方法和松弛法,举例子说明每种方法的试用范围和优缺点并进行比较.二、数学原理:设有方程组b Ax = …① 将其转化为等价的,便于迭代的形式f Bx x += …② (这种转化总能实现,如令b f A I B =-=,), 并由此构造迭代公式f Bx x k k +=+)()1( …③ 式中B 称为迭代矩阵,f 称为迭代向量。

对任意的初始向量)0(x ,由式③可求得向量序列∞0)(}{k x ,若*)(lim x x k k =∞→,则*x 就是方程①或方程②的解。

此时迭代公式②是收敛的,否则称为发散的。

构造的迭代公式③是否收敛,取决于迭代矩阵B 的性 1。

雅可比迭代法基本原理设有方程组),,3,2,1(1n i b x a j j nj ij ==∑= …①矩阵形式为b Ax =,设系数矩阵A 为非奇异矩阵,且),,3,2,1(,0n i a ii =≠从式①中第i 个方程中解出x,得其等价形式)(111j nj j ij ii i x a b a x ∑≠=-= …②取初始向量),,,()0()0(2)0(1)0(n x x x x =,对式②应用迭代法,可建立相应的迭代公式: )(111)()1(∑≠=++-=nj j i k j ij ii k ib x a a x…③ 也可记为矩阵形式:J x J k F B x k +==)()1( …④ 若将系数矩阵A 分解为A=D —L-U ,⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡----⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡----⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=--=--00000000000000111211212211212222111211n n n nn n nn nn n n n n a a a a a a a a a a a a a a a a a a U L D A式中⎪⎪⎪⎪⎪⎭⎫⎝⎛=nn a a a D2211,⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=-0000121323121nn n n a a a a a a L ,⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛=-0000122311312n n n n a a a a a a U 。

解线性方程组的迭代法

解线性方程组的迭代法
算程序,得到一向量序列和一般的计算公式(迭代公式)
(0) (1) (k ) x1 x1 x1 (0) (1) (k ) (0) (1) (k ) x x2 , x x2 ,, x x2 , x (0) x (1) x(k ) 3 3 3
或写为 x B0 x f , 其中
0 4 B0 11 6 12 3 8 0 3 12 2 8 1 , 11 0 20 8 33 f . 11 36 12
5
( k 1) (k ) (k ) x1 (3 x2 2 x3 20) / 8, x ( k 1) (4 x ( k ) x ( k ) 33) /11, 1 3 2 ( k 1) (k ) (k ) x3 (6 x1 3x2 36) /12.
7
构造迭代法
x1( k 1) 2 x2 ( k ) 5, ( k 1) (k ) x 3 x 5. 1 2
则对任何的初始向量,得到的序列都不收敛.
对于给定方程组 x Bx f, 设有唯一解 x * ,则
x* Bx * f .
(1.5)
又设 x ( 0 ) 为任取的初始向量,按下述公式构造向量序列
4
任取初始值,例如取 x ( 0) (0, 0, 0)T .
将这些值代入(1.3) 式右边 (若(1.3)式为等式即求得
方程组的解,但一般不满足). 得到新的值
(1) (1) (1) T x (1) ( x1 , x2 , x3 ) (2.5, 3, 3)T ,
再将 x (1) 分量代入(1.3)式右边得到 x ( 2 ),反复利用这个计

实验八、解线性方程组的迭代法

实验八、解线性方程组的迭代法

实验八、解线性方程组的迭代法解线性方程组的迭代法是用某种极限过程去逐步逼近线性方程组精确解的方法,即是从一个初始向量)0(x 出发,按照一定的迭代格式产生一个向量序列}{)(k x ,使其收敛到方程组b Ax =的解。

迭代法的优点是所需计算机存储单元少,程序设计简单,原始系数矩阵在计算过程中始终不变等。

但迭代法存在收敛性及收敛速度问题。

迭代法是解大型稀疏矩阵方程组的重要方法。

一、实验目的1、熟悉迭代法的有关理论和方法;2、会编制雅可比迭代法、高斯-塞德尔迭代法的程序;3、注意所用方法的收敛性及其收敛速度问题。

二、实验任务1、用雅可比迭代法解方程组⎪⎩⎪⎨⎧=++=++=-+5222722321321321x x x x x x x x x .注意:若用高斯-塞德尔迭代法则发散。

解:输入主程序:function X=jacdd(A,b,X0,P,wucha,max1)[n m]=size(A);for j=1:m%a(j)=sum(abs(A(:,j)))-2*(abs(A(j,j)));%end%for i=1:n%if a(i)>=0%disp('请注意:系数矩阵A 不是严格对角占优的,此雅可比迭代不一定收敛')%return%end%end%if a(i)<0disp('请注意:系数矩阵A 是严格对角占优的,此方程组有唯一解,且雅可比迭代收敛 ')%endfor k=1:max1kfor j=1:mX(j)=(b(j)-A(j,[1:j-1,j+1:m])*X0([1:j-1,j+1:m]))/A(j,j);endX,djwcX=norm(X'-X0,P);xdwcX=djwcX/(norm(X',P)+eps); X0=X';X1=A\b;if (djwcX<wucha)&(xdwcX<wucha)disp('请注意:雅可比迭代收敛,此方程组的精确解jX 和近似解X 如下:')returnendendif (djwcX>wucha)&(xdwcX>wucha)disp('请注意:雅可比迭代次数已经超过最大迭代次数max1 ')enda,X=X;jX=X1',在MATLAB 中输入:A=[1 2 -2;1 1 1;2 2 1];b=[7 2 5]’X=jacdd(A,b,[0;0;0],inf,0.01,20)输入结果得:k =1 X = 7 2 5k =2 X =13 -10 -13k =3 X = 1 2 -1k =4 X = 1 2 -1请注意:雅可比迭代收敛,此方程组的精确解jX 和近似解X 如下:X =1 2 -12、用高斯-塞德尔迭代法解方程组⎪⎩⎪⎨⎧=++=++=++7.19.09.00.29.09.09.19.09.0321321321x x x x x x x x x .注意:若用雅可比迭代法则发散。

实验八解线性方程组的迭代法

实验八解线性方程组的迭代法

实验八、解线性方程组的迭代法解线性方程组的迭代法是用某种极限过程去逐步逼近线性方程组精确解的方法,即是从一个初始向量)0(x 出发,按照一定的迭代格式产生一个向量序列}{)(k x ,使其收敛到方程组b Ax =的解。

迭代法的优点是所需计算机存储单元少,程序设计简单,原始系数矩阵在计算过程中始终不变等。

但迭代法存在收敛性及收敛速度问题。

迭代法是解大型稀疏矩阵方程组的重要方法。

一、实验目的1、熟悉迭代法的有关理论和方法;2、会编制雅可比迭代法、高斯-塞德尔迭代法的程序;3、注意所用方法的收敛性及其收敛速度问题。

二、实验任务1、用雅可比迭代法解方程组⎪⎩⎪⎨⎧=++=++=-+5222722321321321x x x x x x x x x .注意:若用高斯-塞德尔迭代法则发散。

解:输入主程序:function X=jacdd(A,b,X0,P,wucha,max1)[n m]=size(A);for j=1:m%a(j)=sum(abs(A(:,j)))-2*(abs(A(j,j)));%end%for i=1:n%if a(i)>=0%disp('请注意:系数矩阵A不是严格对角占优的,此雅可比迭代不一定收敛') %return%end%end%if a(i)<0disp('请注意:系数矩阵A是严格对角占优的,此方程组有唯一解,且雅可比迭代收敛')%endfor k=1:max1kfor j=1:mX(j)=(b(j)-A(j,[1:j-1,j+1:m])*X0([1:j-1,j+1:m]))/A(j,j);endX,djwcX=norm(X'-X0,P); xdwcX=djwcX/(norm(X',P)+eps);X0=X';X1=A\b;if (djwcX<wucha)&(xdwcX<wucha)disp('请注意:雅可比迭代收敛,此方程组的精确解jX和近似解X如下:') returnendendif (djwcX>wucha)&(xdwcX>wucha)disp('请注意:雅可比迭代次数已经超过最大迭代次数max1 ')enda,X=X;jX=X1',在MATLAB 中输入:A=[1 2 -2;1 1 1;2 2 1];b=[7 2 5]’X=jacdd(A,b,[0;0;0],inf,0.01,20)输入结果得:k =1 X = 7 2 5k =2 X =13 -10 -13k =3 X = 1 2 -1k =4 X = 1 2 -1请注意:雅可比迭代收敛,此方程组的精确解jX 和近似解X 如下:X =1 2 -12、用高斯-塞德尔迭代法解方程组⎪⎩⎪⎨⎧=++=++=++7.19.09.00.29.09.09.19.09.0321321321x x x x x x x x x .注意:若用雅可比迭代法则发散。

数值分析实验报告--实验6--解线性方程组的迭代法

数值分析实验报告--实验6--解线性方程组的迭代法

1 / 8数值分析实验六:解线性方程组的迭代法2016113 张威震1 病态线性方程组的求解1.1 问题描述理论的分析表明,求解病态的线性方程组是困难的。

实际情况是否如此,会出现怎样的现象呢?实验内容:考虑方程组Hx=b 的求解,其中系数矩阵H 为Hilbert 矩阵,,,1(),,,1,2,,1i j n n i j H h h i j n i j ⨯===+-这是一个著名的病态问题。

通过首先给定解(例如取为各个分量均为1)再计算出右端b 的办法给出确定的问题。

实验要求:(1)选择问题的维数为6,分别用Gauss 消去法、列主元Gauss 消去法、J 迭代法、GS 迭代法和SOR 迭代法求解方程组,其各自的结果如何?将计算结果与问题的解比较,结论如何?(2)逐步增大问题的维数(至少到100),仍然用上述的方法来解它们,计算的结果如何?计算的结果说明了什么?(3)讨论病态问题求解的算法1.2 算法设计首先编写各种求解方法的函数,Gauss 消去法和列主元高斯消去法使用实验5中编写的函数myGauss.m 即可,Jacobi 迭代法函数文件为myJacobi.m ,GS 迭代法函数文件为myGS.m ,SOR 方法的函数文件为mySOR.m 。

1.3 实验结果1.3.1 不同迭代法球求解方程组的结果比较选择H 为6*6方阵,方程组的精确解为x* = (1, 1, 1, 1, 1, 1)T ,然后用矩阵乘法计算得到b ,再使用Gauss 顺序消去法、Gauss 列主元消去法、Jacobi 迭代法、G-S 迭代法和SOR 方法分别计算得到数值解x1、x2、x3、x4,并计算出各数值解与精确解之间的无穷范数。

Matlab 脚本文件为Experiment6_1.m 。

迭代法的初始解x 0 = (0, 0, 0, 0, 0, 0)T ,收敛准则为||x(k+1)-x(k)||∞<eps=1e-6,SOR方法的松弛因子选择为w=1.3,计算结果如表1。

3线性方程组的迭代解法

3线性方程组的迭代解法

三、逐次超松弛法(SOR方法)
逐次超松弛法(Successive Over Relaxation Method)可 看成是Gauss-Seidel方法的加速,Seidel迭代法是SOR方法的 特例。将Seidel方法的迭代公式
改写为
x(k1) i
1 aii
(bi
i 1
a x(k 1) ij j
k
0
1
2
3
4
5
6
x1
0
2.5000 2.9773 3.0098 2.9998 2.9999 3.0000
x2
0
2.0909 2.0289 1.9968 1.9997 2.0001 2.0000
x3
0
1.2273 1.0041 0.9959 1.0002 1.0001 1.0000
可见Gauss-Seidel迭代法比Jacobi迭代法收敛要快一些。
x(k 1) BJ x(k ) f J
0
其中
a21
a22
BJ D1(L U )
an1 ann
a12 a11 0
an2 ann
a13 a11
a23 a22
7
a1n1 a11
a2n1 a22
ann1 ann
a1n
a11
a2 n
a22 , fJ D1b
0
二、 Gauss-Seidel 迭代法
x(k ) i
xi(k )
x(k ) i
1 aii
bi
i 1
a x(k 1) ij j
j 1
n
aij
x(jk
)
j i
为加快收敛,在增量 xi(k ) 前加一个因子

实验解线性方程组的基本迭代法实验

实验解线性方程组的基本迭代法实验
>> eps=0.005;
>> [y,n]=GaussSeidel(A,b,x0,eps)
y =
0.4814
0.5732
0.6325
0.6518
0.6606
0.6640
0.6654
0.6660
0.6662
0.6663
0.6663
0.6663
0.6661
0.6656
0.6642
0.6609
0.6521
function [y,n]=SOR(A,b,x0,w,eps)
%*************************************************
%函数名称SOR松弛迭代函数
%参数解释A系数矩阵
% w松弛因子
% b常数项
% x0估计解向量
% eps误差范围
%返回值
% y解向量
% n迭代次数
A(i,j)=-1/4;
end
end
end
>> b=ones(20,1);
>> x0=zeros(20,1);
>> eps=0.005;
>> [y,n]=Jacobi(A,b,x0,eps)
y =
0.4813
0.5729
0.6321
0.6513
0.6600
0.6632
0.6646
0.6651
0.6653
n =
100
第二次给定初始向量为20行一列的0,
右端面项向量b=20行一列的1
迭代误差要求0.00005
松弛因子为1.2
在Command Window中输入

第六章解线性方程组的迭代法

第六章解线性方程组的迭代法

a11
A
a22

0

-

a21
0


ann

an1
an2

D LU
x M 1Nx M 1b
这样,可构造迭代法:
0 a12
-
0

0


a1n
a2n


0

取x(0)为初始向量

x(k
1)

Bx(k )

f
(k 0,1,
)
其中:B M 1N M 1(M A) I M 1A, f M 1b, 称 B I M 1A
为迭代法的迭代矩阵,选取 M 阵,就得到解 Ax b 的各
种迭代法。
6.2 基本迭代法
设 aii 0(i 1, 2, , n) ,并将 A 写为三部分:
Jacobi迭代法的分量表示
记 x(k) (x1(k) , , xi(k) , , xn(k) )T 由Jacobi迭代公式可得:Dx(k1) (L U )x(k) b ,写成分量
i1
n
形式即为:aii xi(k1) aij x(jk)
aij
x(k) j

13 15

例:用迭代法求解线性方程组:
9x1 x2 x3 7 x1 10x2 x3 8
x1 x2 15x3 13
记为:Ax b,其中:
9 1 1 x1 7
A


1
10
1 ,
x


x2

第八章 线性方程组的迭代法

第八章 线性方程组的迭代法

若系数矩阵非奇异,且
1 b1 a12 x2 a13 x3 a1n xn x1 a11 1 b2 a21 x1 a23 x3 a2 n xn x2 a22 1 bn an1 x1 an 2 x2 an,n1 xn1 xn ann
据此建立迭代公式
x1( k 1) x1( k ) x2 ( k ) 3 ( k 1) (k ) (k ) x2 2 x1 4 x2 3 ( 0) ( 0) 取 x1 x2 0,计算得 x1( 5 ) 33 x1 3 x1 3 x1 9 x1 15 (5) ( 2) ( 3) (1) ( 4) x2 3 x2 3 x2 9 x2 15 x2 33
… … …

( ( ( ( ( x nk 1) 1 ( a n1 x1 k 1) a n 2 x 2k 1) a n 3 x 3k 1) a nn 1 x nk 1) bn ) 1 a nn
( k 1) ( k 1) (k ) 1 1 写成矩阵形式: x D ( Lx Ux ) D b ( k 1) (k ) ( D L) x Ux b ( k 1) 1 ( k ) 1 x ( D L) Ux ( D L) b Gauss-Seidel g B 迭代阵
故Jacobi迭代矩阵为
0 1 4 1 5

2 5
0
3 10
Байду номын сангаас
1 5 1 2 0
Seidel迭代格式为
2 x1( k 1) 5 x2 ( k ) 1 x3( k ) 12 5 5 ( k 1) ( k 1) (k ) 1 x1 1 x3 5 x2 4 2 ( k 1) ( k 1) ( k 1) x3 3 3 1 x1 10 x2 10 5

解线性方程组的迭代法

解线性方程组的迭代法

G的特征值分别为: 0.308507, 0.154254 + 0.18304 i, 0.154254 0.18304 i
G的谱半径(G)= 0.308507 <1.Jacobi迭代收敛。
上海理工大学
University of Shanghai for Science and Technology
n 1 i 1 ( k 1) (k ) ( aij x j aij x j bi ) aii j 1 j i 1
上海理工大学
University of Shanghai for Science and Technology
College of Science
理学院
Gauss-Siedel迭代算法
上海理工大学
University of Shanghai for Science and Technology
College of Science
理学院
Jacobi迭代
a11 x1 a1n xn b1 a x a x b nn n n n1 1
上海理工大学
University of Shanghai for Science and Technology
College of Science
理学院
迭代矩阵为
0 1 G 3 11 6
6 0 1 6
1 2 5 0
G的特征值为:1=4.02408, 2=2.01204 3.10115 i, 1=4.02408; 2,3=3.69668 G的谱半径(G)=4.0197>1. Jacobi迭代不收敛。
x1 x2 xn 1 (a12 x2 a1n xn b1 ) a11 1 (a21 x1 a23 x3 a1n xn b2 ) a22 1 (an1 x1 an n 1 xn 1 bn ) ann
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验八、解线性方程组的迭代法
解线性方程组的迭代法是用某种极限过程去逐步逼近线性方程组精确解的方法,即是从一个初始向量)0(x 出发,按照一定的迭代格式产生一个向量序列}{)(k x ,使其收敛到方程组b Ax =的解。

迭代法的优点是所需计算机存储单元少,程序设计简单,原始系数矩阵在计算过程中始终不变等。

但迭代法存在收敛性及收敛速度问题。

迭代法是解大型稀疏矩阵方程组的重要方法。

一、实验目的
1、熟悉迭代法的有关理论和方法;
2、会编制雅可比迭代法、高斯-塞德尔迭代法的程序;
3、注意所用方法的收敛性及其收敛速度问题。

二、实验任务
1、用雅可比迭代法解方程组
⎪⎩⎪⎨⎧=++=++=-+5222722321
321321x x x x x x x x x .
注意:若用高斯-塞德尔迭代法则发散。

解:输入主程序:
function X=jacdd(A,b,X0,P,wucha,max1)
[n m]=size(A);
for j=1:m
%a(j)=sum(abs(A(:,j)))-2*(abs(A(j,j)));
%end
%for i=1:n
%if a(i)>=0
%disp('请注意:系数矩阵A 不是严格对角占优的,此雅可比迭代不一定收敛')
%return
%end
%end
%if a(i)<0
disp('请注意:系数矩阵A 是严格对角占优的,此方程组有唯一解,且雅可比迭代收敛 ')
%end
for k=1:max1
k
for j=1:m
X(j)=(b(j)-A(j,[1:j-1,j+1:m])*X0([1:j-1,j+1:m]))/A(j,j);
end
X,djwcX=norm(X'-X0,P);
xdwcX=djwcX/(norm(X',P)+eps); X0=X';X1=A\b;
if (djwcX<wucha)&(xdwcX<wucha)
disp('请注意:雅可比迭代收敛,此方程组的精确解jX 和近似解X 如下:')
return
end
end
if (djwcX>wucha)&(xdwcX>wucha)
disp('请注意:雅可比迭代次数已经超过最大迭代次数max1 ')
end
a,X=X;jX=X1',
在MATLAB 中输入:
A=[1 2 -2;1 1 1;2 2 1];
b=[7 2 5]’
X=jacdd(A,b,[0;0;0],inf,0.01,20)
输入结果得:
k =1 X = 7 2 5
k =2 X =13 -10 -13
k =3 X = 1 2 -1
k =4 X = 1 2 -1
请注意:雅可比迭代收敛,此方程组的精确解jX 和近似解X 如下:
X =1 2 -1
2、用高斯-塞德尔迭代法解方程组
⎪⎩
⎪⎨⎧=++=++=++7.19.09.00.29.09.09.19.09.0321321321x x x x x x x x x .
注意:若用雅可比迭代法则发散。

解:输入主程序:
function X=gsdddy(A,b,X0,P,wucha,max1)
D=diag(diag(A));U=-triu(A,1);L=-tril(A,-1);
dD=det(D);
if dD==0
disp('请注意:因为对角矩阵D 奇异,所以此方程组无解.')
else
disp('请注意:因为对角矩阵D 非奇异,所以此方程组有解.')
iD=inv(D-L); B2=iD*U;f2=iD*b;jX=A\b; X=X0;
[n m]=size(A);
for k=1:max1
X1= B2*X+f2; djwcX=norm(X1-X,P);
xdwcX=djwcX/(norm(X,P)+eps);
if (djwcX<wucha)|(xdwcX<wucha)
break
else
k,X1',k=k+1;X=X1;
end
end
if (djwcX<wucha)|(xdwcX<wucha)
disp('请注意:高斯-塞德尔迭代收敛,此A的分解矩阵
D,U,L和方程组的精确解jX和近似解X如下: ')
else
disp('请注意:高斯-塞德尔迭代的结果没有达到给定的精度,并且迭代次数已经超过最大迭代次数max1,方程组的精确解
jX和迭代向量X如下: ')
X=X';jX=jX'
end
end
X=X';D,U,L,jX=jX'
然后再MA TLAB中输入:
A=[1 0.9 0.9;0.9 1 0.9;0.9 0.9 1];
b=[1.9;2.0;1.7];
X=gsdddy(A,b,[0;0;0],inf,0.01,20)
请注意:因为对角矩阵D非奇异,所以此方程组有解.
k =1 ans =1.9000 0.2900 -0.2710
k =2 ans =1.8829 0.5493 -0.4890
k =3 ans =1.8457 0.7789 -0.6622
k =4 ans =1.7949 0.9805 -0.7979
k =5 ans =1.7356 1.1560 -0.9025
k =6 ans =1.6718 1.3076 -0.9815
k =7 ans =1.6065 1.4375 -1.0396
k =8 ans =1.5419 1.5479 -1.0808
k =9 ans = 1.4796 1.6411 -1.1086
k =10 ans =1.4208 1.7191 -1.1259
k =11 ans =1.3661 1.7838 -1.1349
k =12 ans =1.3160 1.8370 -1.1377
k =13 ans =1.2706 1.8804 -1.1359
k =14 ans =1.2300 1.9153 -1.1308
k =15 ans =1.1939 1.9432 -1.1234
k =16 ans =1.1622 1.9651 -1.1145
k =17 ans =1.1345 1.9820 -1.1049
k =18 ans =1.1106 1.9949 -1.0949
k =19 ans =1.0900 2.0044 -1.0850
请注意:高斯-塞德尔迭代收敛,此A的分解矩阵D,U,L和方程组的精确解jX和近似解X如下:
D = 1 0 0
0 1 0
0 0 1
U = 0 -0.9000 -0.9000
0 0 -0.9000
0 0 0
L = 0 0 0
-0.9000 0 0
-0.9000 -0.9000 0
jX =1.0000 2.0000 -1.0000
X =1.0900 2.0044 -1.0850
三.实验总结:
这次实验课我们上星期讨论课的时候已经讨论过了,主要是雅可比迭代和高斯迭代法。

不同的题目算出来的根据是否收敛来定。

例如第二道题目我们用雅可比迭代法和高斯迭代法计算,雅可比迭代法算出来谱半径>1,主对角不占绝对优势,所以发散。

而高斯迭代发算出来是收敛的,而且高斯迭代法利用新值代替旧值,所以比雅可比迭代法更好。

相关文档
最新文档