清华大学高等数值分析实验设计及答案
数值分析(清华大学出版社)第二章课后答案

1.用Gauss 消去法解方程组⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤---⎢⎢⎢⎢⎣⎡-551631011411014211264321x x x x 解:第一步:交换第三行和第一行,得到如下矩阵⎥⎥⎥⎥⎦⎤----⎢⎢⎢⎢⎣⎡-56153101111402411621做运算()22121E E E →⎪⎭⎫ ⎝⎛+-,()33161E E E →⎪⎭⎫⎝⎛+-,()()441E E E →+,得到增广矩阵 ⎥⎥⎥⎥⎦⎤------⎢⎢⎢⎢⎣⎡0249525213237414210001 第二步:再做运算()3322E E E →+,()44221E E E →⎪⎭⎫⎝⎛+-,得到如下矩阵 ⎥⎥⎥⎥⎦⎤-----⎢⎢⎢⎢⎣⎡94295292113377400210001第三步:做运算()4433713E E E →⎪⎭⎫⎝⎛+,得到 ⎥⎥⎥⎥⎦⎤------⎢⎢⎢⎢⎣⎡21342951919210377400210001利用回代公式求得.790576.0,361257.0,863874.0,115183.11234=-==-=x x x x2、解 2.51 1.48 4.531.480.93 1.302.68 3.041.48⎡⎤⎢⎥-⎢⎥⎢⎥-⎣⎦123x x x ⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦=0.051.030.53⎡⎤⎢⎥⎢⎥⎢⎥-⎣⎦ 做两次换行()()()()↔↔3132;E E E E 得2.683.04 1.42.511.48 4.531.480.931.30⎡⎤-⎢⎥⎢⎥⎢⎥-⎣⎦123x x x ⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦=0.530.051.03⎡⎤-⎢⎥⎢⎥⎢⎥⎣⎦ 计算()()()()-+→-+→1221330.93657;0.55224;E E E E E E2.683.04 1.481.3672 5.916100.748810.48269⎡⎤-⎢⎥-⎢⎥⎢⎥--⎣⎦123x x x ⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦=0.530.546381.3227⎡⎤-⎢⎥⎢⎥⎢⎥⎣⎦计算()()-+→2330.54770;E E E2.683.04 1.4801.36725.9161003.7229⎡⎤-⎢⎥-⎢⎥⎢⎥-⎣⎦123x x x ⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦=0.530.546381.0235⎡⎤-⎢⎥⎢⎥⎢⎥⎣⎦ 换行和消去到此结束,经回代计算得到x =()1.440360, 1.577963,0.27494T--3.用Doolittle 三角分解方法解方程组⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡----551631011411014211264321x x x x解:首先对系数矩阵A 做分解LUA =解出:解b y L=,计算出Ty ⎪⎭⎫ ⎝⎛--=74213,521,1,6解y x U=,计算出()T x 115183.1,863874.0,361257.0,790576.0--=4.设][,ij n n a A R A =∈⨯,011≠a ,b Ax =经过高斯消去法一步后变为)2()2(b x A =,其中=)2(A⎥⎦⎤⎢⎣⎡21110A a a T ,(2)A =()(2),2n ij i j a =为(n-1)⨯(n-1)矩阵.其元素为(2)ija =(1)ij a -(1)(1)11i j a a /(1)11a , ,i j =2,3, n. 证明:(1)若A 对称正定,则2A 是对称矩阵。
清华大学第五版【数值分析】习题答案

第一章 绪论(1)1.设0x >,x 的相对误差为δ,求ln x 的误差。
解:近似值*x 的相对误差为*****r e x x e x x δ-=== 而ln x 的误差为()1ln *ln *ln **e x x x e x =-≈ 进而有(ln *)x εδ≈2.设x 的相对误差为2%,求nx 的相对误差。
解:设()n f x x =,则函数的条件数为'()||()p xf x C f x = 又1'()n f x nx-=, 1||n p x nx C n n-⋅∴== 又((*))(*)r p r x n C x εε≈⋅且(*)r e x 为2((*))0.02n r x n ε∴≈3.下列各数都是经过四舍五入得到的近似数,即误差限不超过最后一位的半个单位,试指出它们是几位有效数字:*1 1.1021x =,*20.031x =, *3385.6x =, *456.430x =,*57 1.0.x =⨯ 解:*1 1.1021x =是五位有效数字; *20.031x =是二位有效数字; *3385.6x =是四位有效数字; *456.430x =是五位有效数字; *57 1.0.x =⨯是二位有效数字。
4.利用公式(2.3)求下列各近似值的误差限:(1) ***124x x x ++,(2) ***123x x x ,(3) **24/x x . 其中****1234,,,x x x x 均为第3题所给的数。
解:*41*32*13*34*151()1021()1021()1021()1021()102x x x x x εεεεε-----=⨯=⨯=⨯=⨯=⨯***124***1244333(1)()()()()1111010102221.0510x x x x x x εεεε----++=++=⨯+⨯+⨯=⨯ ***123*********123231132143(2)()()()()1111.10210.031100.031385.610 1.1021385.6102220.215x x x x x x x x x x x x εεεε---=++=⨯⨯⨯+⨯⨯⨯+⨯⨯⨯≈**24****24422*4335(3)(/)()()110.0311056.430102256.43056.43010x x x x x x xεεε---+≈⨯⨯+⨯⨯=⨯=5计算球体积要使相对误差限为1,问度量半径R 时允许的相对误差限是多少? 解:球体体积为343V R π=则何种函数的条件数为23'4343p R V R R C V R ππ===(*)(*)3(*)r p r r V C R R εεε∴≈=又(*)1r V ε=故度量半径R 时允许的相对误差限为1(*)10.333r R ε=⨯≈6.设028Y =,按递推公式1n n Y Y -=(n=1,2,…)计算到100Y 27.982≈(5位有效数字),试问计算100Y 将有多大误差?解:1n n Y Y -=-10099Y Y ∴=-9998Y Y =9897Y Y =-……10Y Y =-依次代入后,有1000100Y Y =-即1000Y Y =27.982, 100027.982Y Y ∴=-*310001()()(27.982)102Y Y εεε-∴=+=⨯100Y ∴的误差限为31102-⨯。
清华大学高等数值分析_第二次实验作业

清华大学高等数值分析课程作业第二次实验 作业第一题:构造例子特征值全部在右半平面时,观察基本的Arnoldi 方法和GMRES 方法的数值性态,和相应重新启动算法的收敛性。
答:1、计算初始条件1) 矩阵A 的生成根据实Schur 分解,构造矩阵如下形式11112222/2/2/2/2n nA n n n n ⨯-⎛⎫ ⎪ ⎪ ⎪- ⎪= ⎪ ⎪ ⎪- ⎪⎪⎝⎭其中,A 由n/2个块形成,每个对角块具有如下形式,对应一对特征向量i i i αβ+ii i i A αββα-⎛⎫= ⎪⎝⎭、 这里,取n=1000,得到矩阵A 。
经过验证,A 的特征值分布均在右半平面,如下图所示50100150200250300350400450500-500-400-300-200-1000100200300400500复平面中A 的特征值分布情况实部 Im(x)虚部 R e (x )特征值2) b 的初值为 b=(1,1,1,1..1)T 3) 迭代初值为 x 0=0 4) 停机准则为 ε=10-62、基本的Arnoldi 和GMRES 方法代入前面提到的初始值A 、b 、x0,得到的收敛结果如下10020030040050060010-710-610-510-410-310-210-110两种基本算法的||r k ||收敛曲线 (阶数n=1000)迭代次数||r k ||/||b ||基本的Arnoldi 算法基本的GMRES 算法结果讨论:从图中可以看出,基本的Arnoldi 方法经过554步收敛,基本的GMRES 方法经过535步收敛。
这是由于GMRES 具有残差最优性,会略快于Arnoldi 方法,但是,由于两种方法的基本原理近似,GMRES 方法不会实质性的提速。
此外,从收敛曲线上看,由于特征值均处在右半平面,收敛曲线平滑,收敛速度(收敛因子)比较均匀。
3、重启动的GMRES 和Arnoldi 算法对上述A 、b 、x0使用重启动的Arnoldi 和GMRES 算法。
数值分析实验报告-清华大学--线性代数方程组的数值解法

