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判断列表的连续数字范围并分块的方法
Nov 16 Python
解决Python下imread,imwrite不支持中文的问题
Dec 05 Python
python3 实现的对象与json相互转换操作示例
Aug 17 Python
Python进程间通信 multiProcessing Queue队列实现详解
Sep 23 Python
Python shutil模块用法实例分析
Oct 02 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
Oct 17 Python
简单了解Pandas缺失值处理方法
Nov 16 Python
python对指定字符串逆序的6种方法(小结)
Apr 02 Python
使用Python实现微信拍一拍功能的思路代码
Jul 09 Python
Python 处理日期时间的Arrow库使用
Aug 18 Python
图解Python中深浅copy(通俗易懂)
Sep 03 Python
基于Python的身份证验证识别和数据处理详解
Nov 14 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 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
PHP图片处理类 phpThumb参数用法介绍
2012/03/11 PHP
PHP如何利用P3P实现跨域
2013/08/24 PHP
yii插入数据库防并发的简单代码
2017/05/27 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
PHP正则验证字符串是否为数字的两种方法并附常用正则
2019/02/27 PHP
Yii框架分页技术实例分析
2019/08/30 PHP
PHP 实现链式操作
2021/03/09 PHP
jquery操作select详解(取值,设置选中)
2014/02/07 Javascript
JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
2014/08/16 Javascript
JavaScript制作简单分页插件
2016/09/11 Javascript
js控制div层的叠加简单方法
2016/10/15 Javascript
easyui-combobox 实现简单的自动补全功能示例
2016/11/08 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
2017/06/12 Javascript
Vim快速合并行及vim 将文件所有行合并到一行
2017/11/27 Javascript
jQuery实现的页面详情展开收起功能示例
2018/06/11 jQuery
浅谈Fetch 数据交互方式
2018/12/20 Javascript
浅谈vue异步数据影响页面渲染
2019/10/29 Javascript
[05:06]TI4西雅图DOTA2前线报道 海涛密探LGD训练
2014/07/09 DOTA
[00:56]跨越时空加入战场 全新祈求者身心“失落奇艺侍祭”展示
2019/07/20 DOTA
opencv3/C++ 平面对象识别&透视变换方式
2019/12/11 Python
Tensorflow设置显存自适应,显存比例的操作
2020/02/03 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
德国最大的网上鞋店之一:Schuhe24.de
2017/06/10 全球购物
美体小铺美国官网:The Body Shop美国
2017/11/10 全球购物
Wiggle新西兰:自行车、跑步、游泳
2020/05/06 全球购物
一份比较全的PHP面试题
2016/07/29 面试题
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
九州传奇上机题
2014/07/10 面试题
接受捐赠答谢词
2014/01/27 职场文书
八一建军节营销活动方案
2014/08/31 职场文书
出纳年终工作总结2014
2014/12/05 职场文书
大学生自荐材料范文
2014/12/30 职场文书
瞿秋白纪念馆观后感
2015/06/10 职场文书
Mysql事务索引知识汇总
2022/03/17 MySQL
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
2022/12/24 HTML / CSS