Mathematica вызывает NMinimize с помощью символов, а не чисел?

Я заметил следующее поведение при использовании NMinimize в системе Mathematica. Первый вызов целевой функции выполняется с именами переменных, а не с точками из пространства, как можно было бы ожидать.

Так, например, если моя целевая функция является модулем, этот модуль вызывается только один раз, оценивается символически, а затем в дальнейших итерациях это символьное выражение оценивается точками из пространства переменных.

Такое поведение может значительно замедлить вычисление для большого выражения. Есть ли способ обойти это? Кто-нибудь еще испытал это? Есть ли способ ускорить 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}}
7
задан Sangeeta Bhatia 27 April 2011 в 21:12
поделиться