数值分析实验报告-清华大学--线性代数方程组的数值解法(总15页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--线性代数方程组的数值解法实验1. 主元的选取与算法的稳定性问题提出:Gauss 消去法是我们在线性代数中已经熟悉的。
但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保Gauss 消去法作为数值算法的稳定性呢?Gauss 消去法从理论算法到数值算法,其关键是主元的选择。
主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。
实验内容:考虑线性方程组 n n n R b R A b Ax ∈∈=⨯,,编制一个能自动选取主元,又能手动选取主元的求解线性方程组的Gauss 消去过程。
实验要求:(1)取矩阵⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=1415157,6816816816 b A ,则方程有解T x )1,,1,1(* =。
取n=10计算矩阵的条件数。
让程序自动选取主元,结果如何?(2)现选择程序中手动选取主元的功能。
每步消去过程总选取按模最小或按模尽可能小的元素作为主元,观察并记录计算结果。
若每步消去过程总选取按模最大的元素作为主元,结果又如何?分析实验的结果。
(3)取矩阵阶数n=20或者更大,重复上述实验过程,观察记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在消去过程中的作用。
(4)选取其他你感兴趣的问题或者随机生成矩阵,计算其条件数。
重复上述实验,观察记录并分析实验结果。
程序清单n=input('矩阵A 的阶数:n=');A=6*diag(ones(1,n))+diag(ones(1,n-1),1)+8*diag(ones(1,n-1),-1); b=A*ones(n,1);p=input('计算条件数使用p-范数,p='); cond_A=cond(A,p) [m,n]=size(A);Ab=[A b];r=input('选主元方式(0:自动;1:手动),r=');Abfor i=1:n-1switch rcase(0)[aii,ip]=max(abs(Ab(i:n,i)));ip=ip+i-1;case (1)ip=input(['第',num2str(i),'步消元,请输入第',num2str(i),'列所选元素所处的行数:']);end;Ab([i ip],:)=Ab([ip i],:);aii=Ab(i,i);for k=i+1:nAb(k,i:n+1)=Ab(k,i:n+1)-(Ab(k,i)/aii)*Ab(i,i:n+1);end;if r==1Abendend;x=zeros(n,1);x(n)=Ab(n,n+1)/Ab(n,n);for i=n-1:-1:1x(i)=(Ab(i,n+1)-Ab(i,i+1:n)*x(i+1:n))/Ab(i,i);endx运行结果(1)n=10,矩阵的条件数及自动选主元Cond(A,1) =×103Cond(A,2) = ×103Cond(A,inf) =×103程序自动选择主元(列主元)a.输入数据矩阵A的阶数:n=10计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=0b.计算结果x=[1,1,1,1,1,1,1,1,1,1]T(2)n=10,手动选主元a. 每步消去过程总选取按模最小或按模尽可能小的元素作为主元矩阵A 的阶数:n=10计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=1(1)(1)61786115[]861158614A b ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦第1步消元,请输入第1列所选元素所处的行数:1(2)(2) 6.0000 1.00007.00004.6667 1.0000 5.66678.0000 6.000015.0000[]8.00001.000015.00006.0000 1.00008.0000 6.0000 1.000015.00008.0000 6.000014.0000A b ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦第2步消元,请输入第2列所选元素所处的行数:2…(实际选择时,第k 步选择主元处于第k 行) 最终计算得x=[, , , , , , , , , ]Tb. 每步消去过程总选取按模最大的元素作为主元 矩阵A 的阶数:n=10计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=1(1)(1)61786115[]861158614A b ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦第1步消元,请输入第1列所选元素所处的行数:2(2)(2)8.0000 6.0000 1.000015.0000-3.50000.7500-4.250008.0000 6.0000 1.000015.0000[]8.0000 6.000015.00008.0000 1.00006.0000 1.000015.00008.0000 6.000014.0000A b ⎡⎤⎢⎥-⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦第2步消元,请输入第2列所选元素所处的行数:3…(实际选择时,第k 步选择主元处于第k+1行) 最终计算得x=[1,1,1,1,1,1,1,1,1,1]T(3)n=20,手动选主元a. 每步消去过程总选取按模最小或按模尽可能小的元素作为主元 矩阵A 的阶数:n=20计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=1(1)(1)61786115[]861158614A b ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦第1步消元,请输入第1列所选元素所处的行数:1(2)(2) 6.0000 1.00007.00004.6667 1.0000 5.66678.0000 6.000015.0000[]8.00001.000015.00006.0000 1.00008.0000 6.0000 1.000015.00008.0000 6.000014.0000A b ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦第2步消元,请输入第2列所选元素所处的行数:2…(实际选择时,第k 步选择主元处于第k 行) 最终计算得x=[,,,,,,,,,,,,,,,,,,,]T b. 每步消去过程总选取按模最大的元素作为主元 矩阵A 的阶数:n=20计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=1(1)(1)61786115[]861158614A b ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦第1步消元,请输入第1列所选元素所处的行数:2(2)(2)8.0000 6.0000 1.000015.0000-3.50000.7500-4.250008.0000 6.0000 1.000015.0000[]8.0000 6.000015.00008.0000 1.00006.0000 1.000015.00008.0000 6.000014.0000A b ⎡⎤⎢⎥-⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦第2步消元,请输入第2列所选元素所处的行数:3…(实际选择时,第k步选择主元处于第k+1行)最终计算得x=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]T(4)A分别为幻方矩阵,Hilbert矩阵,pascal矩阵和随机矩阵简要分析计算(1)表明:对于同一矩阵,不同范数定义的条件数是不同的;Gauss消去法在消去过程中选择模最大的主元能够得到比较精确的解。
数值分析第5版课后习题答案(清华大学出版社)-第一章

