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中用memcached来减少数据库查询次数的教程
Apr 07 Python
Python爬虫实现(伪)球迷速成
Jun 10 Python
Python基于分析Ajax请求实现抓取今日头条街拍图集功能示例
Jul 19 Python
pip安装py_zipkin时提示的SSL问题对应
Dec 29 Python
python面向对象法实现图书管理系统
Apr 19 Python
给我一面国旗 python帮你实现
Sep 30 Python
将python包发布到PyPI和制作whl文件方式
Dec 25 Python
python numpy数组复制使用实例解析
Jan 10 Python
python实现输入三角形边长自动作图求面积案例
Apr 12 Python
基于python连接oracle导并出数据文件
Apr 28 Python
通过Python扫描代码关键字并进行预警的实现方法
May 24 Python
浅析Python的命名空间与作用域
Nov 25 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 header函数使用教程
2013/09/05 PHP
php多任务程序实例解析
2014/07/19 PHP
php写入数据到CSV文件的方法
2015/03/14 PHP
php+ajax实现的点击浏览量加1
2015/04/16 PHP
WordPress中重置文章循环的rewind_posts()函数讲解
2016/01/11 PHP
php简单实现单态设计模式的方法分析
2017/07/28 PHP
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
JavaScript使用过程中需要注意的地方和一些基本语法
2010/08/26 Javascript
JScript分割字符串示例代码
2013/09/04 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
IE8下String的Trim()方法失效的解决方法
2013/11/08 Javascript
纯JavaScript代码实现移动设备绘图解锁
2015/10/16 Javascript
JavaScript函数学习总结以及相关的编程习惯指南
2015/11/16 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
Angular 4 依赖注入学习教程之FactoryProvider的使用(四)
2017/06/04 Javascript
vue实现手机号码抽奖上下滚动动画示例
2017/10/18 Javascript
用p5.js制作烟花特效的示例代码
2018/03/21 Javascript
解决vue router组件状态刷新消失的问题
2018/08/01 Javascript
浅谈Vue数据响应思路之数组
2018/11/06 Javascript
vue-cli3+ts+webpack实现多入口多出口功能
2019/05/30 Javascript
layui实现数据表格点击搜索功能
2020/03/26 Javascript
JavaScript 继承 封装 多态实现及原理详解
2019/07/29 Javascript
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
2013/01/17 Python
Python实现的生成自我描述脚本分享(很有意思的程序)
2014/07/18 Python
Python使用scrapy采集数据过程中放回下载过大页面的方法
2015/04/08 Python
Python反射的用法实例分析
2018/02/11 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
Python如何计算语句执行时间
2019/11/22 Python
python编程的核心知识点总结
2021/02/08 Python
Zipadee-Zip襁褓过渡毯:Sleeping Baby
2018/12/30 全球购物
员工工作及收入证明
2014/10/28 职场文书
2014年学生会个人工作总结
2014/11/07 职场文书
试用期解除劳动合同通知书
2015/04/16 职场文书
反腐倡廉心得体会2016
2016/01/13 职场文书
Python中异常处理用法
2021/11/27 Python
Python编写冷笑话生成器
2022/04/20 Python