I have been using FindMinimum to find a local minimum of a non-linear function within a constrained region.
我一直在使用FindMinimum来查找受约束区域内的局部最小非线性函数。
How can I know which method Mathematica has selected to find the local minimum?
我如何知道Mathematica选择哪种方法来查找局部最小值?
Thanks in advance!
提前致谢!
2 个解决方案
#1
3
Excerpt from Some Notes on Internal Implementation of Mathematica:
关于Mathematica内部实施的一些注释的摘录:
- With Method->Automatic and two starting values, FindMinimum uses Brent's principal axis method. With one starting value for each variable, FindMinimum uses BFGS quasi-Newton methods, with a limited memory variant for large systems.
- 使用Method-> Automatic和两个起始值,FindMinimum使用Brent的主轴方法。每个变量有一个起始值,FindMinimum使用BFGS准牛顿方法,对大型系统使用有限的内存变量。
- If the function to be minimized is a sum of squares, FindMinimum uses the Levenberg–Marquardt method (Method->"LevenbergMarquardt").
- 如果要最小化的函数是平方和,则FindMinimum使用Levenberg-Marquardt方法(Method - >“LevenbergMarquardt”)。
- With constraints, FindMinimum uses interior point methods.
- 使用约束,FindMinimum使用内部点方法。
#2
2
Select
the Method
that produces the SameQ
result as Automatic
选择生成SameQ结果的方法为自动
Select[{#,
FindMinimum[Abs[x + 1] + Abs[x + 1.01] + Abs[y + 1], {x, y},
Method -> #] // Quiet} & /@ {"Gradient", "ConjugateGradient",
"InteriorPoint", "QuasiNewton", "Newton", "LinearProgramming",
"QuadraticProgramming", "LevenbergMarquardt"}, #[[2]] ==
FindMinimum[Abs[x + 1] + Abs[x + 1.01] + Abs[y + 1], {x, y},
Method -> Automatic] &] // Quiet
(* {{"QuasiNewton", {0.01, {x -> -1.00683, y -> -1.}}}} *)
#1
3
Excerpt from Some Notes on Internal Implementation of Mathematica:
关于Mathematica内部实施的一些注释的摘录:
- With Method->Automatic and two starting values, FindMinimum uses Brent's principal axis method. With one starting value for each variable, FindMinimum uses BFGS quasi-Newton methods, with a limited memory variant for large systems.
- 使用Method-> Automatic和两个起始值,FindMinimum使用Brent的主轴方法。每个变量有一个起始值,FindMinimum使用BFGS准牛顿方法,对大型系统使用有限的内存变量。
- If the function to be minimized is a sum of squares, FindMinimum uses the Levenberg–Marquardt method (Method->"LevenbergMarquardt").
- 如果要最小化的函数是平方和,则FindMinimum使用Levenberg-Marquardt方法(Method - >“LevenbergMarquardt”)。
- With constraints, FindMinimum uses interior point methods.
- 使用约束,FindMinimum使用内部点方法。
#2
2
Select
the Method
that produces the SameQ
result as Automatic
选择生成SameQ结果的方法为自动
Select[{#,
FindMinimum[Abs[x + 1] + Abs[x + 1.01] + Abs[y + 1], {x, y},
Method -> #] // Quiet} & /@ {"Gradient", "ConjugateGradient",
"InteriorPoint", "QuasiNewton", "Newton", "LinearProgramming",
"QuadraticProgramming", "LevenbergMarquardt"}, #[[2]] ==
FindMinimum[Abs[x + 1] + Abs[x + 1.01] + Abs[y + 1], {x, y},
Method -> Automatic] &] // Quiet
(* {{"QuasiNewton", {0.01, {x -> -1.00683, y -> -1.}}}} *)