[SciPy-user] Suggestions for Integro-Differential Equations

Anne Archibald peridot.faceted@gmail....
Sun Apr 8 23:28:18 CDT 2007


On 08/04/07, Lorenzo Isella <lorenzo.isella@gmail.com> wrote:
> Dear All,
> I would like to solve numerically the following equation (I use
> latex-style notation) [for those who are interested, this is
> Smoluchowski equation describing the coagulation of aerosol particles]:

> \frac{dn(v,t)}{dt}=\frac{1}{2}\int_{v_0}^{v-v_0}
> K(v-q,q)n(v-q,t)n(q,t)dq-n(v,t)\int_{v_0}^\infty K(q,v)n(q,t)dq,
> where K(q,v) is the appropriate collision kernel and n is a particle
> concentration.

I'm not very familiar with integro-differential equations either. I
suspect there may be some specialized techniques for solving them (you
might consider some of the techniques used for solving integral
equations and see if they generalize; look at Numerical Recipes
http://www.nrbook.com/b/bookcpdf.php ), but often a cruder approach
can work if you're willing for it to take longer and give
lower-quality answers.

One approach would be to discretize n(v,t) along the first argument,
to the vector {n_i(t)}, perhaps by sampling at the roots of some
orthogonal polynomial, or perhaps evenly so you can use a Simpson-like
rule (both are implemented in scipy; I would choose based on how
smooth you expect the answer to be). Then you have \frac{dn_i(t)}{dt}
= F(n_i(t)), where F is a slow, complicated function of the vector
n_i. This is now an ordinary differential equation, readily solved by
the tools in scipy.integrate.

If your kernel is singular (as seems depressingly common), you may
find you have to use custom orthogonal polynomials for the
integration; these can be found by computing a few numerical
integrations.

If brute force and ignorance fail, browse through the literature, or
trap a numerical analyst on their way to the coffee machine, and find
out about tools for solving integrodifferential equations. For
example, there's a 2005 paper by Struckmeier in Numerical Algorithms
that looks like it might give you pointers not just to his clever new
techniques but to the best simple techniques for solving the
Smoluchowski equation.

Anne M. Archibald


More information about the SciPy-user mailing list