′ e * ( f1 ) = f1 e * (1.4) =
对于 f 2 = (3 − 2 2 ) 3 ,
1 1 ′ e * ( f 2 ) = f 2 e * (1.4) = 6(3 − 2 × 1.4) 2 × × 10 −1 = 0.12 × 10 −1 < × 10 −1 ,没有有效数 2 2 字;
*
1 1 1 = (0.031 × 385.6) × 10 − 4 + (1.1021 × 385.6) × 10 −3 + (1.1021 × 0.031) × 10 −3 ; 2 2 2 −3 −3 −3 = 0.59768 × 10 + 212.48488 × 10 + 0.01708255 × 10 = 213.09964255 × 10 −3 = 0.21309964255
′ PAP −1 Px Ax PAx ′ 6、证明: A max = = max = max = ′ Px Px x PAP −1 。
7、证明:由范数的等价性,存在常数 C1 和 C 2 ,使得 C1 x s ≤ x t ≤ C 2 x s ,则有
C1 Ax s ≤ Ax t ≤ C 2 Ax s ,并且
∂f e (x + x + x ) = ∑ k =1 ∂x k
* * 1 * 2 * 4
n
* * * * ε ( x k ) = ε ( x1 ) + ε ( x 2 ) + ε ( x 4 ) ;
*
=
1 1 1 × 10 − 4 + × 10 −3 + × 10 −3 = 1.05 × 10 −3 2 2 2
y 0 = 1.41 1 可知, ε * ( y 0 ) = × 10 − 2 , y n − y n = 10( y n −1 − y n −1 ) ,即 2 y n = 10 y n −1 − 1
清华大学数值分析实验报告

