# Numerical packages to solve Volterra integral equations

I am looking for numerical packages (ideally Python) to solve second kind Volterra integral equations, such as

$$u(t)=g(t)+\int_0^tK(t,s)u(s) ds$$

or Volterra-Fredholm integral equations

$$u(x,t)=g(t,x)+c\int_0^t\int_\Omega K(t,s,x,\xi)u(s,\xi) d\xi ds$$

Are there any callable functions in Python to solve such equations? if not, are there any standard algorithm to solve such equations?

• For the most general case you can use scipy.integrate to solve integral equations. If the kernel is exponential maybe you can use laplace transforms or FFTs. – jadelord May 16 '18 at 16:16

## 1 Answer

You can usually solve these kinds of equations via a transformation. Shampine discusses how Volterra integral equations can be transformed into an ODE which is then solved with a stiff ODE solver. If you discretize u(x) into a system of ODEs first then you can maybe do something similar in that case.

If you want to handle a general functional ODEs directly, then there are two approaches. One approach is to develop specific solvers for each type of subproblem, and there is research in this if you look around but there's not much software to go along with it. On the other hand, general state-dependent delay differential equation solvers can do this kind of thing because they give you the full u(s) for s<t. This means you can actually take that interval using that interpolation. But given Shampine's analysis you can see that these things can easily end up stiff so the DDE solver needs to be able to handle stiffness. DifferentialEquations.jl's DDE solvers have that kind of flexibility, and I believe Maple's would work here as well. I believe RADAR5 has that flexibility too. I'm not sure of a similar Python offering. You need to make sure you setup some kind of caching structure to not re-solve that integral in full every step (for efficiency), but it shouldn't be too hard to build software with this route. That said, it likely won't be as efficient as the transformation or more direct solver approaches.