声明的力量功能评估

时间:2011-03-15 22:39:28

标签: wolfram-mathematica

我有一个函数f[x_,y_,z_]:=Limit[g[x+eps,y,z],eps->0];,我在下一步中绘制f[x,y,z]。之前,我曾经评估过限制并复制f定义中的表达式。我试图一步到位。但是,仅在我尝试绘制f时才会对限制进行评估。因此,每次我更改变量和重新绘制时,都会重新评估限制(评估需要大约一分钟,因此会变得很烦人)。我首先尝试评估限制,然后执行f[x_,y_,z_]:=%。但这也不起作用。如何在声明时获得评估限制的功能?

2 个答案:

答案 0 :(得分:4)

您需要的功能在逻辑上称为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 :(得分:1)

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之间的版本进行比较。