数值分析实验报告一、 实验3。
1 题目:考虑线性方程组b Ax =,n n R A ⨯∈,n R b ∈,编制一个能自动选取主元,又能手动选取主元的求解线性代数方程组的Gauss 消去过程。
(1)取矩阵⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=6816816816 A ,⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=1415157 b ,则方程有解()T x 1,,1,1*⋯=。
取10=n 计算矩阵的条件数。
分别用顺序Gauss 消元、列主元Gauss 消元和完全选主元Gauss 消元方法求解,结果如何?(2)现选择程序中手动选取主元的功能,每步消去过程都选取模最小或按模尽可能小的元素作为主元进行消元,观察并记录计算结果,若每步消去过程总选取按模最大的元素作为主元,结果又如何?分析实验的结果。
(3)取矩阵阶数n=20或者更大,重复上述实验过程,观察记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在消去过程中的作用.(4)选取其他你感兴趣的问题或者随机生成的矩阵,计算其条件数,重复上述实验,观察记录并分析实验的结果。
1. 算法介绍首先,分析各种算法消去过程的计算公式, 顺序高斯消去法:第k 步消去中,设增广矩阵B 中的元素()0k kk a ≠(若等于零则可以判定系数矩阵为奇异矩阵,停止计算),则对k 行以下各行计算()(),1,2,,k ikik k kka l i k k n a ==++,分别用ik l -乘以增广矩阵B 的第k 行并加到第1,2,,k k n ++行,则可将增广矩阵B 中第k 列中()k kka 以下的元素消为零;重复此方法,从第1步进行到第n-1步,则可以得到最终的增广矩阵,即()()(),n n n B Ab ⎡⎤=⎣⎦; 列主元高斯消去法:第k 步消去中,在增广矩阵B 中的子方阵()()()()k kkkknk k nknn a a a a ⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦中,选取()k k i k a 使得()(k)max k k i k ik k i na a ≤≤=,当k i k ≠时,对B 中第k 行与第k i 行交换,然后按照和顺序消去法相同的步骤进行。
清华大学高等数值分析_第三次作业答案

