北航生医数值分析学习心得4

从这章开始就更有数值计算那味了,上一章本质上还是求精确解(方法上),从这章开始的迭代就是取一个初值然后给定一个迭代的规则不断更新下一步操作的初值最终逼近解。从这里可以看出这部分几个关键点,我们怎么设置这个所谓“迭代规则”,为了最终能逼近最终解,用数分的话说这边需要收敛,所以我们一会得讨论收敛条件,都能收敛时候,迭代的不同算法我们还能看看那个收敛快,就可以讨论收敛速度了。

本章包括三种迭代算法:雅可比迭代,高斯赛德尔迭代和SOR超松弛迭代。但是怎么说,这种方式比较适合计算机计算,手算的话成本还是比较大,也挺容易算错的,实在要算建议用分量迭代格式算会更容易理解一点,比如要求解,就把它改写成。复习的重点放在得到矩阵A后把不同算法下的B表示出来,然后判断能否收敛,以及给定精度估计几次能收敛到范围内是比较重要的。从推导过程上看,雅可比迭代法其实还是很朴素的,就是把对角线元素留在左边,其余部分移到右边作为迭代算式,所以ppt里的DLU矩阵怎么来的就比较好理解了,也好理解为什么L和U矩阵里都是负的参数,因为之后都移项到右边了。如果理解这个过程也不必纠结这边,还是挺容易写出来B的表达式的(毕竟D是对角矩阵,这个逆还是很好求的)。G-S迭代法相比雅可比迭代法不同的地方是虽然二者都把与迭代元素无关的值都移到右边,但是雅可比迭代法用的所有值都是上一次迭代的结果,而G-S法的使用值是更新的,用矩阵看的话就是U矩阵两者是一样的,但是L矩阵G-S是使用迭代后值的所以是乘在这边,这时候的逆会难算不少。松驰法就感觉没有那么直接的分解含义了,更像是基于G-S法的一种调参。

讨论完如何构造迭代,下一个就是判断收敛情况了,这边推导过程不赘述了,ppt讲解还是很详细的,就大致说说我对这几个推论的理解吧,关于推论1说的是如果矩阵的某个范数小于1就能判断它收敛(所以通常我们简单算一下1范数或无穷范数,如果正好有小于1 的就完事了),不过要注意的是某个范数大于1也并不能说明这个发散,还是得回归谱半径讨论。推论2是一个必要条件,意思也很明确了,就是收敛一定在这范围内,不是说在这范围内就一定收敛,毕竟直观来说G-S法(w=1)也有发散的。

不过后面的三个推论还是比较常用的,第一条说的是如果观察到A(注意是原矩阵A而不是迭代矩阵B)为严格对角占优或不可约弱对角占优(这边的不可约最开始没在意,查了一下还挺复杂的,具体判断得用到强连通图,是离散数学的东西了,不过实际操作没太多0基本都是不可约的,感兴趣的给大家附个知乎链接什么是不可约矩阵? - 知乎),所以大家具体操作看看是否对角占优,如果符合条件雅可比和G-S都是收敛的;第二三条针对松弛法来说了,如果是严格对角占优,则松弛法在收敛;如果A为对称正定阵,则松弛法收敛充分必要条件是.(注意这边无法判断雅可比收敛情况)。另外说一下这三定理下一页ppt那个例子有同学可能疑问为什么A连弱对角占优都算不上,这边提一下,因为弱对角占优允许有等号,但要求至少有一个大于号,而这边三个都取等号了,所以不符合。(北航出版社教材有证明)

最后再给大家简单提几个小结论吧,比较适合做小题。第一个依然是针对原矩阵A来说,如果A对称,且对角元,则解线性方程组Ax=b的雅可比迭代法收敛的充分必要条件是A2D-A均为正定矩阵,其中(其实2D-AA就是对角线元素不变,其余变相反数);第二个是SOR的一个小结论,在多数情况我们希望得到SOR的最佳松弛因子,某些特殊矩阵类型有

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是利用Python编写的程序,实现了上述要求: ``` import matplotlib.pyplot as plt # 18级成绩分布 labels18 = ['优秀', '良好', '中等', '及格', '不及格'] sizes18 = [3, 18, 20, 12, 7] # 19级成绩分布 labels19 = ['优秀', '良好', '中等', '及格', '不及格'] sizes19 = [4, 20, 21, 10, 4] # 绘制18级成绩分布饼图 plt.figure(figsize=(6, 6)) plt.pie(sizes18, labels=labels18, autopct='%1.1f%%') plt.title('18级该课程成绩分布百分比') plt.show() # 绘制19级成绩分布饼图 plt.figure(figsize=(6, 6)) plt.pie(sizes19, labels=labels19, autopct='%1.1f%%') plt.title('19级该课程成绩分布百分比') plt.show() # 绘制两个年级的成绩分布百分比对比直方图 x = ['18级优秀', '18级良好', '18级中等', '18级及格', '18级不及格', '19级优秀', '19级良好', '19级中等', '19级及格', '19级不及格'] y = sizes18 + sizes19 plt.figure(figsize=(10, 6)) plt.bar(x, y) plt.title('两个年级该课程成绩分布百分比对比') plt.xlabel('成绩分布') plt.ylabel('人数') plt.show() ``` 程序注释如下: 1. 导入 matplotlib.pyplot 库,用于绘制图形。 2. 定义18级成绩分布饼图的标签和比例。 3. 定义19级成绩分布饼图的标签和比例。 4. 绘制18级成绩分布饼图,设置图形大小,使用 plt.pie() 函数绘制饼图,设置标签和自动计算百分比,并设置图形标题,最后展示图形。 5. 绘制19级成绩分布饼图,与上一步类似。 6. 定义两个年级的成绩分布对比直方图的 x 和 y 轴数据。 7. 绘制两个年级的成绩分布对比直方图,设置图形大小,使用 plt.bar() 函数绘制直方图,设置标题、标签和坐标轴,最后展示图形。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值