He estado tratando de definir una función compdiff en Wolfram Language que toma dos expresiones matemáticas f y g y una variable x como entrada y da como resultado la diferencia de sus Composiciones f[g[x]]-g[f[x]] (una especie de conmutador si te gusta el álgebra abstracta).

Por ejemplo: compdiff[x^2,x+1,x] = (x+1)^2-(x^2+1).

Lo he intentado con

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

Y

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

Pero cuando entro

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

Da salida

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

¿Qué estoy haciendo mal?

0
Nada F. 14 dic. 2016 a las 10:04

1 respuesta

La mejor respuesta

Necesitas usar funciones en lugar de expresiones. Por ejemplo:

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

Entonces compdiff [f, g, x] funcionará:

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

Alternativamente, puede usar funciones puras, como en:

In[399]:= compdiff[#^2&,#+1&,x]
Out[399]= -1-x^2+(1+x)^2
1
Carl Woll 23 dic. 2016 a las 04:04