Mathematica评估控制和表达

Cap*_*esh 1 evaluation controls expression wolfram-mathematica

我正在使用的表达式太复杂,无法完全进入此处,但我已经包含了一个简单的示例,突出了我遇到的问题.我希望有人有足够的编程毅力来帮助我解决这个问题.让我先说一下我在编程方面几乎没有背景,但我知道Mathematica的基础知识.非常感谢任何和所有的帮助.假设我已经设置了以下功能:

X[x_] := x Log[x]
X[0] := 0
Y[y_] := y Log[y]
Y[0] := 0
Z[z_] := z Log[z]
A[x_, y_, z_] := X[x] + Y[y] + Z[z]

In[7]:= A[x, y, z]

Out[7]= x Log[x] + y Log[y] + z Log[z]

In[8]:= B[x_, y_, z_] := 
 Evaluate[A[x, y, z] - x*D[A[x, y, z], x] - y*D[A[x, y, z], y] - 
   z*D[A[x, y, z], z]]

In[9]:= B[x, y, z]

Out[9]= x Log[x] - x (1 + Log[x]) + y Log[y] - y (1 + Log[y]) + 
 z Log[z] - z (1 + Log[z])
Run Code Online (Sandbox Code Playgroud)

我已经建立了A[x,y,z]与规则X[x],Y[y]以及Z[z]使其能够处理的情况下x,y,z == 0的时候,也就是x == 0我想表达的所有A[x,y,z]x去零或者被忽略,包括Log[x].我已经定义了一个B[x,y,z]涉及偏导数的函数A[x,y,z].现在,我想要结果,以便B[0,y,z]产量

yLog[y]-y(1+Log[y])+zLog[z]-z(1+Log[z])
Run Code Online (Sandbox Code Playgroud)

这基本上是回去做,A[x,y,z]:= Y[y]+Z[z]但我正在遇到以下,可以理解,错误:

Infinity :: indet:遇到不确定表达式0( - [Infinity]).>>

Mathematica必须有一些解决方法,我想知道它是否涉及保持功能或相关的东西.谢谢大家的帮助.

Dan*_*lau 6

一种方法是在导数中使用虚拟变量,然后用实际值替换.

Clear[X, Y, Z];
X[x_] := x Log[x]
X[0]   = 0;
Y[y_] := y Log[y]
Y[0]   = 0;
Z[z_] := z Log[z]
Z[0]   = 0;

A[x_, y_, z_] := X[x] + Y[y] + Z[z]    
B[x_, y_, z_] := 
 Module[{xx, yy, zz}, 
  A[x, y, z] - x*D[A[xx, y, z], xx] - y*D[A[x, yy, z], yy] - 
    z*D[A[x, y, zz], zz] /. {xx -> x, yy -> y, zz -> z}]

B[0, y, z]

(* Output: y Log[y] - y (1 + Log[y]) + z Log[z] - z (1 + Log[z]) *)
Run Code Online (Sandbox Code Playgroud)

这工作,因为每个衍生物具有0更通用的解决方案的一个因素可能包括定义UpValuesX, Y, Z的原点处理衍生物(我没有时间在此刻检查).