wolfram-mathematica - 如何告诉 Mathematica 将 0 替换为 1 的幂?

标签 wolfram-mathematica

专家;

给定

f = (#1^#2) &

有没有办法在上面定义 'f' ,如果 #1 和 #2 都为零,那么纯函数 'f' 的值应该是 1 ?

所以当我写
f[0,0]

它会返回 1 而不是 Indeterminate?

顺便说一句,我知道我会写
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”也可以从 slider 中选择,这些参数可以为零。

现在,“x”和“y”是坐标,它们也可以为零。

因此,在评估上述函数时,可能会遇到 0^0。

自己做的时候有很多情况要检查。例如 'y^n3' 可以是 0^0 而不是另一个,y^n1 可以是 0^0 而不是另一个,x^n2 y^n3 可以是 0^0 而不是其他,等等。 ,所以我必须定义许多不同的情况。 (我认为有 16 种可能的情况)。

我试图避免这种情况。如果我可以告诉 Mathematica 在较低级别将 0^0 替换为 1,那么生活会更简单。

2011 年 12 月 7 日更新
感谢大家的回答和评论,都非常有用,解决了我的问题,我向他们学习。

我选择了 Leonid 答案,因为它允许我用最少的额外编码来解决我的问题。

这是一个小例子
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

最佳答案

当然,在 Mathematica 中做事的方法有很多,但我经常使用的一个设计习惯是编写具有递减特异性的“函数”(实际上是一种模式)。 Mathematica 具有在不太具体之前应用更具体的模式的特性。

所以,对于你的情况,我只想写:

Clear[f];
f[0, 0] = 1;
f[a_, b_] := a^b;

我假设您希望使用整数值,因为这是这种情况的通常上下文,例如在评估伯恩斯坦基函数时。

关于wolfram-mathematica - 如何告诉 Mathematica 将 0 替换为 1 的幂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8403626/

相关文章:

c++ - 找出一组整数的多项式

wolfram-mathematica - 如何使 PlotLegend 与 Mathematica 中的 ParametricPlot 一起使用?

wolfram-mathematica - Mathematica,嵌套优化

math - Mathematica 中的整数优化?

wolfram-mathematica - 数学 D 和 Dt 表现不正常?

wolfram-mathematica - 如何在 Mathematica 中使用函数参数值的单位

wolfram-mathematica - 莫名的 Mathematica7 DumpSave[] 问题

python - 如何根据邻居之间的给定标准将数组拆分为几个较小的数组

memory - 拟合微分方程组参数时 Mathematica 内存不足

wolfram-mathematica - Mathematica Solve 函数给出的解不正确,为什么?