python实现共轭梯度法
共轭梯度法(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实现共轭梯度法相关推荐
- python在法律中的应用_Python在共轭梯度法中的运用
共轭梯度法一个重要的优化算法,今天小编就来带大家看看共轭梯度法在Python中是如何实现的. 共轭梯度法是介于最速下降法与牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点, ...
- 二维泊松方程数值解-五点差分法-共轭梯度法-python实现
松方程有很多现成的工具可以用,这里主要是为了加深对算法的理解.题目如下 题目的要点在于找到泊松方程的系数矩阵.在五点法里面,系数矩阵一共五条对角线,一条主对角线,四条副对角线.碰到边界的时候有的对角线 ...
- python怎么取共轭_python实现共轭梯度法
共轭梯度法是介于最速下降法与牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hesse矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有 ...
- python:共轭梯度法(以希尔伯特矩阵为例)
共轭梯度法(以希尔伯特矩阵为例) 实现共轭梯度算法并且使用它解决对称矩阵--希尔伯特矩阵为系数矩阵A时,右边常数项列向量为单位列向量,初始点为零向量.展示维度分别为5,8,12,20时的迭代次数与结果 ...
- python开发系列
python基础教程 python基础系列教程--Python的安装与测试:python解释器.PyDev编辑器.pycharm编译器 python基础系列教程--Python库的安装与卸载 pyth ...
- python 非线性规划_自动驾驶运动规划-Hybird A*算法(续)
Hybird A*算法保证生成的路径是车辆可实际行驶的,但它仍然包含很多不必要的车辆转向操作,我们可以对其进行进一步的平滑和优化. Objective Function 对于Hybird A*生成的车 ...
- scipy实现的共轭梯度法以及相关原理图解
首先整理下两个概念: Definition:given that u,v∈Rnu,v∈R^nu,v∈Rn,then uuu and vvv are said to be mutually orthog ...
- python原理书籍_python书籍推荐:《深入浅出深度学习:原理剖析与Python实践》
在过去的这十年,深度学习已经席卷了整个科技界和工业界,2016年谷歌阿尔法狗打败围棋世界冠军李世石,更是使其成为备受瞩目的技术焦点. 今日,小编就为大家推荐一本能让初学者和"老司机" ...
- el-select 多选取值_数值优化|笔记整理(3)——线搜索中的步长选取方法,线性共轭梯度法...
上一节笔记传送门: 学弱猹:数值优化|笔记整理(2)--线搜索:步长选取条件的收敛性zhuanlan.zhihu.com ------------------------------------ 大 ...
最新文章
- 山海经鸿蒙手游iOS 版本,山海经鸿蒙异兽iOS版
- python3.8.5 run-Python 3.8.0 正式版发布,新特性初体验
- ScalaTour-1.基础
- 自己动手写web服务器一(浏览器的访问信息)
- excel在线_功能强大的纯前端 Excel 在线表格: Luckysheet
- Tizen有用的网站
- 利用 Hexo + Github 搭建自己的博客
- linux cp通同时新建目录_Linux 新手应该知道的 26 个命令
- Python中字符串格式化输出的学习笔记
- 实例6 函数的返回值
- 博客园园龄,还有比我老的吗?
- MATLAB简介与基础知识
- 为什么正定矩阵等于转置_正定矩阵
- 三级等保测评,如何通过验收
- R语言——(四)、数据读入与预处理
- android-长度单位-解析
- thinkphp 分页样式
- ocx找不到指定模块
- 推荐一款有趣的APP-种子习惯
- struct2json API 文档,s2j库(c语言与json互转)