在 Wolfram 语言中定义成分的差异
Defining the difference of compositions in the Wolfram Language
我一直在尝试在 Wolfram 语言上定义一个函数 compdiff
,它接受两个数学表达式 f
和 g
以及一个变量 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]]
我做错了什么?
您需要使用函数而不是表达式。例如:
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
我一直在尝试在 Wolfram 语言上定义一个函数 compdiff
,它接受两个数学表达式 f
和 g
以及一个变量 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]]
我做错了什么?
您需要使用函数而不是表达式。例如:
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