高等数值分析第三章作业参考答案1.考虑线性方程组Ax=b,其中A是对称正定矩阵.用Galerkin原理求解方程K=L=Span(v),这里v是一个固定的向量.e0=x∗−x0,e1=x∗−x1证明(e1,Ae1)=(e0,Ae0)−(r,v)2/(Av,v),(∗)其中r=b−Ax0.v应当取哪个向量在某种意义上是最佳的?证明.令x1=x0+αv,那么r1=r−αAv,e1=e0−αv.由Galerkin原理,有(r1,v)=0,因此α=(r,v)/(Av,v).注意到r1=Ae1,r=Ae,有(Ae1,v)=0.于是(e1,Ae1)=(e0−αv,Ae1)=(e0,Ae1)=(e0,Ae0)−α(e0,Av)=(e0,Ae0)−α(r,v)即(∗)式成立.由(∗)式知当v=e0时, e1 A=0最小,即近似解与精确解的误差在A范数意义下最小,算法一步收敛(但是实际中这个v不能精确找到);在最速下降意义下v=r时最佳.2.求证:考虑线性方程组Ax=b,其中A是对称正定矩阵.取K=L=Span(r,Ar).用Galerkin方法求解,其中r是上一步的残余向量.(a)用r和满足(r,Ap)=0的p向量构成K中的一组基.给出计算p的公式.解.设p=r+αAr,(r,Ap)=0等价于(Ar,p)=0.解得α=−(Ar,r)/(Ar,Ar).(b)写出从x0到x1的计算公式.解.设x1=x0+β1r+β2p,那么r1=r−β1Ar−β2Ap,再由Galerkin原理,有(r1,r)=(r1,p)=0,解得β1=(r,r)/(Ar,r),β2=(r,p)/(Ap,p).(c)该算法收敛吗?解.该算法可描述为:(1)选初始x0∈R n,计算初始残差r0=b−Ax0,ε>0为停机准则;(2)对k=0,1,2,...直到 r k <εαk=−(r k,Ar k) (Ar k,Ar k);p k=r k+αAr k;βk=(r k,r k) (Ar k,r k);γk=(r k,p k) (Ap k,p k);r k+1=r k−βk Ar k−γk Ap k;x k+1=x k+βk r k+γk p k.此算法本质上是由CG迭代一步就重启得到的,所以是收敛的,下面给出证法.设用此算法得到的x k+1=x k+¯p1(A)r k,那么e k+1 A=minp1∈P1e k+p1(A)r k A≤ e k+¯p1(A)r k A= e k−¯p1(A)Ae k A≤max1≤i≤n|˜p(λi)| e k A其中0<λ1≤...≤λn为A的特征值,˜p(t)=1−t¯p1(t)是过(0,1)点的二次多项式.当˜p满足˜p(λ1)=˜p(λn)=−˜p(λ1+λn2)时可使max1≤i≤n|˜p(λi)|达到最小.经计算可得min ˜p max1≤i≤n|˜p(λi)|≤(λ1−λn)2(λ1−λn)2+8λ1λn<1故若令κ=λ1/λn,则e k+1 A≤(κ−1)2κ2+6κ+1e k A,方法收敛.3.考虑方程组D1−F−E−D2x1x2=b1b2,其中D1,D2是m×m的非奇异矩阵.取L1=K1=Span{e1,e2,···,e m},L2= K2=Span{e m+1,e m+2,···,e n}.依次用(L1,K1),(L2,K2)按讲义46和47页公式Az∗=r0r0−Az m⊥LW T AV y m=W T r0x m=x0+V(W T AV)−1W T r0各进行一步计算.写出一个程序不断按这个方法计算下去,并验证算法收敛性.用L i=AK i重复上述各步骤.解.对任意给定x0=x(0)1x(0)2,令r=b−Ax0,V1=[e1,e2,...,e m],V2=[e m,e m+1,...,e n].对L i=K i情形,依次用(L1,K1),(L2,K2)各进行一步计算:(L1,K1)(L2,K2)z(1) 1=V1y1z(2)1=V2y2r0−Az(1)1⊥L1r0−Az(2)1⊥L2(V T1AV1)y1=V T1r0,D1y1=V T1r0(V T2AV2)y2=V T2r0,−D2y2=V T2r0x(1)1=x(1)+V1D−11V T1r0x(2)1=x(2)−V2D−12V T2r0得如下算法:(1)选初始x0∈R n,计算初始残差r0=b−Ax0,ε>0为停机准则;(2)对k=1,2,...直到 r k <ε求解D1y1=r k−1(1:m);求解−D2y2=r k−1(m+1:n);x k=x k−1+V1y1+V2y2;r k=r k−1−AV1y1−AV2y2.收敛性:r k=r k−1−AD−11−D−12rk−1=0−F D−12ED−11rk−1Br k−1算法收敛⇔ρ(B)<1⇔ρ(ED−11F D−12)<1.对L i=AK i情形,依次用(L1,K1),(L2,K2)各进行一步计算:(L1,K1)(L2,K2)z(1) 1=V1y1∈K1z(2)1=V2y2∈K2r0−Az(1)1⊥L1=AK1r0−Az(2)1⊥L2=AK2(V T1A T AV1)y1=V T1A T r0(V T2A T AV2)y2=V T2A T r0(D T1D1+E T E)y1=V T1A T r0(D T2D2+F T F)y2=V T2A T r0x(1) 1=x(1)+(D T1D1+E T E)−1V T1A T r0x(2)1=x(2)+(D T2D2+F T F)−1V T2A T r0得如下算法:(1)选初始x0∈R n,计算初始残差r0=b−Ax0,ε>0为停机准则;(2)对k=1,2,...直到 r k <ε求解(D T1D1+E T E)y1=(A T r k−1)(1:m);求解(D T2D2+F T F)y2=(A T r k−1)(m+1:n);x k=x k−1+V1y1+V2y2;r k=r k−1−AV1y1−AV2y2.收敛性:r k=r k−1−A(D T1D1+E T E)−1(D T2D2+F T F)−1A T rk−1(I−B)r k−1算法收敛⇔ρ(I−B)<1⇔0<λ(B)<2.4.令A=3−2−13−2...............−2−13,b=1...2用Galerkin原理求解Ax=b.取x0=0,V m=W m=(e1,e2,···,e m).对不同的m,观察 b−Ax m 和 x m−x∗ 的变化,其中x∗为方程的精确解.解.对于 b−Ax m 和 x m−x∗ ,都是前n−1步下降趋势微乎其微,到第n步突然收敛。
清华大学贾仲孝老师高等数值分析第二次实验

