Как сообщить системе Mathematica заменить 0 в степени 0 на 1?

Эксперты;

Учитывая

f = (#1^#2) &

Есть ли способ определить "f" выше, так что если # 1 и # 2 оба равны нулю, то значение чистой функции 'f' должно быть 1?

, чтобы когда я напишу

f[0,0]

, он вернет 1, а не Indeterminate?

Кстати, я знаю, что могу написать

f = (If[#1 == 0 && #2 == 0, 1, #1^#2]) &

Но мне нужно общее правило или шаблон, поэтому у меня нет чтобы написать эти проверки, поскольку чистая функция может быть более сложной (в ней много #), и я не хочу выполнять многие из этих проверок if then else для каждого возможного 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 на более низком уровне, жизнь станет проще.

Обновление 07.12.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, чтобы соответствовать тому, что я делаю. .

enter image description here

9
задан Nasser 7 December 2011 в 07:06
поделиться