python实现最速下降法


Posted in Python onMarch 24, 2020

本文实例为大家分享了python实现最速下降法的具体代码,供大家参考,具体内容如下

代码:

from sympy import *
import numpy as np
def backtracking_line_search(f,df,x,x_k,p_k,alpha0):
  rho=0.5
  c=10**-4
  alpha=alpha0
  replacements1=zip(x,x_k)
  replacements2=zip(x,x_k+alpha*p_k)
  f_k=f.subs(replacements1)
  df_p=np.dot([df_.subs(replacements1) for df_ in df],p_k)
  while f.subs(replacements2)>f_k+c*alpha*df_p:
    alpha=rho*alpha
    replacements2 = zip(x, x_k +alpha * p_k)
  return alpha
def stepest_line_search(f,x,x0,alpha0):
  df = [diff(f, x_) for x_ in x]
  x_k=x0
  alpha=alpha0
  replacements=zip(x,x_k)
  len_df = sqrt(np.sum([df_.subs(replacements) ** 2 for df_ in df]))
  while len_df>1e-6:
    p_k=-1*np.array([df_.subs(replacements) for df_ in df])
    alpha = backtracking_line_search(f, df, x, x_k, p_k, alpha)
    x_k=x_k+alpha*p_k
    replacements = zip(x, x_k)
    len_df=np.sum([df_.subs(replacements)**2 for df_ in df])
  return x_k
if __name__=="__main__":
  init_printing(use_unicode=True)
  x1 = symbols("x1")
  x2 = symbols("x2")
  x = np.array([x1, x2])
  f = 100 * (x2 - x1 ** 2)**2 + (1 - x1) ** 2
  ans=stepest_line_search(f, x, np.array([1.2, 1]), 1)
  print "the minimal value in point:",ans

分析:

这个采用的是backtracking line search来寻找alpha。

python实现最速下降法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python解析xml文件实例分享
Dec 04 Python
Python 3.x 连接数据库示例(pymysql 方式)
Jan 19 Python
Python 2与Python 3版本和编码的对比
Feb 14 Python
Python实现学生成绩管理系统
Apr 05 Python
用于业余项目的8个优秀Python库
Sep 21 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
Nov 06 Python
Python面向对象基础入门之编码细节与注意事项
Dec 11 Python
Django web框架使用url path name详解
Apr 29 Python
python使用Pandas库提升项目的运行速度过程详解
Jul 12 Python
Python pip配置国内源的方法
Feb 14 Python
python 画条形图(柱状图)实例
Apr 24 Python
Python 文字识别
May 11 Python
python实现梯度法 python最速下降法
Mar 24 #Python
PyQt5+Pycharm安装和配置图文教程详解
Mar 24 #Python
python实现梯度下降法
Mar 24 #Python
pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)
Mar 25 #Python
pycharm通过anaconda安装pyqt5的教程
Mar 24 #Python
详解PyQt5信号与槽的几种高级玩法
Mar 24 #Python
Windows10+anacond+GPU+pytorch安装详细过程
Mar 24 #Python
You might like
一段php加密解密的代码
2006/10/09 PHP
PHP中spl_autoload_register函数的用法总结
2013/11/07 PHP
完美解决thinkphp验证码出错无法显示的方法
2014/12/09 PHP
php使用fullcalendar日历插件详解
2019/03/06 PHP
JavaScript 继承机制的实现(待续)
2010/05/18 Javascript
3款实用的在线JS代码工具(国外)
2012/03/15 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
2016/07/09 Javascript
微信小程序本作用域下调用全局JS详解及实例
2017/02/22 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
移动设备手势事件库Touch.js使用详解
2017/08/18 Javascript
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
一份超级详细的Vue-cli3.0使用教程【推荐】
2018/11/15 Javascript
利用jquery和BootStrap实现动态滚动条效果
2018/12/03 jQuery
35个最好用的Vue开源库(史上最全)
2019/01/03 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
2019/04/25 Javascript
vue中img src 动态加载本地json的图片路径写法
2019/04/25 Javascript
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
2020/09/29 Javascript
[50:38]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第二场 3月7日
2021/03/11 DOTA
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
Python中防止sql注入的方法详解
2017/02/25 Python
详解通过API管理或定制开发ECS实例
2018/09/30 Python
在linux系统下安装python librtmp包的实现方法
2019/07/22 Python
Django urls.py重构及参数传递详解
2019/07/23 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
Python爬取某平台短视频的方法
2021/02/08 Python
Python绘制K线图之可视化神器pyecharts的使用
2021/03/02 Python
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
聚网科技C++面试笔试题
2015/09/01 面试题
安全责任书范文
2014/08/25 职场文书
汽车服务工程专业自荐信
2014/09/02 职场文书
乡镇领导干部个人对照检查材料思想汇报
2014/09/23 职场文书
体育个人工作总结
2015/02/09 职场文书
淘宝客服专员岗位职责
2015/04/07 职场文书
SpringBoot深入分析讲解监听器模式下
2022/07/15 Java/Android