共轭梯度法(Conjugate Gradient)是介于最速下降法与牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hesse矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是解大型非线性最优化最有效的算法之一。

这里初始化A为对角线元素全为2且横纵坐标差值绝对值为1时为-1的矩阵,b为全1矩阵,求解x

算法实现过程:

import numpy as np
A = np.zeros((100, 100))
for i in range(100): #generate Afor j in range(100):if (i == j):A[i, j] = 2if (abs(i - j) == 1):A[i, j] = A[j, i] = -1
b = np.ones((100, 1))  #generate b
print("Conjugate Gradient x:")
x=np.zeros((100,1)) # 初始值x0r=b-np.dot(A,x)
p=r  #p0=r0
#while np.linalg.norm(np.dot(A, x) - b) / np.linalg.norm(b) >= 10 ** -6:
for i in range(100):r1=ra=np.dot(r.T,r)/np.dot(p.T,np.dot(A,p))x = x + a * p    #x(k+1)=x(k)+a(k)*p(k)r=b-np.dot(A,x)  #r(k+1)=b-A*x(k+1)q = np.linalg.norm(np.dot(A, x) - b) / np.linalg.norm(b)if q<10**-6:breakelse:beta=np.linalg.norm(r)**2/np.linalg.norm(r1)**2p=r+beta*p  #p(k+1)=r(k+1)+beta(k)*p(k)print(x)
print("done Conjugate Gradient!")

python实现共轭梯度法相关推荐

  1. python在法律中的应用_Python在共轭梯度法中的运用

    共轭梯度法一个重要的优化算法,今天小编就来带大家看看共轭梯度法在Python中是如何实现的. 共轭梯度法是介于最速下降法与牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点, ...

  2. 二维泊松方程数值解-五点差分法-共轭梯度法-python实现

    松方程有很多现成的工具可以用,这里主要是为了加深对算法的理解.题目如下 题目的要点在于找到泊松方程的系数矩阵.在五点法里面,系数矩阵一共五条对角线,一条主对角线,四条副对角线.碰到边界的时候有的对角线 ...

  3. python怎么取共轭_python实现共轭梯度法

    共轭梯度法是介于最速下降法与牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hesse矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有 ...

  4. python:共轭梯度法(以希尔伯特矩阵为例)

    共轭梯度法(以希尔伯特矩阵为例) 实现共轭梯度算法并且使用它解决对称矩阵--希尔伯特矩阵为系数矩阵A时,右边常数项列向量为单位列向量,初始点为零向量.展示维度分别为5,8,12,20时的迭代次数与结果 ...

  5. python开发系列

    python基础教程 python基础系列教程--Python的安装与测试:python解释器.PyDev编辑器.pycharm编译器 python基础系列教程--Python库的安装与卸载 pyth ...

  6. python 非线性规划_自动驾驶运动规划-Hybird A*算法(续)

    Hybird A*算法保证生成的路径是车辆可实际行驶的,但它仍然包含很多不必要的车辆转向操作,我们可以对其进行进一步的平滑和优化. Objective Function 对于Hybird A*生成的车 ...

  7. scipy实现的共轭梯度法以及相关原理图解

    首先整理下两个概念: Definition:given that u,v∈Rnu,v∈R^nu,v∈Rn,then uuu and vvv are said to be mutually orthog ...

  8. python原理书籍_python书籍推荐:《深入浅出深度学习:原理剖析与Python实践》

    在过去的这十年,深度学习已经席卷了整个科技界和工业界,2016年谷歌阿尔法狗打败围棋世界冠军李世石,更是使其成为备受瞩目的技术焦点. 今日,小编就为大家推荐一本能让初学者和"老司机" ...

  9. el-select 多选取值_数值优化|笔记整理(3)——线搜索中的步长选取方法,线性共轭梯度法...

    上一节笔记传送门: 学弱猹:数值优化|笔记整理(2)--线搜索:步长选取条件的收敛性​zhuanlan.zhihu.com ------------------------------------ 大 ...

最新文章

  1. 山海经鸿蒙手游iOS 版本,山海经鸿蒙异兽iOS版
  2. python3.8.5 run-Python 3.8.0 正式版发布,新特性初体验
  3. ScalaTour-1.基础
  4. 自己动手写web服务器一(浏览器的访问信息)
  5. excel在线_功能强大的纯前端 Excel 在线表格: Luckysheet
  6. Tizen有用的网站
  7. 利用 Hexo + Github 搭建自己的博客
  8. linux cp通同时新建目录_Linux 新手应该知道的 26 个命令
  9. Python中字符串格式化输出的学习笔记
  10. 实例6 函数的返回值
  11. 博客园园龄,还有比我老的吗?
  12. MATLAB简介与基础知识
  13. 为什么正定矩阵等于转置_正定矩阵
  14. 三级等保测评,如何通过验收
  15. R语言——(四)、数据读入与预处理
  16. android-长度单位-解析
  17. thinkphp 分页样式
  18. ocx找不到指定模块
  19. 推荐一款有趣的APP-种子习惯
  20. struct2json API 文档,s2j库(c语言与json互转)

热门文章

  1. 如何在Apple CarPlay中使用Google Maps进行导航
  2. stream对象集合按照时间进行排序
  3. linux 详解邮件服务器
  4. android自带下拉阻尼动画,Android实现简单的下拉阻尼效应示例代码
  5. Linux socket下read函数详解
  6. 有沃更精彩,沃课堂理想的移动学习平台
  7. Scrapy爬虫项目——阿里文学当当网
  8. 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛(A E F )
  9. javascript模块化的前世今生
  10. JavaScript(六)