数值计算_第4章 解线性方程组的迭代法
数值方法课后习题答案第4章
解线性方程组迭代法
第四章 解线性方程组迭代法
习题4-1
第四章
解线性方程组迭代法
Байду номын сангаас
第四章
解线性方程组迭代法
第四章
解线性方程组迭代法
第四章
解线性方程组迭代法
第四章
解线性方程组迭代法
第四章
解线性方程组迭代法
第四章
解线性方程组迭代法
第四章
解线性方程组迭代法
第四章
习题4
习题4
习题4
习题4
8.
设A为严格对角优势阵,证明:
习题4
9. A是n阶非奇异阵,B是n阶奇异阵,试求证:
习题4
习题4
P91
P91.
x0
p0 r0
Ap0
x1
r1
p1
Ap1
x2
r2
0
3
7
30/29=
17/29=
1360/841=
1530/841=
14/9=
0.3
P91
1.034482758 0 1 8 10/29= 0.344827586
0.570796875 0.493315839 0.500166165 0.499999398 1.001438281 0.998173633 1.000074653 1.000013383 -0.49943416 -
0.500558834 0.499923587 0.500003961
w=1.03
10 29 a0 =10/29=0.344827586
2890/841=3.436385254 260100/24389=10.66464388 a1 =8381/26010=0.322222222 -289/29= -9.965517218 b0 =289/841=0.343638524
数值计算方法思考题
数值计算方法思考题第一章 预篇1.什么是数值分析?它与数学科学和计算机的关系如何?2.何谓算法?如何判断数值算法的优劣?3.列出科学计算中误差的三个来源,并说出截断误差与舍入误差的区别。
4.什么是绝对误差与相对误差?什么是近似数的有效数字?它与绝对误差和相对误差有何关系?5.什么是算法的稳定性?如何判断算法稳定?为什么不稳定算法不能使用?6.判断如下命题是否正确:(1)一个问题的病态性如何,与求解它的算法有关系。
(2)无论问题是否病态,好的算法都会得到好的近似解。
(3)解对数据的微小变化高度敏感是病态的。
(4)高精度运算可以改善问题的病态性。
(5)用一个稳定的算法计算良态问题一定会得到好的近似值。
(6)用一个收敛的迭代法计算良态问题一定会得到好的近似值。
(7)两个相近数相减必然会使有效数字损失。
(8)计算机上将1000个数量级不同的数相加,不管次序如何结果都是一样的。
7.考虑二次代数方程的求解问题ax 2 + bx + c = 0.下面的公式是熟知的aac b b x 242-±-=. 与之等价地有ac b b c x 422--=.对于 a = 1, b = -100 000 000 , c = 1应当如何选择算法?8.指数函数有著名的级数展开++++=!3!2132x x x e x如果对x < 0用上述的级数近似计算指数函数的值,这样的算法结果是否会好?为什么?9.考虑数列x i , i = 1,…, n , 它的统计平均值定义为∑==n i i x x x 11 它的标准差2112)(11⎥⎦⎤⎢⎣⎡--=∑-n i i x x n σ 数学上它等价于2112211⎥⎥⎦⎤⎢⎢⎣⎡⎪⎪⎭⎫ ⎝⎛--=∑=n i i x n x n σ 作为标准差的两种算法,你如何评价它们的得与失?第二章 非线性方程求根1.判断如下命题是否正确:(a) 非线性方程的解通常不是唯一的;(b) Newton 法的收敛阶高于割线法;(c) 任何方法的收敛阶都不可能高于Newton 法;(d) Newton 法总是比割线法更节省计算时间;(e) 如果函数的导数难于计算,则应当考虑选择割线法;(f) Newton 法是有可能不收敛;(g) 考虑简单迭代法x k +1 = g (x k ),其中x * = g (x *)。
第四章-解AX=b的迭代法
•迭代格式的收敛性
2 k 引理4.1 (线性代数定理) 设矩阵序列 IM , , M , , M ,
k l i m M 0 ( M ) 1 . k
则
(证明见关治和陈景良编《数值计算方法》P410-412) 定理4.1 设迭代格式为
( k 1 ) ( k ) xM x g , k 0 , 1 , 2 , ( 4 . 3 )
充分性()设ρ(M)<1,证{x(k)}收敛。
如果ρ(M)<1 ,则I-M为非奇异矩阵。事实上,因
为ρ(M)<1,λi<1,因此λ=1不是M的特征值,即
| 1 IM || IM |0 .
所以方程组 (I-M)x = f 有惟一解x*,满足(I-M)x* = f ,即 x*=Mx* + f 。于是
( k ) ( k 1 ) 2 ( k 2 ) x x * M ( x x * ) M ( x x * ) k ( 0 ) k M ( x x * ) M . 0
由引理4.1知,
k () k I f ( M ) < 1 ,t h e nl i m M 0 , l i m ( x x * ) 0 , i . e . k k () k l i m x x * . k
写成矩阵形式
x1 0 x b 2 21 31 x3 b x b n n1
或简记为
b 12 b 13 0 b23 b 0 32 bn2 bn3
b 1n x 1 g 1 b2n x2 g2 b 3n x 3 g3 g x 0 n n
( k ) ( k ) ( k 1 ) ( k ) x x * x x q x x *
数值分析实验报告--解线性方程组的迭代法及其并行算法
disp('请注意:高斯-塞德尔迭代的结果没有达 到给定的精度,并且迭代次数已经超过最大迭 代次数max1,方程组的精确解jX和迭代向量X 如下: ') X=X';jX=jX' end end X=X';D,U,L,jX=jX'
高斯-塞德尔的输入为:
A=[10 2 3;2 10 1;3 1 10]; b=[1;1;2]; X0=[0 0 0]'; X=gsdddy(A,b,X0,inf, 0.001,100) A=[10 2 3;2 10 1;3 1 10]; 请注意:因为对角矩阵 D 非奇异,所以此方程组有解.
0.0301 0.0758 0.1834
8.心得体会:
这已经是第三次实验了, 或多或少我已经对 MATLAB 有了更多的了 解与深入的学习。通过这次实验我了解了雅可比迭代法和高斯- 塞德尔迭代法的基本思想,虽然我们不能熟练编出程序,但还是 能看明白的。运行起来也比较容易,让我跟好的了解迭代法的多 样性,使平常手算的题能得到很好的验证。通过这次实验让我对 MATLAB 又有了更深一层的认识,使我对这门课兴趣也更加浓厚。
运行雅可比迭代程序输入: A=[10
b=[1;1;2];X0=[0 0 0]'; X=jacdd(A,b,X0,inf,0.001,100)
2 3;2 10 1;3 1 10];
结果为:
k= 1 X=
0.1000 k= 2 X= 0.0200 k= 3 X= 0.0400 k= 4 X= 0.0276 k= 5 X= 0.0314 k= 6 X= 0.0294 k= 7 X= 0.0301 k= 8 X= 0.0297
6、 设计思想:先化简,把对角线的项提到左边,其它项
《数值分析》-雅格比法与高斯-赛德尔迭代法解线性方程组
4. 线性方程组求解4.用雅格比法与高斯-赛德尔迭代法解下列方程组Ax =b ,研究其收敛性,上机验证理论分析是否正确,比较它们的收敛速度,观察右端项对迭代收敛有无影响。
(1)A 行分别为A 1=[6,2,-1],A 2=[1,4,-2],A 3=[-3,1,4]; b 1=[-3,2,4]T , b 2=[100,-200,345]T ,(2) A 行分别为A 1=[1,0.8,0.8],A 2=[0.8,1,0.8],A 3=[0.8,0.8,1];b 1=[3,2,1] T , b 2=[5,0,-10]T ,(3)A 行分别为A 1=[1,3],A 2=[-7,1];b =[4,6]T , (1)雅可比法A 为所求方程组的系数矩阵,将系数矩阵()n n ij A a R ⨯=∈分为三部分,即111212221211000000n n nn n n a a a a a a A a a a --⎛⎫⎛⎫⎛⎫ ⎪ ⎪ ⎪-- ⎪ ⎪ ⎪=-- ⎪ ⎪ ⎪ ⎪⎪ ⎪--⎝⎭⎝⎭⎝⎭D L U ≡--构造迭代方程,选取M 为A 的对角元素部分,即选取M D =,A D N =-,由此构造得到解AX b =的雅可比迭代法如下:()()()01,,0,1,,k k x xBx f k +⎧⎨=+=⎩ 初始向量(4-1)其中()111B I D A D L U J f D b ---=-=+≡=,,J 为雅可比迭代矩阵。
若A 为n 阶矩阵,迭代公式如下:()()()()()()()00001211,,,()/1,2,,;0,1,T n n k k ii ij j ii j j ix x x x x b a x a i n k +=≠⎧=⎪⎪⎪=-⎨⎪⎪==⎪⎩∑初始向量表示迭代次数(4-2) 在运行程序时首先需要手动输入矩阵A ,阶数n 、向量b 和初始向量x 0,根据式(4-2)不断迭代可求解得近似解。
高斯-赛德尔法--数值分析线性方程组的迭代解法
实验六、高斯-塞德尔法
一、实验目的
通过本实验学习线性方程组的迭代解法。掌握高斯-赛德尔迭代法编程。
二、计算公式
}
if(k==T)printf("\nNo");
else
printf("\n",k);
for(i=0;i<M;i++)
printf("x(%d)=%15.7f\n",i+1,x[i]);
}
四、例题
书P189页例6:用高斯-塞德尔迭代解线性方程组:
取 使得
#include<math.h>
#define M 3
#define N 4
main()
{
double a[M][N]={{8,-3,2,20},
{4,11,-1,33},
{6,3,12,36},
};
double x[M]={0,0,0};//初值
double r,t,q,eps=0.0000202;//需要精度
if(j!=i)q=q+a[i][j]*x[j];
x[i]=(a[i][N-1]-q)/a[i][i];
if(fabs(x[i]-t)>r)r=fabs(x[i]-t);
}
if(r<eps)break;
printf("\nk=%d,",k);
for(i=0;i<M;i++)
printf("\nx[%d]=%lf",i,x[i]);
第四章 解线性方程组的迭代法
x = ( x x + 1) / 8 ( k +1) ( k +1) (k ) = ( 2 x1 + x 3 + 4) / 10 x2 ( k +1) ( k +1) ( k +1) = ( x1 + x2 3) / 5 x3
(k ) 2 (k ) 3
( k +1) 1
迭代结果为: 取初始迭代向量 x ( 0) = (0 ,0 ,0) T ,迭代结果为:
4.2 迭代法的基本思想 迭代法的基本思想是将线性方程组转化 为便于迭代的等价方程组, 为便于迭代的等价方程组,对任选一组初始 按某种计算规则, 值 xi( 0) (i = 1,2, L , n) ,按某种计算规则,不断地 对所得到的值进行修正,最终获得满足精度 对所得到的值进行修正, 要求的方程组的近似解。 要求的方程组的近似解。
( 取初始向量 x ( 0 ) = ( x 1( 0 ) , x 2 0 ) , x 3( 0 ) ) T = ( 0 , 0 , 0 ) T
进行迭代, 可以逐步得出一个近似解的序列: 进行迭代 可以逐步得出一个近似解的序列:
( ( ) ( x1( k ) , x 2k ) , x 3 k ) ) (k=1, 2, …)
(k=0,1,2,…)
4.3.3 4.3.3 4.3.3 4.3.3 雅 可 比 迭 代 法 的 算 法 实 现
k+ 1 k y i x i i = 1 ,2 ,… ,n n
输 入 a i j ,b i , 和 方 程 阶 数 n , ε ,M
1 k
(bi
∑a
j =1 j≠i
n
ij
x j ) / a ii y i
实验4 求解线性方程组的迭代法
实验4 解线性方程组的迭代法一、稀疏矩阵的生成和运算实验内容:稀疏矩阵相关命令的熟悉。
实验要求:1、熟悉sparse、full、nnz、spy等命令的使用方法.(实验报告)注意:spy使用时要加上输入参数,直接运行spy会出现与本课程无关的结果。
2、了解sprand命令的用法。
3、熟悉speye、condest、normest、spdiags等命令的使用方法,并生成107阶的三对角矩阵:(实验报告)二、大型稀疏线性方程组的求解实验内容:用不同的迭代法求解n阶大型稀疏矩阵Ax=b(n=1e+4)。
实验要求:(1)数学问题的生成:(a)使用sprand命令生成,稀疏度0.001,并通过spy观察矩阵的结构;(b)运行PPT第21页的两段代码,分别生成A,运行结果有什么区别?注意:如果用稠密方式生成矩阵,可能会导致内存不够。
(2)增大矩阵阶数到1e+6,使用MATLAB自带的pcg与“\”运算,以及分别Gauss消去法、Jacobi迭代法和Gauss-Seidel迭代法分别求解以下Sx=b,看看运算时间对比:(实验报告)b为全1向量,S为以下代码所生成:m=1000,n=m*m;eone=ones(m,1);s=spdiags([-eone,8*eone,-eone],[-1,0,1],m,m);E=speye(m);a1=blkdiag(kron(E,s));a2=spdiags([ones(n,1)],[m],n,n);A=a1-a2-a2';注意:pcg命令只适用于对称正定矩阵三、病态的线性方程组的求解实验内容:考虑方程组Hx=b的求解,其中系数矩阵H为Hilbert矩阵,首先给定解(例如取为各个分量均为1)再计算出右端b的办法给出确定的问题。
实验要求:(1)设定n=6,分别用Gauss消去法、Jacobi迭代法和Gauss-Seidel迭代法求解方程组,其各自的结果如何?各方法的误差比较如何?(实验报告)(2)逐步增大问题的维数100、1000、3000,仍然用上述的方法来解它们,计算的结果如何?计算的结果说明了什么?(实验报告)。
解线性方程组的迭代法
解线性方程组的迭代法Haha送给需要的学弟学妹摘要:因为理论的分析表明,求解病态的线性方程组是困难的,但是实际情况是否如此,需要我们来具体检验。
系数矩阵H 为Hilbert 矩阵,是著名的病态问题。
因而决定求解Hx b =此线性方程组来验证上述问题。
详细过程是通过用Gauss 消去法、J 迭代法、GS 迭代法和SOR 迭代法四种方法求解Hx b =线性方程组。
关键词:病态方程组、Gauss 消去法、J 迭代法、GS 迭代法、SOR 迭代法目录:一、问题背景介绍二、建立正确额数学模型 三、求解模型的数学原理1、Gauss 消去法求解原理2、Jacobi 迭代法求解原理3、G-S 迭代法求解原理4、SOR 迭代法求解原理5、Jacobi 和G-S 两种迭代法收敛的充要条件 四、计算过程(一)Hilbert 矩阵维数n=6时1、Gauss 消去法求解2、Jacobi 迭代法求解3、G-S 迭代法求解4、SOR 迭代法求解(二)Hilbert 矩阵维数n=20、50和100时1、G-S 迭代法求解图形2、SOR 迭代法求解图形 五、编写计算程序 六、解释计算结果1、Gauss 消去法误差分析2、G-S 迭代法误差分析3、SOR 迭代法误差分析G-S 迭代法与SOR 迭代法的误差比较 七、心得体会正文:一、问题背景介绍。
理论的分析表明,求解病态的线性方程组是困难的。
实际情况是否如此,会出现怎样的现象呢?二、建立正确的数学模型。
考虑方程组Hx b =的求解,其中系数矩阵H 为Hilbert 矩阵,,,1(), , ,1,2,,1i j n n i j H h h i j n i j ⨯===+-这是一个著名的病态问题。
通过首先给定解(为方便计算,笔者取x 的各个分量等于1),再计算出右端,b Hx =这样Hx b =的解就明确了,再用Gauss 消去法、J 迭代法、GS 迭代法和SOR 迭代法四种方法分别求解,Hx b =将求解结果与给定解比较,而后求出上述四种方法的误差,得出哪种方法比较好。
解线性方程组的迭代法
|| x || 0 (非负性) ; (1)|| x || 0 ,当且仅当 x 0 时,
(2) || x ||| | || x || (齐次性); (3) || x y |||| x || || y || (三角不等式). 则称 || x || 为向量 x 的范数 (或模).
4.1.2 向量范数和向量序列的极限
常用的向量范数:设 x R n (1)向量的 - 范数 (最大范数): || x || max | xi |
1 i n
|| x ||1 (2)向量的 1 - 范数 (绝对值范数):
(3)向量的 2 - 范数:|| x ||2 ( x , x ) (
|| A ||2 3+2 2 , || A ||F 6
4.1.3 矩阵范数和矩阵序列的极限
(k ) ) R nn ,如果存 定义5 (矩阵序列的极限) 设有矩阵序列 Ak (aij
在 A (aij ) R nn,使
k (k ) lim aij aij ,
i, j 1, 2,
(4) || AB |||| A || || B || ; 则称 || A || 为矩阵 A 的范数.
4.1.3 矩阵范数和矩阵序列的极限
相容性: 设有矩阵范数 || ||s 和向量范数 || ||t ,如果对任何向量 x R n 及矩阵 A R nn ,有/2 || A ||F ( aij ) i , j 1 n
它是与向量 2-范数相容的矩阵范数,但不是从属范数.
4.1.3 矩阵范数和矩阵序列的极限
解线性方程组的迭代法
0.9906
0.0355
5 1.01159 0.9953
1.01159 0.01159
6 1.000251 1.005795 1.000251 0.005795
7 0.9982364 1.0001255 0.9982364 0.0017636
可见,迭代序列逐次收敛于方程组的解, 而且迭代7次得到精确到小数点后两位的近似解.
a11x1 a12x2 a13x3 b1 a21x1 a22x2 a23x3 b2 a31x1 a32x2 a33x3 b3
从而得迭代公式
x1
a12 a11
x2
a13 a11
x3
b1 a11
x2
a21 a22
x1
a23 a22
x3
b2 a22
x3
a31 a33
M 00.8 00..75
但(M)=0.8<1,所以迭代法 x(k+1)=Mx(k)+g 是收敛的.
由(3.5)式可见,‖M‖越小收敛越快,且当‖x (k) -x(k-1) ‖很小时,‖x(k) –x*‖就很小,实际中用‖x (k) x(k-1) ‖<作为
迭代终止的条件。 例如,对例1中的Jacobi迭代计算结果
+‖x(k+1) –x*‖‖M‖‖x(k) –x(k-1)‖+‖M‖‖x(k) –x*‖ 从而得‖x(k) –x*‖‖M‖‖x (k) -x(k-1) ‖/(1- ‖M‖)
(3.5) (3.6)
估计式(3.5)得证。利用(3.5)式和
‖x(k+1) 得到
-x(k)
‖‖M‖‖x
(k)
-x(k-1)
‖
解线性方程组 的迭代法
数值分析实验报告--实验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。
数值计算_第4章 解线性方程组的迭代法
如果用高斯-赛德尔迭代法 迭代72次得:
用SOR迭代法 ,只须迭代25次即得:
逐次超松弛迭代算法
下列算法假定迭代矩阵收敛,否则要在WHILE循环中增加判断条件。
1.定义和输入系数矩阵 与常数项向量 的元素,输入松弛因子 的值。
2.FOR i:=1,2,…,n
//假定 ,形成常数项向量
FOR
当方程组的系数矩阵 具有某些性质时,可直接判定由它生成的雅可比迭代矩阵是收敛的。
定理4.3若方程组 的系数矩阵 ,满足下列条件之一,则其雅可比迭代法是收敛的。
(1) 为行对角占优阵,即
(2) 为列对角占优阵,即
证明:(1)雅可比迭代矩阵 其中
(2) 为列对角优阵,故 为行对角占优阵,由系数矩阵 构造的迭代矩阵 为行对角占优阵,则有
通常,把 的迭代称为亚松弛迭代,把 的迭代称为高斯-塞德尔迭代,而把 的迭代称为松弛迭代。
4.4
在线性代数中逆矩阵是按其伴随矩阵定义的,若 则方阵 可逆,且 ,其中 为 的伴随矩阵。要计算 个 阶的列式才能得到一个伴随矩阵,在数值计算中因其计算工作量大而不被采用。通常对 做行的初等的效换,在将 化成 的过程中得到 。在数值计算中,这仍然是一种行之有效的方法。
事实上,在计算 前,已经得到 的值,不妨将已算出的分量直接代入迭代式中,及时使用最新计算出的分量值。因此 的计算公式可改为:
即用向量 计算出 的值,用向量 计算出 的值 ,用向量 计算出 的值,这种迭代格式称为高斯—塞德尔迭代。
对于方程组AX=y,如果由它构造高斯-塞德尔迭代和雅可比迭代都收敛,那么,多数情况下高斯—塞德尔迭代比雅可比迭代的收敛效果要好,但是情况并非总是如此。
又
得到
而 ,
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章解线性方程组的迭代法用迭代法求解线性方程组与第4章非线性方程求根的方法相似,对方程组进行等价变换,构造同解方程组(对可构造各种等价方程组,如分解,可逆,则由得到),以此构造迭代关系式(4.1)任取初始向量,代入迭代式中,经计算得到迭代序列。
若迭代序列收敛,设的极限为,对迭代式两边取极限即是方程组的解,此时称迭代法收敛,否则称迭代法发散。
我们将看到,不同于非线性方程的迭代方法,解线性方程组的迭代收敛与否完全决定于迭代矩阵的性质,与迭代初始值的选取无关。
迭代法的优点是占有存储空间少,程序实现简单,尤其适用于大型稀疏矩阵;不尽人意之处是要面对判断迭代是否收敛和收敛速度的问题。
可以证明迭代矩阵的与谱半径是迭代收敛的充分必要条件,其中是矩阵的特征根。
事实上,若为方程组的解,则有再由迭代式可得到由线性代数定理,的充分必要条件。
因此对迭代法(4.1)的收敛性有以下两个定理成立。
定理4.1迭代法收敛的充要条件是。
定理4.2迭代法收敛的充要条件是迭代矩阵的谱半径因此,称谱半径小于1的矩阵为收敛矩阵。
计算矩阵的谱半径,需要求解矩阵的特征值才能得到,通常这是较为繁重的工作。
但是可以通过计算矩阵的范数等方法简化判断收敛的工作。
前面已经提到过,若||A||p矩阵的范数,则总有。
因此,若,则必为收敛矩阵。
计算矩阵的1范数和范数的方法比较简单,其中于是,只要迭代矩阵满足或,就可以判断迭代序列是收敛的。
要注意的是,当或时,可以有,因此不能判断迭代序列发散。
在计算中当相邻两次的向量误差的某种范数小于给定精度时,则停止迭代计算,视为方程组的近似解(有关范数的详细定义请看3.3节。
)4.1雅可比(Jacobi)迭代法4.1.1 雅可比迭代格式雅可比迭代计算元线性方程组(4.2)写成矩阵形式为。
若将式(4.2)中每个方程的留在方程左边,其余各项移到方程右边;方程两边除以则得到下列同解方程组:记,构造迭代形式或(4.3)迭代计算式(4.3)称为简单迭代或雅可比迭代。
任取初始向量,由式(4.3)可得到迭代向量序列雅可比迭代矩阵设由,得到等价方程:记不难看出,正是迭代式(4.3)的迭代矩阵,是常数项向量。
于是式(4.3)可写成矩阵形式:(4.4)其中:雅可比迭代算法下面描述解线性方程组的雅可比迭代算法,为了简单起见,在算法中假定矩阵满足雅可比迭代要求,即,并设由系数矩阵构造迭代矩阵是收敛的。
1.定义和输入系数矩阵与常数项向量的元素。
2.FOR i:=1,2,…,n{ //假定,形成常数项向量FOR j:=1,2,…,n} //形成迭代矩阵元素3.// 赋初始值,x1和x2分别表示和4.WHILEx1:=x2x2:=B*x1+g // FOR u:=1,2,…,n// s:= g[u];// FOR v:=1,2,…,n s:=s+b[u][v]*x1[v]; // x2[u]:=s;ENDWHILE5.输出方程组的解例4.1用雅可比方法解下列方程组:解:方程的迭代格式:或雅可比迭代收敛。
取初始值,计算结果由表4.1所示。
表4.1 计算结果0 1 1 11 -1.5 1.6 0.9 0.252 -1.25 2.08 1.09 0.483 -0.915 2.068 1.017 0.3354 -0.9575 1.9864 0.9847 0.08165 -1.01445 1.98844 0.99711 0.056956 -1.00722 2.00231 1.0026 0.013877 -0.997543 2.00197 1.00049 0.009687方程组的准确解是4.1.2 雅可比迭代收敛条件对于方程组,构造雅可比迭代格式其中,。
当迭代矩阵的谱半径时,迭代收敛,这是收敛的充分必要条件。
迭代矩阵的某范数时,迭代收敛。
要注意的是范数小于1只是判断迭代矩阵收敛的充分条件,当迭代矩阵的一种范数||B||>1,并不能确定迭代矩阵是收敛还是发散。
例如,,则,但它的特征值是0.9和0.8。
是收敛矩阵。
当方程组的系数矩阵具有某些性质时,可直接判定由它生成的雅可比迭代矩阵是收敛的。
定理4.3若方程组的系数矩阵,满足下列条件之一,则其雅可比迭代法是收敛的。
(1)为行对角占优阵,即(2)为列对角占优阵,即证明:(1)雅可比迭代矩阵其中(2)为列对角优阵,故为行对角占优阵,由系数矩阵构造的迭代矩阵为行对角占优阵,则有又得到而,得由系数矩阵构造的雅可比迭代矩阵收敛。
(如矩阵既是行对角占优阵,也是列对角占优阵)定理4.4若方程组系数矩阵为对称正定阵,并且也为对称正定,则雅可比迭代收敛。
4.2 高斯-塞德尔(Gauss-Seidel)迭代法高斯-赛德尔迭代计算在雅可比迭代中,用的值代入方程(4.2)中计算出的值,的计算公式是事实上,在计算前,已经得到的值,不妨将已算出的分量直接代入迭代式中,及时使用最新计算出的分量值。
因此的计算公式可改为:即用向量计算出的值,用向量计算出的值,用向量计算出的值,这种迭代格式称为高斯—塞德尔迭代。
对于方程组AX=y ,如果由它构造高斯-塞德尔迭代和雅可比迭代都收敛,那么,多数情况下高斯—塞德尔迭代比雅可比迭代的收敛效果要好,但是情况并非总是如此。
构造方程组的高斯-塞德尔迭代格式的步骤与雅可比类似,设将式(4.1)中每个方程的留在方程的左边,其余各项都移到方程的右边;方程两边除以,得到下列同解方程组:记,对方程组对角线以上的取第步迭代的数值,对角线以下的取第步迭代的数值,构造高斯—塞德尔迭代形式:(4.5)例4.2用高斯-塞德尔方法解方程组:解:方程的迭代格式:取初始值有时,时,计算结果如表4.2所示。
表4.2 计算结果1234000-2.5 2.1 1.14 2.5-0.88 2.0040.9876 1.62-1.0042 1.9984 1.00060.1242-1.0005 2.0002 1.00000.0037 高斯—塞德尔迭代矩阵设写成等价矩阵表达式:构造迭代形式:有(4.6)则高斯-塞德尔迭代式(4.4)为(4.7)称为高斯-塞德尔迭代矩阵。
高斯-塞德尔迭代算法高斯—塞德尔迭代的程序实现与雅可比迭代步骤大致相同,对于方程组,在前面的雅可比算法中,假定雅可比迭代矩阵为表示表示,其迭代核心部分是。
下面的算法给出由和计算的过程,省略了形成迭代矩阵和对初始化的部分。
雅可比迭代的核心部分:WHILEfor(u:=1;u<=n,u++) x1[u]:=x2[u]for(i:=1;j<=n;j++){ s:=g[i];for(j:=1;i<=n;i++){ s:=s+b[i]x2[j]} //注意x2[j]}ENDWHILE在高斯-赛德尔迭代计算中并不需要形成迭代矩阵,由式(4.5)可知在计算中只要形成矩阵在程序中令向量。
它的核心部分是计算迭代式,计算中只需及时将放到的位置上。
高斯-塞德尔迭代的核心部分:WHILEfor(u:=1;u<=n;u++) x1[u]:=x2[u]for(i:=1;j<=n;j++){ s:=g[i];for(j:=1;j<=n;j++){ s:=s+b[i]x2[ j ]} //注意x2[j]x2[i]:=s }ENDWHILE上列算法是在假定迭代收敛的前提下,使用当型(WHILE)结构控制循环。
更一般地,可将上列算法中WHILE循环改为FOR循环,通过控制循环次数和观测计算误差终止循环。
届将上列算法中WHILE语句改为WHILE 循环次数这时在程序中要增加循环变量的设定和运算。
判断高斯塞德尔迭代收敛的方法与判断雅可比迭代收敛类似,一方面从高斯-塞德尔迭代矩阵获取信息,当或的某种范数时,迭代收敛;另一方面,直接根据方程组系数矩阵的特点作出判断。
定理4.5若方程组系数矩阵A为列或行对角优时,则高斯塞德尔迭代收敛。
定理4.6若方程组系数矩阵A为对称正定阵,则高斯塞德尔迭代收敛。
例4.3方程组中,,证明当时Gauss-Seidel法收敛,而Jacobi迭代法只在时才收敛。
解:对法,因为是对称矩阵,因此只要证时正定即可,由顺序主子得而得于是得到时故对称正定,法收敛。
对法,可根据定理4.2,由于迭代矩阵即是法收敛的充要条件,故法只在时才收敛。
当时,法收敛,而,法不收敛,此时不是正定的。
4.3 逐次超松弛(SOR)迭代法逐次超松弛迭代计算方程组的雅可比迭代形式记其中是下三角矩阵,是上三角矩阵。
得高斯-塞德尔的迭代形式:记,有这样可视为的修正量,而恰是由加修正量而得,如果将改为)加上修正量乘一个因子,迭代格改为:整理得(4.8)这里为修正因子,称为松弛因子,而式(4.8)称为松弛迭代。
迭代的分量形式为(4.9)式(4.9)称为松弛迭代的计算格式。
例4.4给定方程组用SOR法求解,取解:用SOR迭代公式可得取初始值:如果用高斯-赛德尔迭代法迭代72次得:用SOR迭代法,只须迭代25次即得:逐次超松弛迭代算法下列算法假定迭代矩阵收敛,否则要在WHILE循环中增加判断条件。
1.定义和输入系数矩阵与常数项向量的元素,输入松弛因子的值。
2.FOR i:=1,2,…,n// 假定,形成常数项向量FOR}3.4. WHILE;}ENDWHILE5.输出.松弛迭代矩阵将式(4.9)中含有与的项分别放在方程两边:用代入上式,有则松弛因子为的迭代矩阵为其中定理4.7逐次超松弛迭代收敛的必要条件。
定理4.8若为正定矩阵,则当时,逐次超松弛迭代恒收敛。
以上定理给出了逐次超松弛迭代因子的范围。
对于每个给定的方程组,确定究竟取多少为最佳,这是比较困难的问题,对某些特定的方程组,我们可以得到一些理论结果。
通常,把的迭代称为亚松弛迭代,把的迭代称为高斯-塞德尔迭代,而把的迭代称为松弛迭代。
4.4 逆矩阵计算在线性代数中逆矩阵是按其伴随矩阵定义的,若则方阵可逆,且,其中为的伴随矩阵。
要计算个阶的列式才能得到一个伴随矩阵,在数值计算中因其计算工作量大而不被采用。
通常对做行的初等的效换,在将化成的过程中得到。
在数值计算中,这仍然是一种行之有效的方法。
由逆矩阵的定义令,有化为个方程组j是第个分量为1,其余分量为0的维向量。
或记为:。
用直接法或迭代法算出也就完成了逆矩阵计算。
如果依次对用高斯若尔当消元法,组合起来看有(当然也能组合起来做):这正是在线性代数中用初等变换计算逆矩阵的方法。
由此可见,计算一个阶逆矩阵的工作量相当于解个线性方程组。
在数值计算中常常将计算矩阵逆的问题转化为解线性方程组的问题。
例如,已知方阵和向量有迭代关系式,在计算中不是先算出,再作与的乘积得到;而将作为线性方程组系数矩阵,求解方程组作为常驻数项解出。
4.5程序示例程序4.1用雅可比迭代求解方程组:算法描述输入系数矩阵及常数项向量c。