1 | initial version |
I think that's a bug in the Sage-to-maxima interface. Compare :
sage: var('y')
....: psi = function('psi')(y)
....: f = function('f')(y)
....:
y
sage: (psi(x-y)*f(y)).maxima_methods().integrate(y)
integrate(f(y)*psi(x - y), y)
sage: (psi(x-y)*f(y)).maxima_methods().integrate(y).diff(x)
integrate(f(y)*D[0](psi)(x - y), y)
with :
sage: (psi(x-y)*f(y)).integrate(y)
---------------------------------------------------------------------------
[ Long backtrace ]
RuntimeError: ECL says: Error executing code in Maxima:
BTW :
sage: integrate(psi(x-y)*f(y),y, algorithm="sympy")
integrate(f(y)*psi(x - y), y)
sage: integrate(psi(x-y)*f(y),y, algorithm="sympy").diff(x)
integrate(f(y)*D[0](psi)(x - y), y)
sage: integrate(psi(x-y)*f(y),y, algorithm="giac")
integrate(f(y)*psi(x - y), y)
sage: integrate(psi(x-y)*f(y),y, algorithm="giac").diff(x)
integrate(f(y)*D[0](psi)(x - y), y)
Another exemple of this quirk (against an old saw by Leibnitz, IIRC) :
sage: foo=arctan(x).diff(x).subs(x^2==-p).maxima_methods().powerseries(p,0).subs
....: (p==-x^2).simplify(); foo
sum((-1)^i5*x^(2*i5), i5, 0, +Infinity)
sage: foo.maxima_methods().integrate(x)
sum((-1)^i5*x^(2*i5 + 1)/(2*i5 + 1), i5, 0, +Infinity)
sage: foo.integrate(x)
---------------------------------------------------------------------------
[ Long backtrace again... ]
RuntimeError: Encountered operator mismatch in maxima-to-sr translation
and integrate(foo, x)
gives the same final error message.
I encounter the same problem (and the same "solution") in Trac#13071. Other integration Trac tickets may have a similar origin, (but I lack the time needed to check them...).