国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python中黃金分割法實現方法

2019-11-25 17:32:10
字體:
來源:轉載
供稿:網友

本文實例講述了python中黃金分割法實現方法。分享給大家供大家參考。具體實現方法如下:

''' a,b = bracket(f,xStart,h)  Finds the brackets (a,b) of a minimum point of the  user-supplied scalar function f(x).  The search starts downhill from xStart with a step  length h.  x,fMin = search(f,a,b,tol=1.0e-6)  Golden section method for determining x that minimizes  the user-supplied scalar function f(x).  The minimum must be bracketed in (a,b).'''    from math import log, ceildef bracket(f,x1,h):  c = 1.618033989   f1 = f(x1)  x2 = x1 + h; f2 = f(x2) # Determine downhill direction and change sign of h if needed  if f2 > f1:    h = -h    x2 = x1 + h; f2 = f(x2)   # Check if minimum between x1 - h and x1 + h    if f2 > f1: return x2,x1 - h  # Search loop  for i in range (100):      h = c*h    x3 = x2 + h; f3 = f(x3)    if f3 > f2: return x1,x3    x1 = x2; x2 = x3    f1 = f2; f2 = f3  print "Bracket did not find a mimimum"    def search(f,a,b,tol=1.0e-9):  nIter = int(ceil(-2.078087*log(tol/abs(b-a)))) # Eq. (10.4)  R = 0.618033989  C = 1.0 - R # First telescoping  x1 = R*a + C*b; x2 = C*a + R*b  f1 = f(x1); f2 = f(x2) # Main loop  for i in range(nIter):    if f1 > f2:      a = x1      x1 = x2; f1 = f2      x2 = C*a + R*b; f2 = f(x2)    else:      b = x2      x2 = x1; f2 = f1      x1 = R*a + C*b; f1 = f(x1)  if f1 < f2: return x1,f1  else: return x2,f2

希望本文所述對大家的Python程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 治多县| 息烽县| 项城市| 旅游| 保德县| 广安市| 黎城县| 盐津县| 宝鸡市| 开封县| 荔波县| 赤壁市| 清新县| 扎兰屯市| 子长县| 堆龙德庆县| 孟村| 信阳市| 崇左市| 内黄县| 鞍山市| 石屏县| 望奎县| 南郑县| 土默特右旗| 温泉县| 巴彦淖尔市| 囊谦县| 于都县| 合阳县| 上思县| 祥云县| 霸州市| 蒲江县| 靖远县| 江陵县| 琼中| 叙永县| 揭西县| 成都市| 云南省|