Re: 2D Integration

• To: mathgroup at yoda.physics.unc.edu
• Subject: Re: 2D Integration
• From: Robert Singleton <bobs at thnext.mit.edu>
• Date: Mon, 14 Jun 93 15:12:13 -0400

```I previously wrote,
> A while back I posted a question on 2D integration - i.e. is

> there a good way to do this in Mma? It would be nice if WRI

> would  make a decent 2D or 3D integration routine (hint hint) --

> the  built in Mma NIntegrate is much too slow for multiple

> integration involving interpolating functions.

> ...
and Jerry Keiper replies,
> It is not clear what is meant by "decent", but presumably the

> idea is to sacrifice accuracy for speed. The default options for

> NIntegrate are set to give 6 digits (assuming machine precision

> calculations) in the final result.  Moreover the estimate of the

> error is rather conservative so you often get a relative error

> that is much less than 10^-6.
>
> But that is no reason to consider NIntegrate[ ] "indecent".
> As a user you are perfectly free to choose a different

> AccuracyGoal or PrecisionGoal.

Jerry goes on to give an example where he changes the default
values of AccuracyGoal and PrecisionGoal in NIntegrate[] to
integrate the function Exp[-x+2 y^2]. The result is very fast.

This post is to warn people that Jerry's reply was VERY misleading.

There is a definite deficiency in NIntegrate[] that would be in the

best interest of WRI to correct. In my original post I specified that
I was working with an InterpolatingFunction. In this case there is
*NOTHING* that I have been able to do to make NIntegrate "decent" -
except I now use Terry Robb's very nice routine ArrayIntegrate[]
that integrates a list of data (or I use Maple).

Terry Robb writes:
>As I understand it, [Bob Singleton] had an array of data values,
>and he thought of fitting an InterpolatingFunction through it and
>then calling NIntegrate[]. This of course does turn out to be slow.
>
>It's a pity that NIntegrate[] doesn't realize that if it is dealing
>with an InterpolatingFunction[range,table] object, then it could
>directly produce the integral from the information in the table.
>After all D[] knows how to handle InterpolatingFunction's, so why
>not NIntegrate[] and Integrate[] too?

This is VERY good suggestion! Why not make NIntegrate[] simply use
the data points when it receives an InterpolatingFunction?!?

BTW, the type of problem I'm doing can be rather common in physics.

If you have a system that is described by some differential

equations that you can only solve numerically (using NDSolve[] which

gives it's output in the form of an InterpolatingFunction[]), and you

then want to find the energy or some other other property that

involves integrals over functions of the solutions, then you will run

into trouble using NIntegrate[] (unless you just get lucky and only

need to do a 1D integral). This is a serious deficiency on the part

of NIntegrate and I hope that WRI takes the necessary steps to fix

it. Until they do I recommend either Maple or Terry Robb's very nice
ArrayIntegrate[] (the reason it's so nice is because the program is
so short and elegant).

Regards,

Bob Singleton

```

• Prev by Date: Re: trig functions
• Next by Date: D and InterpolatingFunction
• Previous by thread: Re: 2D Integration
• Next by thread: Re: 2D Integration