我在使用 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/