FindMaximum

FindMaximum[f,x]

求出 f 的局部极大值,从一个自动选定的点开始.

FindMaximum[f,{x,x0}]

求出 f 的局部极大值,从点 x=x0 开始.

FindMaximum[f,{{x,x0},{y,y0},}]

求出多变量的函数中局部极大值.

FindMaximum[{f,cons},{{x,x0},{y,y0},}]

求出满足 cons 约束条件的局部极大值.

FindMaximum[{f,cons},{x,y,}]

从约束条件定义区域内的点开始.

更多信息和选项

  • FindMaximum 返回形式为 {fmax,{x->xmax}} 的列表,当 fmaxf 里的最大值时,则 xmaxx 里的值.
  • 若起始点是给定列表里的变量,则变量的值与列表的维数相同.
  • cons 约束包括方程、不等式或这些逻辑组合.
  • 约束 cons 可以是下列的逻辑组合:
  • lhs==rhs方程
    lhs>rhs 或者 lhs>=rhs 不等式
    {x,y,}reg区域指定
  • FindMaximum 首先局部化所有变量值,然后求 f 里变量的符号值,最后求结果的数字值.
  • FindMaximum 具有 HoldAll 属性,并且使用 Block 局部化变量.
  • FindMaximum[f,{x,x0,x1}] 查寻 f 里的局部极大值,其中 f 使用 x0x1 作为 x 的前两个值,从而避免使用导数.
  • FindMaximum[f,{x,x0,xmin,xmax}] 查寻一个局部极大值,若 x 的范围在 xminxmax 之外,则停止查寻.
  • 除了 fcons 都线性化,否则 FindMaximum 的结果只能作为局部量,不能作为全局量或最大量.
  • 默认的情况下,所有变量假定是实数.
  • fcons 是线性的,xIntegers 只指定是整数型的变量.
  • 给出以下选项:
  • AccuracyGoalAutomatic精确查询
    EvaluationMonitor None当计算 f 值时,运行的表达式
    Gradient Automatic梯度函数列表 {D[f,x],D[f,y],}
    MaxIterationsAutomatic使用迭代的最大数
    Method Automatic使用的方法
    PrecisionGoalAutomatic查询的精度
    StepMonitor None对表达式求值时采取的步长
    WorkingPrecision MachinePrecision内部计算中的精度
  • AccuracyGoalPrecisionGoal 的设置指定在最大坐标值和最大函数值处查询的位数.
  • FindMaximum 将继续运行,直到 AccuracyGoalPrecisionGoal 指定的目标达到.
  • 在默认 Automatic 的情况下,Method 的设置包括 "ConjugateGradient""PrincipalAxis""LevenbergMarquardt""Newton""QuasiNewton".

范例

打开所有单元关闭所有单元

基本范例  (4)

开始,查找一个局部极大值:

提取的 x 的局部极大值:

的范围内,查找从 开始的局部极大值:

按照线性和整数的约束条件,找到一个线性函数的局部极大值:

求几何区域上函数的最大值:

绘制图线:

范围  (12)

不同的起始点得到不同的局部极大值:

开始,一个二元变量函数的局部极大值:

一个圆内的局部极大值:

没有提供起始点:

对于线性对象和约束条件,可以限制整数:

使用 Or

求区域上的最大值:

绘制图线:

求两个区域中的点之间的最大距离:

绘制图线:

的最大值,以使得矩形和椭圆仍然相交:

绘制图线:

的最大值,以使得 包含给定的三个点:

绘制图线:

使用 指定 中的向量:

求两个区域中点之间的最大距离:

绘制图线:

选项  (7)

AccuracyGoal 和 PrecisionGoal  (2)

收敛标准

没有达到机器的缺省精确度时,执行收敛标准

设置较高的 WorkingPrecision 使过程收敛:

EvaluationMonitor  (1)

绘制局部最大值处的收敛:

Gradient  (1)

用给定梯度和用有限的梯度差分计算的赫赛 (Hessian)函数:

使用梯度和赫赛 (Hessian)函数:

Method  (1)

此例中,默认导数法有一定困难:

在此例中,可以使用不需要求导数的直接查询法:

NMaximize 也可以使用一定范围的直接查询法:

StepMonitor  (1)

FindMaximum 是查找函数最大值的步长:

WorkingPrecision  (1)

设置工作精度 ,在默认的情况下,准AccuracyGoalPrecisionGoal设为

属性和关系  (2)

FindMaximum 尽可能找到一个局部极大值, NMaximize 尽可能找到一个全局最大值:

Maximize 找到全局最大值并在有限精度内运行:

FindMaximum 给出最大值和产生最大值的点:

FindArgMax 给出最大值的位置:

FindMaxValue 给出最大值:

可能存在的问题  (6)

对于机器精度的算法,平滑的函数极大值也会显示有些起伏:

超过机器精度通常避免这样的错误:

如果限制区域为空,则算法不收敛:

如果最大值不确定,则算法不收敛:

整数线性算法仅适用于机器数问题:

某些时候提供一个适当的起点可以使算法收敛:

符号计算函数可能很耗时:

限制函数定义可防止符号计算:

Wolfram Research (2003),FindMaximum,Wolfram 语言函数,https://reference.wolfram.com/language/ref/FindMaximum.html (更新于 2014 年).

文本

Wolfram Research (2003),FindMaximum,Wolfram 语言函数,https://reference.wolfram.com/language/ref/FindMaximum.html (更新于 2014 年).

CMS

Wolfram 语言. 2003. "FindMaximum." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2014. https://reference.wolfram.com/language/ref/FindMaximum.html.

APA

Wolfram 语言. (2003). FindMaximum. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/FindMaximum.html 年

BibTeX

@misc{reference.wolfram_2024_findmaximum, author="Wolfram Research", title="{FindMaximum}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/FindMaximum.html}", note=[Accessed: 22-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_findmaximum, organization={Wolfram Research}, title={FindMaximum}, year={2014}, url={https://reference.wolfram.com/language/ref/FindMaximum.html}, note=[Accessed: 22-November-2024 ]}