Эксперты;
Дано
f = (#1^#2) &
Есть ли способ определить «f» выше так, что если # 1 и # 2 оба равны нулю, то значение чистой функции 'f' должно быть 1?
так что когда я пишу
f[0,0]
он вернет 1, а не неопределенный?
кстати, я знаю, что могу написать
f = (If[#1 == 0 && #2 == 0, 1, #1^#2]) &
Но я хотел общее правило или шаблон, поэтому мне не нужно писать эти проверки, так как чистая функция может быть более сложной (много # в ней), и я не хочу делать многие из этих «если тогда еще» 'проверяет каждый возможный 0 ^ 0, который может появиться.
спасибо
Обновление:
Может быть, я должен уточнить, почему я делаю это.
У меня есть пользователь выбирает функцию из меню. Функция
a x^n0 + b y^n1 + c x^n2 y^n3
Где выше, параметры 'n0', 'n1', 'n2' и 'n3' также могут быть выбраны из ползунков, и они могут быть нулевыми.
Теперь 'x' и 'y' - это координаты, и они также могут быть равны нулю.
Следовательно, возможно, что 0 ^ 0 может встретиться при оценке вышеупомянутой функции.
Есть много случаев, чтобы проверить, когда делаю это сам. Например, 'y ^ n3' может быть 0 ^ 0, а не другим, y ^ n1 может быть 0 ^ 0, а не другим, x ^ n2 y ^ n3 может быть и 0 ^ 0, и не другими, и т. Д. и поэтому я должен определить много разных случаев. (16 возможных случаев, я думаю).
И я пытаюсь избежать этого. Если я скажу Mathematica заменить 0 ^ 0 на 1 на более низком уровне, тогда жизнь будет проще.
Обновление 12/7/11
Спасибо всем за ответы и комментарии, все они очень полезны и решают мою проблему, и я учился у них.
Я выбрал ответ Леонида, поскольку это позволило мне решить мою проблему с наименьшим количеством дополнительного кодирования.
Вот небольшой пример
Manipulate[Row[{format[x, n], "=", eval[x, n]}],
{{x, 0.0, "x="}, 0, 1, .1, Appearance -> "Labeled"},
{{n, 0.0, "n="}, 0, 1, .1, Appearance -> "Labeled"},
Initialization :>
(
format[x_, n_] := HoldForm["(" x ")"^n];
eval = Unevaluated[#1^#2] /. HoldPattern[0.0^0.0] :> 0.0 &
)
]
Я везде использую действительные числа в своем коде (это числовой решатель pde), поэтому я использовал 0.0 выше, а не 0 ^ 0, чтобы соответствовать тому, что я делаю.