optimization - Mathematica 用符号而不是数字调用 NMinimize?

标签 optimization wolfram-mathematica

我在使用 NMinimize 时注意到以下行为在数学。目标函数的第一次调用是使用变量名,而不是像人们期望的那样使用空间中的点。

因此,例如,如果我的目标函数是一个模块,则该模块仅被调用一次,以符号方式进行评估,然后在进一步的迭代中,使用变量空间中的点来评估该符号表达式。

对于大型表达式,此行为可能会显着减慢计算速度。
有没有办法解决这个问题?有没有其他人经历过这个?有什么方法可以加快速度NMinimize然后?

例子:

dummy[x_] := Module[
  {},
  Print["x=", x ];
  4 x^4 - 4 x^2 + 1
  ]

In: NMinimize[dummy[x], x]
Out:x=x
{0., {x -> 0.707107}}

最佳答案

您是否尝试过将函数定义为仅评估数字输入?

dummy[x_?NumericQ] := ...

关于optimization - Mathematica 用符号而不是数字调用 NMinimize?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5810588/

相关文章:

python - Gurobipy 优化 : Constraint to make variable value to be greater than 100 OR equal to 0

c++ - 为什么类中相同函数定义的执行时间要慢 10 倍以上?

java - 为什么 Java 的 Math.min 在我的 Android 应用程序中如此缓慢?

wolfram-mathematica - Mathematica 帮助中的 ColorFunctionScaling 示例失败 - 为什么?

动态交互问题

枚举一个矩形可以被分割成 n 个更小的矩形的所有可能方式的算法

c - 在 gcc 中打开优化后标签移动

c++ - 找出一组整数的多项式

wolfram-mathematica - 数学 : is it possible to put AxesLabel for 3D graphics at the end of the axes as in 2D?

list - Mathematica Pick 在我得到 3 时立即停止列表