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 相关文章推荐
py中的目录与文件判别代码
Jul 16 Python
学习python处理python编码问题
Mar 13 Python
python登陆asp网站页面的实现代码
Jan 14 Python
Python实现计算文件夹下.h和.cpp文件的总行数
Apr 23 Python
Python及Django框架生成二维码的方法分析
Jan 31 Python
python 阶乘累加和的实例
Feb 01 Python
Django文件存储 自己定制存储系统解析
Aug 02 Python
Python使用itchat 功能分析微信好友性别和位置
Aug 05 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
Oct 11 Python
python的链表基础知识点
Sep 13 Python
Python实现石头剪刀布游戏
Jan 20 Python
python基础入门之普通操作与函数(三)
Jun 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
破解.net程序(dll文件)编译和反编译方法
2013/01/31 PHP
php动态生成函数示例
2014/03/21 PHP
PHP按行读取文件时删除换行符的3种方法
2014/05/04 PHP
一个非常完美的读写ini格式的PHP配置类分享
2015/02/12 PHP
javascript 禁止复制网页
2009/06/11 Javascript
javascript 表单验证常见正则
2009/09/28 Javascript
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
用Javascript评估用户输入密码的强度实现代码
2011/11/30 Javascript
IE6中链接A的href为javascript协议时不在当前页面跳转
2014/06/05 Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
2014/08/30 Javascript
node.js中的buffer.length方法使用说明
2014/12/14 Javascript
JavaScript纯色二维码变成彩色二维码
2020/07/23 Javascript
完美解决浏览器跨域的几种方法(汇总)
2017/05/08 Javascript
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
全面解析vue router 基本使用(动态路由,嵌套路由)
2018/09/02 Javascript
JavaScript实现数字前补“0”的五种方法示例
2019/01/03 Javascript
vue路由缓存的几种实现方式小结
2020/02/02 Javascript
vue实现员工信息录入功能
2020/06/11 Javascript
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
Python数据类型详解(二)列表
2016/05/08 Python
python 重定向获取真实url的方法
2018/05/11 Python
python实现批量解析邮件并下载附件
2018/06/19 Python
解决PyCharm的Python.exe已经停止工作的问题
2018/11/29 Python
Python常用爬虫代码总结方便查询
2019/02/25 Python
Python3.7 pyodbc完美配置访问access数据库
2019/10/03 Python
详解HTML5之pushstate、popstate操作history,无刷新改变当前url
2017/03/15 HTML / CSS
Tessabit日本:集世界奢侈品和设计师品牌的意大利精品买手店
2020/01/07 全球购物
如何手工释放资源
2013/12/15 面试题
公司联欢晚会主持词
2014/03/22 职场文书
护理专科学生自荐书
2014/07/05 职场文书
股东合作协议书
2014/09/12 职场文书
群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2015年社区民政工作总结
2015/04/21 职场文书
党小组意见范文
2015/06/08 职场文书
校长新学期致辞
2015/07/30 职场文书
Java处理延时任务的常用几种解决方案
2022/06/01 Java/Android