fmin
语法
fmin(func, X0, [xtol=0.0001],
[ftol=0.0001], [maxIter], [maxFun])
详情
使用 Nelder-Mead 单纯形算法找到目标函数的最小值。
注意:该算法只使用函数值,不使用一阶导数或二阶导数。
参数
func 函数名,表示需要最小化的目标函数。注意:函数返回值须是数值标量类型。
X0 数值类型的标量或向量,表示使目标函数最小化的参数的初始猜测。
xtol 可选参数,正数值标量,表示在迭代过程中 xopt
之间可接受的收敛的绝对误差。默认值为 0.0001。
ftol 可选参数,正数值标量,表示在迭代过程中 func(xopt)
的绝对误差可接受的收敛标准。默认值为
0.0001。
maxIter 可选参数,非负整数标量,表示执行的最大迭代次数。
maxFun 可选参数,非负整数标量,表示最大目标函数调用次数。
返回值
返回一个字典,包含以下成员:
-
xopt:浮点数向量,使目标函数最小化的参数值。
-
fopt:浮点数标量,目标函数最小值。fopt=func(xopt)。
-
iterations:整数标量,优化过程中执行的总迭代数。
-
fcalls:整数标量,优化过程中目标函数的调用次数。
-
warnFlag:整数标量,有三个可能值:
-
0:表示成功执行算法全过程。
-
1:表示已达最大目标函数调用次数,算法停止执行。
-
2:表示已达最大迭代次数,算法停止执行。
-
例子
下例中自定义一个 f(x) 函数,使用 Nelder-Mead 单纯形算法找到其最小值。
def f(x) {return x*x}
fmin(f, 1)
/* Ouput:
xopt->[-8.881784197001252E-16]
fopt->7.888609052210119E-31
iterations->17
fcalls->34
warnFlag->0
*/