python实现最速下降法
作者:zcc_TPJH 时间:2023-08-10 18:19:51
本文实例为大家分享了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。
来源:https://blog.csdn.net/weixin_39881922/article/details/80540799
标签:python,最速下降法
0
投稿
猜你喜欢
Python中IPYTHON入门实例
2021-01-23 04:56:25
js自定义鼠标右键的实现原理及源码
2024-04-28 09:51:39
Python实现查找数据库最接近的数据
2024-01-21 08:27:53
在Linux下安装Oracle
2010-07-30 12:46:00
Oracle 存储过程总结(一、基本应用)
2024-01-24 22:25:53
原生js编写贪吃蛇小游戏
2023-07-02 05:19:17
pandas.DataFrame中提取特定类型dtype的列
2021-06-13 06:04:25
vue2/vue3路由权限管理的方法实例
2024-05-29 22:28:54
利用Python实现定时程序的方法
2021-04-16 08:28:04
python爬取各类文档方法归类汇总
2022-02-22 05:45:47
python 实现倒计时功能(gui界面)
2021-03-05 14:19:55
实现PHP框架系列文章(6)mysql数据库方法
2024-05-02 17:08:04
解决Node.js mysql客户端不支持认证协议引发的问题
2024-01-23 18:16:13
详解如何在python中读写和存储matlab的数据文件(*.mat)
2023-06-27 22:24:32
python将二维数组升为一维数组或二维降为一维方法实例
2023-07-25 07:51:59
对MySQL几种联合查询的通俗解释
2024-01-18 17:44:40
MySQL 的 21 个规范、优化最佳实践!
2024-01-24 13:19:29
docker上安装使用mysql镜像
2024-01-24 21:04:15
如何提高ASP的效率?
2010-06-07 20:52:00
深入了解Python的多线程基础
2021-12-07 18:50:50