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基础教程之popen函数操作其它程序的输入和输出示例
Feb 10 Python
Python中字典映射类型的学习教程
Aug 20 Python
Python爬虫爬取美剧网站的实现代码
Sep 03 Python
Python实现的求解最小公倍数算法示例
May 03 Python
Python hashlib常见摘要算法详解
Jan 13 Python
Tensorflow 卷积的梯度反向传播过程
Feb 10 Python
浅谈Pytorch torch.optim优化器个性化的使用
Feb 20 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
Aug 17 Python
详解anaconda离线安装pytorchGPU版
Sep 08 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
Nov 17 Python
用python对excel进行操作(读,写,修改)
Dec 25 Python
Python作用域和名称空间的详细介绍
Apr 13 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 获得汉字拼音首字母的函数
2009/08/01 PHP
PHP eval函数使用介绍
2013/12/08 PHP
PHP模块memcached使用指南
2014/12/08 PHP
php导出生成word的方法
2015/12/25 PHP
PHP依赖注入原理与用法分析
2018/08/21 PHP
基于jquery的一行代码轻松实现拖动效果
2010/12/28 Javascript
Jquery中的层次选择器与find()的区别示例介绍
2014/02/20 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
2014/08/11 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
jQuery实现的手机发送验证码倒计时效果代码分享
2015/08/24 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
jquery实现简单的瀑布流布局
2016/12/11 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
JS实现给json数组动态赋值的方法示例
2020/03/19 Javascript
使用json-server简单完成CRUD模拟后台数据的方法
2018/07/12 Javascript
解决Js先触发失去焦点事件再执行点击事件的问题
2018/08/30 Javascript
vue如何安装使用Quill富文本编辑器
2018/09/21 Javascript
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
详解小程序中h5页面onShow实现及跨页面通信方案
2019/05/30 Javascript
详解Vue中的MVVM原理和实现方法
2020/07/15 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
2020/08/08 Javascript
利用Django内置的认证视图实现用户密码重置功能详解
2017/11/24 Python
Jupyter中直接显示Matplotlib的图形方法
2018/05/24 Python
Flask Web开发入门之文件上传(八)
2018/08/17 Python
使用Python求解带约束的最优化问题详解
2020/02/11 Python
Python中私有属性的定义方式
2020/03/05 Python
appium+python adb常用命令分享
2020/03/06 Python
Python reversed函数及使用方法解析
2020/03/17 Python
pyautogui自动化控制鼠标和键盘操作的步骤
2020/04/01 Python
用HTML5 Canvas API中的clearRect()方法实现橡皮擦功能
2016/03/15 HTML / CSS
为你的html5网页添加音效示例
2014/04/03 HTML / CSS
Shopee印度尼西亚:东南亚与台湾市场最大电商平台
2018/06/17 全球购物
学习《中小学教师职业道德规范》心得体会
2016/01/18 职场文书
golang如何去除多余空白字符(含制表符)
2021/04/25 Golang
《模拟人生4》推出新补丁 “婚礼奇缘”DLC终于得到修复
2022/04/03 其他游戏
PostgreSQL基于pgrouting的路径规划处理方法
2022/04/18 PostgreSQL