Эксперты;
Учитывая
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, чтобы соответствовать тому, что я делаю. .