Mathematica斐波那契线搜索代码
程序员文章站
2022-03-02 10:42:00
...
(*参数说明:f为函数,a为区间下界,b为区间上界,e为精度*)
(*输出说明:输出为一个列表{a,b,n},其中[a,b]代表最后求得的解区间,n代表迭代次数*)
goldenSearch[f_, a_, b_, e_] :=
Module[{n = 2, d = b - a, a0 = a, b0 = b},
While[d > e,
d = Fibonacci[n]/Fibonacci[n + 1]*d;
u = a0 + d;
l = b0 - d;
If[f[u] < f[l], a0 = l, b0 = u];
n = n + 1];
{a0, b0, n - 2}]