遇到以下示例代码的问题,我希望有一种解决方法。
说我已经定义了一个函数:
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
解决方案
非常感谢帮助这位新手。
答案 0 :(得分:4)
假设您希望将z
描述的处理方式同时应用于x
和y
,您可以这样做:
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前面所以我没有检查