|
本帖最后由 Ysu2008 于 2021-6-14 12:25 编辑
比如求 \(f(x)=\frac{ln(x)}{x+1}\) 最大值的数值解。
(1)以 0.618 法,从初始区间 [a , b]=[2 , 5]开始,迭代 70 次可找到该区间内的函数最大值:
a = 3.5911215197695068 f(a) = 0.2784645427610738
b = 3.5911215197695094 f(b) = 0.2784645427610738
可知:max(f) = 0.2784645427610738......
(2)参照 0.618 法的搜索原理,我们可以选择任何一个大于 0.5 小于1 的值进行类似迭代。
比如以 0.51 迭代,也从初始区间 [a , b]=[2 , 5]开始,迭代 50 次即可找到最大值:
a = 3.5911217453093540 f(a) = 0.2784645427610732
b = 3.5911217453093576 f(b) = 0.2784645427610732
max(f) = 0.2784645427610732......
(3)还可以选择比 0.618 大的值迭代,比如 0.8,也从初始区间 [a , b]=[2 , 5]开始,则需迭代 150 次找到最大值:
a = 3.5911214905895488 f(a) = 0.2784645427610738
b = 3.5911214905895505 f(b) = 0.2784645427610738
越靠近 0.5 ,迭代所需次数越少。那么用 0.618 迭代原因何在呢?
|
|