Оценка функции силы при объявлении - PullRequest
2 голосов
/ 16 марта 2011

У меня есть функция f[x_,y_,z_]:=Limit[g[x+eps,y,z],eps->0];, и я планирую f[x,y,z] на следующем шаге.Ранее я использовал для оценки предела и скопировать выражение в определении f.Я пытался сделать все это за один шаг.Тем не менее, оценка Предела делается только тогда, когда я пытаюсь построить f.В результате, каждый раз, когда я изменяю переменные и повторяю график, предел оценивается заново (для оценки требуется около минуты, поэтому он становится раздражающим).Сначала я попытался оценить лимит, а затем сделал f[x_,y_,z_]:=%.Но это тоже не работает.Как получить функцию для оценки лимита при объявлении?

Ответы [ 2 ]

4 голосов
/ 16 марта 2011

Необходимая функция логически называется Evaluate, и вы можете использовать ее в команде Plot.

Вот надуманный пример:

f[x_, y_, z_] := Limit[Multinomial[x, y, z], x -> 0]

Plot3D[ Evaluate[ f[x, y, z] ], {y, 1, 5}, {z, 1, 5}]

Отвечая на ваш дополнительный вопрос, возможно, все, что вы ищете, это что-то вроде

ff = f[x, y, z]

Plot3D[ff, {y, 1, 5}, {z, 1, 5}]

или, возможно, просто

ClearAll[f, x, y, z]

f[x_, y_, z_] = Limit[Multinomial[x, y, z], x -> 0]

Plot3D[f[x, y, z], {y, 1, 5}, {z, 1, 5}]

Было бы полезно, если бы вы опубликовали более полную версию своего кода.

1 голос
/ 16 марта 2011

Альтернативой решению Mr Wizard является то, что вы также можете поместить Evaluate в определение функции:

f[x_, y_, z_] := Evaluate[Limit[Multinomial[x, y, z], x->0]]

Plot3D[f[x, y, z], {y, 1, 5}, {z, 1, 5}]

Вы можете сравнить две версии с одной без Evaluate по Timing Plot.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...