高等数值分析第二次实验作业Tl・构造例子特征值全部在右半平面时,观察基本的Arnold!方法和GMRES方法的数值性态,和相应重新启动算法的收敛性.Answer:(1)构造特征值均在右半平面的矩阵A:根据实Schur分解,构造对角矩阵D由n个块形成,每个对角块具有如下形式,对应一对特征值a - ± ip t£ 2 ⑴5,=lA e丿这样D=diag(Si,S2,S3……SJ矩阵的特征值均分布在右半平面。
生成矩阵A=U T AU,其中U为正交阵,则A矩阵的特征值也均在右半平面。
不妨构造A如下所示:1 -11 12 -22 2n/2 -〃/2n/2 n/2由于选择初值与右端项:xO=zeros(2*N, l);b=ones(2*N t l);则生成矩阵A的过程代码如下所示:N=500 %生成八为2N阶A=zeros(2*X);for a=l:NA(2*a-112*a-1)=a;A(2*a-L.2*a)=-a;A(2*a,2*a-l)=a;A(2*a,2*a) =a;endU = orth(rand(2*N.2*N));Al = IT 林*U;(2)观察基本的Arnoldi和GMRES方法编写基本的Arnold!函数与基本GMRES函数,具体代码见附录。
Function [x,rm,flag]=Arnoldi(A f b t xO,tol,m)function [x t rm,flag]=GMRES(A t b t xO,tol.m)输入:A为方程组系数矩阵,b为右端项,xO为初值,tol为停机准则,m为人为限制的最大步数。
输出:x为方程的解,nn为残差向虽,flag为解是否收敛的标志。
外程序如下所示: e=le-6; m=700; tic[xA,rmA t flagA]=Arnoldi (A 1, b, xO t e.m); toe tic[xG,rmG.flagG]=GMRES(Al,b,x0,e,m); toesubplot(1,2,1); semi logy(rmA)title(r /\rnoldiE O A 2 u I R ') xlabel (r p u z u 2 Vi E y k*) ylabelC log(| | rk |)') subplot(1,2,2); semi logy(rmG)title(r GMRESE 6 A 2 u I R ') xlabel (r p u z u 2 Vi E y k*) ylabelC log(| |rk| |)') 得到:waa迭代次数 546526运行时间(s)Arnold"攵敛曲线10?f --------------------- ■------------------- l101 :\10° : 102101•1-2 o1 1 (-¥--) 60-10200 400 迭代步数k 600 >方法ArnoldiGMRES10°=亘)60200 400 迭代步数k600GMRES 收敛曲线得到两种方法的收敛曲线如上所示,将计算结果整理在下表中:结果讨论:1.从图中可以看出,基本的Arnoldi方法经过546步收敛,基本的GMRES方法经过526步收敛,基本的GMRES收敛速度会略烘于基本的Arnoldi方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
高等数值分析实验一
工物研13 成彬彬2004310559
一.用CG,Lanczos和MINRES方法求解大型稀疏对称正定矩阵Ax=b
作实验中,A是利用A= sprandsym(S,[],rc,3)随机生成的一个对称正定阵,S是1043阶的一个稀疏阵
A= sprandsym(S,[],0.01,3);
检验所生成的矩阵A的特征如下:
rank(A-A')=0 %即A=A’,A是对称的;
rank(A)=1043 %A满秩
cond(A)= 28.5908 %A是一个“好”阵
1.CG方法
利用CG方法解上面的线性方程组
[x,flag,relres,iter,resvec] = pcg(A,b,1e-6,1043);
结果如下:
Iter=35,表示在35步时已经收敛到接近真实x
relres= norm(b-A*x)/norm(b)= 5.8907e-007为最终相对残差
绘出A的特征值分布图和收敛曲线:
S=svd(A); %绘制特征值分布
subplot(211)
plot(S);
title('Distribution of A''s singular values');;
xlabel('n')
ylabel('singular values')
subplot(212); %绘制收敛曲线
semilogy(0:iter,resvec/norm(b),'-o');
title('Convergence curve');
xlabel('iteration number');
ylabel('relative residual');
得到如下图象:
为了观察CG方法的收敛速度和A的特征值分布的关系,需要改变A的特征值:
(1).研究A的最大最小特征值的变化对收敛速度的影响
在A的构造过程中,通过改变A= sprandsym(S,[],rc,3)中的参数rc(1/rc为A的条件数),可以达到改变A的特征值分布的目的:
通过改变rc=0.1,0.0001得到如下两幅图
以上三种情况下,由收敛定理2.2.2计算得到的至多叠代次数分别为:48,14和486,由于上实验结果可以看出实际叠代次数都比上限值要小较多。
由以上三图比较可以看出,A的条件数越大,即A的最大最小特征值的差别越大,叠代所需要的步骤就越多,收敛越慢。
(2)研究A的中间特征值的分布对于收敛特性的影响:
为了研究A的中间特征值的分布对收敛速度的影响,进行了如下实验:
固定A的条件数,即给定A的最大最小特征值,改变中间特征值得分布,再来生成A,具体的实现方法是,先将原来的生成A进行特征值分解:
[U,S]=svd(A);
靠近最小特征值,得到对角阵C1。
再通过如下命令得到经处理后的矩阵A3:
A3=U*C1*U’;
对A3重新利用CG方法求解线性方程组得到如下结果图:
当他们都更靠近最小特征值时,结果如下:
靠近最大特征值,得到对角阵C2。
再通过如下命令得到经处理后的矩阵A4:
A4=U*C2*U’;
对A4重新利用CG方法求解线性方程组得到如下结果图:
当他们都更靠近最大特征值时,结果如下:
从以上实验基本可以得出以下结论,A的中间特征的分布对收敛速度的影响是很大的,其影响规律可以总结为:当中间特征值越靠近两头时,也就是说集中到一端时,收敛速度越快,当中间特征值的分布越对称时,收敛速度越慢,这里只能给出实验结果,还没能从数学理论上证明结论的正确性,尚待商讨。
2.Lanczos方法
自己编制Lanczos方法的程序如下:
clear
load A%A is the same as in the CG Method
b=ones(length(A),1);
bn=norm(b);
q(:,1)=zeros(length(b),1);q(:,2)=b/bn;
r(:,1)=b;bata=1;
for k=(1:length(b)) %Realize k-step Lanczos process
r(:,k+1)=A*q(:,k+1)-bata*q(:,k);
alfa=q(:,k+1)'*r(:,k+1);
r(:,k+1)=r(:,k+1)-alfa*q(:,k+1);
rm=norm(r(:,k+1));
if(rm>1e-6)
bata=rm;
q(:,k+2)=r(:,k+1)/bata;
end
e(k)=norm(eye(k)-q(:,2:k+1)'*q(:,2:k+1));
T=q(:,2:k+1)'*A*q(:,2:k+1); %Construct Tk
T1=svd(T);
if (T1(k)>1e-12) %T is not singular
t=inv(T);
rn(k)=t(k,1)*bata; %The relative residual is lie on the
if abs(rn(k))<3e-6 %Last element of inv(T)'s first column
yk=t(:,1)*bn; %Once reach the required precision,stop
break %and calculate yk,then x.
end
end
end
x=q(:,2:k+1)*yk;
semilogy(e);
程序运行及调试情况:一开始将残量rn定义在1e-6时认为收敛,结果发现程序收敛不了,单步运行时发现执行到k=33时残量就开始一直增大,跟踪Tk发现这时它已经和三对角阵误差很大,例如有些本来应改为0的元素已经达到1e-6的量级,再要求最终结果精度在1e-6就不现实了。
如果强制将Tk转化为三对角(即,把该为0的地方清0),则不会出现这种情况,结果收敛。
也就是说该程序达不到任意期望的精度。
不过运行时发现程序执行的时间比直接用inv(A)*b命令的执行时间还是要短的,虽然不知道此命令使用什么方法解的,但是说明Lanczos方法的执行效率还是很高。
解得如下结果(收敛曲线):可看出曲线后面参量已经开始上跳。
3.MINRES方法:
程序如下:
[x,flag,relres,iter,resvec] = minres(A,b,1e-6,1043);
semilogy(0:iter,resvec/norm(b),'-o');
title('Convergence curve');
xlabel('iteration number');
ylabel('relative residual');
绘得的收敛曲线如下:
二.当b是由A的部分特征向量生成时,三种方法的收敛情况:[U S]=svd(A); %对A进行特征值分解
n=10;
C=rand(n,1); %随机生成向量C
b=U(:,1:n)*C; %构造b由A的前n个特征相量生成
(1).CG的结果如下:三幅图分别对应n=10,100,1000的情况
(2)Lanczos的结果为:
以下三幅图分别对应n=10,100,1000的收敛曲线
下面的四幅图是念0,100,1000和原来的一般情况下norm(I-Q(k)’*Q(k)随k的增长情况,由图中可以看出,当n较大和在原来的情况下,Q(k)已经和一个正交阵相差较远,即k 较大时,它的各列已不能看成是正交的。
(3).MINRES方法的结果为:
结论:
由各种方法的结果均可以看出,当b由A的n个特征相量生成时,CG收敛性明显较好,并且n越小越好,当n接近A的阶数时,叠代次数趋向于一般情况.
三.利用三种方法解对称不定A的线性方程组,给出收敛曲线。
还是利用上述的1043阶的矩阵A,对它进行特征值分解后,修改它的特征值为有正有负后,再构造新的A。
[U,S]=svd(A); %对A特征值分解
g=10; %通过g可以改变负特征值的位置
for(i=1:5) %同过igai变特征值的个数
S(g+i,g+i)=-S(g+i,g+i);
end
A=U*S*U'; %重新构建A
(1). CG运行结果:
b=ones(length(A),1)时,
方法很快中断,不能够得到方程的解,如下图所示:
当b由A的10个特征相量构成时,方法能够得到方程的解:如下图
用CG方法解对称不定方程时,可能发生中断,而得不到方程的解。
所以CG方法对于对称不定方程不能普遍适用。
(2). Lanczos方法:
用Lanczos方法解对称不定方程,残量会产生振荡收敛的情况,振荡点代表Tk接近奇异,图中有5个振荡峰,这是由于A有5个负的特征值造成的,这说明Lanczos方法在解对称不定方程时不时最优的,没有使残量单调下降.
(3).MINRES方法
可以看出,解对称不定方程的MINRES方法的残量是单调下降的。
下面构造A只有5个不同的特征值,其中有2个是负的,以验证结论:当A只有k个不同的特征值时,MINRES方法至多k步找到准确解:。