如何在mathematica中替换函数

时间:2011-02-11 23:35:27

标签: wolfram-mathematica

我的表达式为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}

但都没有奏效。非常感谢您的帮助!感谢。

3 个答案:

答案 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