清华大学高等数值分析_第二次实验作业

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二次实验作业

清华大学 高等数值分析 贾仲孝老师作业

第一题:构造例子特征值全部在右半平面时,观察基本的Arnoldi 方法和GMRES 方法的数值性态,和相应重新启动算法的收敛性。 答:

1、计算初始条件

1) 矩阵A 的生成

根据实Schur 分解,构造矩阵如下形式

11112222

/2/2/2/2n n

A n n n n ⨯-⎛⎫

⎪ ⎪ ⎪- ⎪= ⎪ ⎪ ⎪

- ⎪ ⎪⎝

⎭ 其中,A 由n/2个块形成,每个对角块具有如下形式,对应一对特征向量i i i αβ+

i

i i i A α

ββα-⎛⎫

= ⎪⎝⎭

、 这里,取n=1000,得到矩阵A 。经过验证,A 的特征值分布均在右半平面,如下图所示

50

100

150

200250300

350

400

450

500

-500-400-300-200-1000100200

300400500

复平面中A 的特征值分布情况

实部 Im(x)

虚部 R e (x )

特征值

2) b 的初值为 b=(1,1,1,1..1)T 3) 迭代初值为 x 0=0 4) 停机准则为 ε=10-6

2、基本的Arnoldi 和GMRES 方法

代入前面提到的初始值A 、b 、x0,得到的收敛结果如下

100200

300400500600

10-7

10

-6

10

-5

10

-4

10

-3

10

-2

10

-1

10

两种基本算法的||r k ||收敛曲线 (阶数n=1000)

迭代次数

||r k ||/||b ||

基本的Arnoldi 算法基本的GMRES 算法

结果讨论:从图中可以看出,基本的Arnoldi 方法经过554步收敛,基本的GMRES 方法经过535步收敛。这是由于GMRES 具有残差最优性,会略快于Arnoldi 方法,但是,由于两种方法的基本原理近似,GMRES 方法不会实质性的提速。

此外,从收敛曲线上看,由于特征值均处在右半平面,收敛曲线平滑,收敛速度(收敛因子)比较均匀。

3、重启动的GMRES 和Arnoldi 算法

对上述A 、b 、x0使用重启动的Arnoldi 和GMRES 算法。变化m 经过多次实验,得到如下结果: 1. 总迭代步长与m 之间的关系

50

100

150

9001000110012001300140015001600

170018001900两种重启算法总 迭代步长 与m 的关系曲线比较

总迭代次数

m

重启GMRES 重启Aronldi

从表中数据可以看出,结果相差并不大

2. 重启次数与m 之间的关系

50

100150

050

100

150

200

250

两种重启算法 重启次数 与m 的关系曲线比较

重启次数

m

重启GMRES 重启Aronldi

3. 计算时间与m 之间的关系

050

100150

3

3.5

4

4.5

5

5.5

重启的Arnoldi 算法 求解运行时间 与m 的关系曲线

求解运行时间(s )

m

50

100150

34

5

6

7

8

9

10

重启的GMRES 算法 求解运行时间 与m 的关系曲线

求解运行时间(s )

m

从上述结果中看到在m=40左右时,同时有求解时间和迭代总步长最小的结果。当m=40时,得到的收敛曲线结果如下图所示:

510

1520253035

10-7

10

-6

10

-5

10

-4

10

-3

10

-2

10

-1

10

两种重启算法的||r k ||收敛曲线 (m=40)

重启次数

||r k ||/||b ||

重启GMRES 重启Aronldi

200400

600800100012001400

10-7

10

-6

10

-5

10

-4

10

-3

10

-2

10

-1

10

两种重启算法的||r k ||收敛曲线 (m=40)

总迭代次数

||r k ||/||b ||

重启GMRES 重启Aronldi

160180200220

240260280300320340

10

-2

两种重启算法的||r k ||收敛曲线 (m=40)

总迭代次数

||r k ||/||b ||

重启GMRES 重启Aronldi

4. 结论

从上述结果中分析可得如下结论:

1) 对于这两种算法来说,重启动算法的总迭代步长要大于基本的算法,这个很容易理解,这

是由于在重启动时,会丢掉一些之前算过的信息,从另一个点我们认为更好(其实不一定好)的初值x0重新开始计算。

2) 这两种重启动算法,在两次重启动的交接点处都会产生不连续。GMRES 在两次重启动之间不

满足残差单调不增,然而在单次重启的内部计算过程中,则满足单调不增的原则。Arnodli 过程由于不具有残差二范数最小的性质,所以在以上两个位置处都可能会发生跳动。 3) 一般来说,重启次数随着m 的增大不断减小,当m 非常大的时候,就过度到了基本的不启动

算法。

4) 随着m 的增大,迭代总次数并不是单调下降的。重新启动的Arnoldi 方法在m=40时迭代次数

最少,重新启动的GMRES 方法m=30或40时迭代次数最少。

5) 计算代价(用运算时间估算)与m 不成线性关系,存在一个最优值,当m 大到一定程度,虽

然重启次数很小,但是每步代价很大,随着m 的进一步增加,代价逐渐增大。 6) 重启的算法如果收敛的话,代价可能会远远小于不重启的算法。但是最合适的m 的选取因问

题不同而不同,不好把握。

7) 对于同样的矩阵A ,GMRES 方法的收敛速度一般比相应的Arnoldi 方法快。这是由于其残差具

有最优性,而且在迭代步数相同的情况下,GMRES 方法的相对残差比相应的Arnoldi 方法的相对残差要小。

第二题。对于1中的矩阵,将特征值进行平移,使得实部有正有负,和1的结果进行比较,方法的收敛速度会如何?基本的Arnoldi 算法有无峰点?若有,基本的GMRES 算法相应地会怎样? 答:

1. 使用如下方法对第一题中的A 矩阵进行平移

'A A I μ=-

则得到的矩阵的特征值为'

i i λλμ=-。

2. 对第一题的A ,分别取μ=1.5、2.5、5.5、20.5、50.5、100.5、200.5、400.5、600.5、900.5、950.5,得到的

负特征值分别为1、2、5、20、50、100、200、400、600、900、950个。分别求解上述矩阵,得到的结果如下

相关文档
最新文档