python實現(xiàn)最速下降法
更新時間:2020年03月24日 14:22:49 作者:zcc_TPJH
這篇文章主要為大家詳細介紹了python實現(xiàn)最速下降法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了python實現(xiàn)最速下降法的具體代碼,供大家參考,具體內容如下
代碼:
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中sqllite插入numpy數(shù)組到數(shù)據庫的實現(xiàn)方法
本文給大家介紹python中sqllite插入numpy數(shù)組到數(shù)據庫的實現(xiàn)方法,在文章底部給大家提到了Python 操作sqlite數(shù)據庫及保存查詢numpy類型數(shù)據的實例代碼,需要的朋友參考下吧2021-06-06python利用thrift服務讀取hbase數(shù)據的方法
今天小編就為大家分享一篇python利用thrift服務讀取hbase數(shù)據的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12昨晚我用python幫隔壁小姐姐P證件照然后發(fā)現(xiàn)
大家好,我是Lex 喜歡欺負超人那個Lex 建議大家收藏哦,以后幫小姐姐P自拍,證件照,調尺寸,背景,摳圖,直接10行代碼搞定,瞬間高大上2021-08-08