0

我一直在尝试compdiff在 Wolfram 语言上定义一个函数,该函数接受两个数学表达式fg一个变量x作为输入,并输出它们组成的差异f[g[x]]-g[f[x]](如果你喜欢抽象代数,这是一种交换器)。

例如:compdiff[x^2,x+1,x] = (x+1)^2-(x^2+1)

我试过了

compdiff[f_,g_,x_]:= Composition[f,g][x]-Composition[g,f][x]

compdiff[f_,g_,x_]:= f @* g @ x-g @* f @ x

但是当我输入

compdiff[x^2,x+1,x]

它输出

(x^2)[(1 + x)[x]] - (1 + x)[(x^2)[x]]

我究竟做错了什么?

4

1 回答 1

1

您需要使用函数而不是表达式。例如:

f[x_] := x^2
g[x_] := x+1

然后 compdiff[f, g, x] 将起作用:

In[398]:= compdiff[f,g,x]
Out[398]= -1-x^2+(1+x)^2

或者,您可以使用纯函数,如:

In[399]:= compdiff[#^2&,#+1&,x]
Out[399]= -1-x^2+(1+x)^2
于 2016-12-23T01:04:24.457 回答