我的表达式为D[f[x, y], x]
,我想用f[x,y]
代替x*y
,我尝试了以下内容:
D[f[x, y], x] /. {f[x,y] -> x*y}
和
D[f[x, y], x] /. {f -> x*y}
但都没有奏效。非常感谢您的帮助!感谢。
答案 0 :(得分:14)
表达式中派生词的FullForm
为
In[145]:= D[f[x,y],x]//FullForm
Out[145]//FullForm= Derivative[1,0][f][x,y]
这可以解释为什么第一条规则失败 - 表达式中不再有f[x,y]
。第二条规则失败,因为Derivative
认为f
是一个函数,而您用表达式替换它。你能做的是:
In[146]:= D[f[x,y],x]/.f->(#1*#2&)
Out[146]= y
请注意,纯函数周围的括号是必不可少的,以避免与优先级相关的错误。
或者,您可以通过模式定义r.h.s:
In[148]:=
fn[x_,y_]:=x*y;
D[f[x,y],x]/.f->fn
Out[149]= y
HTH
答案 1 :(得分:6)
没有什么新东西,就像我通常想到的那样:
D[f[x, y], x] /. f -> Function[{x, y}, x y]
出
y
答案 2 :(得分:2)
你也可以试试Hold and Release或Defer等。
Hold@D[f[x, y], x] /. {f[x, y] -> x*y}
D[x y, x]
Hold@D[f[x, y], x] /. {f[x, y] -> x*y} // Release
y