FindMinimum:我怎么知道Mathematica使用了哪种方法?

时间:2022-02-08 07:08:23

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.}}}} *)