# How can I detect failure of analytical integration?

I want to check whether an analytical integration worked, and to try numerical integration in case it failed. I'd like to know when this happened. I'm very inexperienced with sagemath, but I know my way around python.

I did this:

g(x) = integrate(f(x), x)
w0 = SR.wild(0)
w1 = SR.wild(1)
s=integrate(w0,w1,hold=True)
if(len(g.find(s)) : print('failed')
else: print('worked')


This worked for my one test case, but I'd like to know if this is correct and somewhat general, and also, it looked a bit convoluted to me. There probably is a better solution that I could not find.

Apologies if the above is too gross to contemplate!

edit retag close merge delete

Sort by » oldest newest most voted Like this

sage: from sage.symbolic.integration.integral import DefiniteIntegral
sage: T=integrate(x,x,0,4,hold=True)
sage: isinstance(T.operator(),DefiniteIntegral)
True
sage: T=integrate(x,x,0,4)
sage: isinstance(T.operator(),DefiniteIntegral)
False

more

Ouch, this is so much better it hurts...

Many thanks!