以下代码不止一次地在同一点评估目标函数,如Print函数的输出所示。为什么Mathematica执行这些冗余步骤?似乎效率低下。
obj[x_?NumberQ, y_?NumberQ, z_?NumberQ] := Module[{},
Print[x, " ", y, " ", z];
x^2 + y^2 + z^2]
minisub =
FindMinimum[obj[x, y, z], {{x, 1}, {y, 2}, {z, 3}}, Method -> "Newton"]