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

首頁 > 編程 > Python > 正文

python中黃金分割法實現方法

2020-02-23 01:06:32
字體:
來源:轉載
供稿:網友

本文實例講述了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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙里县| 长沙市| 尼玛县| 伊宁市| 渝中区| 新源县| 瓦房店市| 云梦县| 灵宝市| 苏尼特左旗| 宜宾县| 杭锦后旗| 玉门市| 渭南市| 石台县| 从化市| 汝州市| 儋州市| 塘沽区| 湖南省| 镇坪县| 隆子县| 泸西县| 双峰县| 桐柏县| 河间市| 溆浦县| 石渠县| 泸溪县| 鞍山市| 镇雄县| 治县。| 铁力市| 抚宁县| 珲春市| 滁州市| 平远县| 夏津县| 宁南县| 清苑县| 冷水江市|