python共轭梯度法特征值迭代次数讨论
共轭梯度法,特征值聚堆情况下迭代次数讨论
输入各种特征值聚堆与分散时的矩阵,并应用共轭梯度法,观察迭代次数与聚堆情况的关系。
因为对角矩阵的对角线元素为其特征值,则用对角矩阵讨论较为方便
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | import numpy as np def cg(x0, A, b): r0 = np.dot(A, x0) - b p0 = - r0 rk = r0 pk = p0 xk = x0 t = 0 #记录迭代次数 while np.linalg.norm(rk) > = 1e - 6 : rr = np.dot(rk.T, rk) ak = rr / np.dot(np.dot(pk.T, A), pk) xk = xk + ak * pk rk = rk + ak * np.dot(A, pk) bk = np.dot(rk.T, rk) / rr pk = - rk + bk * pk t + = 1 return xk, t #输入列表,生成以列表为对角元素的对角矩阵 def Diagonal_matrix(D): n = len (D) diag = np.zeros((n,n)) for i in range (n): diag[i][i] = D[i] return diag #矩阵对角线元素 D_1 = [ 1 , 1 , 1 , 1 , 1 , 6 , 7 , 8 , 9 , 10 ] D_2 = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ] D_3 = [ 0.8 , 0.9 , 1 , 1.1 , 1.2 , 6 , 7 , 8 , 9 , 10 ] D_4 = [ 1 - 2 * 1e - 7 , 1 - 1e - 7 , 1 , 1 + 1e - 7 , 1 + 2 * 1e - 7 , 6 , 7 , 8 , 9 , 10 ] D_5 = [ 1 , 1 , 1 , 2 , 2 , 2 , 3 , 3 , 3 , 10 ] #初始值 x0 = np.zeros(( 10 , 1 )) b = np.ones(( 10 , 1 )) #生成对角矩阵 diag1 = Diagonal_matrix(D_1) diag2 = Diagonal_matrix(D_2) diag3 = Diagonal_matrix(D_3) diag4 = Diagonal_matrix(D_4) diag5 = Diagonal_matrix(D_5) #共轭梯度法迭代 x_1, n_1 = cg(x0, diag1, b) x_2, n_2 = cg(x0, diag2, b) x_3, n_3 = cg(x0, diag3, b) x_4, n_4 = cg(x0, diag4, b) x_5, n_5 = cg(x0, diag5, b) n = [n_1, n_2, n_3, n_4, n_5] #输出 for i in range ( 5 ): print ( '矩阵' ,i + 1 , '的迭代次数为: ' , n[i])<br type = "_moz" > |
矩阵1,前5个元素聚堆且都为相同元素
矩阵2,特征值分散
矩阵3,前5个特征值聚堆,但是最大差为0.4 ,而cg法精度为1e-6
矩阵4,前5个特征值聚堆,且相差最大小于1e-6
矩阵5,三聚堆
输出:
分析:
- 聚堆特征值可看作一个特征值
- 特征值差小于迭代精度时被看作聚堆
- 例如矩阵5,前三个对角元素看作一个,4-6元素看作一个,7-9看作一个 一共4个元素,则需要迭代4次
以上就是python共轭梯度法特征值迭代次数讨论的详细内容,更多关于python共轭梯度法迭代的资料请关注脚本之家其它相关文章!

微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
相关文章
Windows下Python使用Pandas模块操作Excel文件的教程
Pandas是一个强大的Python数据分析模块,这里我们先使用ANACONDA来帮助获取Pandas所以来的一些环境,然后来初步学习Windows下Python使用Pandas模块操作Excel文件的教程2016-05-05使用pyinstaller打包PyQt4程序遇到的问题及解决方法
今天小编就为大家分享一篇使用pyinstaller打包PyQt4程序遇到的问题及解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2019-06-06解决python问题 Traceback (most recent call&n
这篇文章主要介绍了解决python问题 Traceback (most recent call last),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-12-12
最新评论