Mathematica中最好的字符分配方法

时间:2011-09-12 23:34:36

标签: wolfram-mathematica

遇到以下示例代码的问题,我希望有一种解决方法。

说我已经定义了一个函数:

f[x_,y_,z_] = x + y + z + x Log[x] + y Log[y] +z Log[z]

我要分配

f[x_,y_,z_] = x + y + z + x Log[x] + y Log[y] +z Log[z]//.x->1//.y->1//.z->0

但是,不是让Mathematica用0代替z,我只是想要忽略z来给出结果f[x_,y_] = 2而不必定义新函数。在Mathematica中输入上述代码会产生明显的Indeterminate解决方案

非常感谢帮助这位新手。

2 个答案:

答案 0 :(得分:4)

假设您希望将z描述的处理方式同时应用于xy,您可以这样做:

f[x_, y_, z_] := g[x] + g[y] + g[z]

g[0] = 0;
g[x_] := x + x Log[x]

辅助函数g显式处理零个案。这些定义产生如下结果:

f[1, E, E^2]
(* 1 + 2*E + 3*E^2 *)

f[1, 1, 1]
(* 3 *)

f[1, 1, 0]
(* 2 *)

f[0, 0, E]
(* 2*E *)

答案 1 :(得分:2)

首先,通过调用函数发生函数应用程序:

f[1,1,1]

其次,为什么不使用限制引入新功能?

f[x_,y_,z_] := x + y + z + x*Log[x] + y*Log[y] +z*Log[z]
g[x_,y_]:=Limit[f[x,y,z],z->0]
g[1,1]

那应该给你2,虽然我现在不在mathematica前面所以我没有检查