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