Why does this not integrate

why is this integral performed:

forget()
var('n')
assume(n>0)
integrate(1/sqrt(1+x^2*n),x,1,2)

i.e. I get:

-arcsinh(sqrt(n))/sqrt(n) + arcsinh(2*sqrt(n))/sqrt(n)

while this is not

forget()
var('n')
assume(n>0)
integrate(1/sqrt(1+x^2/n),x,1,2)
edit retag close merge delete

This is now fixed in the latest Sage beta (and probably before).

Sort by » oldest newest most voted

Somehow the simply_full() works. It probably forces the integration to happen.

sage: integrate(1/sqrt(1+x^2/n),x,1,2).simplify_full()
-(arcsinh(1/sqrt(n)) - arcsinh(2/sqrt(n)))*sqrt(n)
more

Weird. It turns out that simplify_rational and simplify_radical do it, but not some of the others, and not just simplify (just passing to Maxima). But in Maxima itself, radcan and fullratsimp don't seem to have this effect; somehow the "nounform" is evaluated... weird.

ehem, guys, for a newbs 1st-in-a-life-time three-liner typed into sage this is a little over my head. If this nobrainer integral results in a bug already, is your point that I should use integrate() only in conjunction with simplify_full()? Or is this a 'rare' case? Or am I doing something wrong?

It should be considered a bug in my opinion. If the simplify process can make the integration happen, then the integration should have been performed in the first place, without the need for simplify.

Correct, and it's a Maxima bug, as far as I can tell, which I've reported upstream. This should definitely be a 'rare' case, since I've never heard of this happening before (not unevaluated integrals, which are legion, but this simplify behavior).