本文主要是介绍0.618法(最优化方法)Python实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
def f(x):
return x ** 3 - 2 * x + 1
def solve(a, b, epsilon):
p = a + 0.382 * (b - a)
q = a + 0.618 * (b - a)
phip = f(p)
phiq = f(q)
while True:
if phip <= phiq:
if abs(b - p) <= epsilon:
return a, q
break
else:
b = q
phiq = phip
q = p
p = a + 0.382 * (b - a)
phip = f(p)
if phip > phiq:
if abs(b - p) <= epsilon:
return p, b
break
else:
a = p
phip = phiq
p = q
q = a + 0.618 * (b - a)
phiq = f(q)
if __name__ == '__main__':
a, b = solve(0, 3, 5e-10)
print('a: {}\nb: {}\nf((a+b)/2): {}'.format(a, b, f((a + b) / 2)))
这篇关于0.618法(最优化方法)Python实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!