MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: integrate an interpolated function

  • To: mathgroup at smc.vnet.net
  • Subject: [mg70320] Re: integrate an interpolated function
  • From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
  • Date: Fri, 13 Oct 2006 01:29:59 -0400 (EDT)
  • Organization: The Open University, Milton Keynes, UK
  • References: <egl2qh$4o3$1@smc.vnet.net>

wtplasar at ehu.es wrote:
> Hi,
> 
> I have defined numerical derivatives of functions by interpolation, 
> because for some complicated numerical functions I was getting 
> convergence problems using ND.
> 
> I have defined the second derivative of a 2 variable function by 
> interpolating the function in a square region with the point where I 
> want to evaluate the function at its center. I do it here for Sin[x*y]
> as an example.
> 
> yyder[om_?NumericQ, 
>       w_?NumericQ, h_?NumericQ] := D[FunctionInterpolation[Sin[x*y], 
> {x, om - \
> h, om + h}, {y, w - h, w + h}][x, y], {y, 2}] /. x -> om /. y -> w
> 
> Then I want to perform an operation on this function which involves 
> integrating it over one of the variables (multiplying it by another 
> function, but that does not matter).
> 
> So I do 
> 
> fun[w_?NumericQ, h_?NumericQ] := NIntegrate[yyder[om, w, h], {om, 0, 
> 1}]
> 
> and I get a series of errors like: 
> 
> FunctionInterpolation::range: Argument {x, om - 0.3, om + 0.3} is not 
> in the 
> form of a range specification, {x, xmin, xmax}.
> 
> FunctionInterpolation::range: Argument {#2, #3, #4} is not in the form 
> of a 
> range specification, {x, xmin, xmax}
> 
> and so on.
> 
> Can you help me? Thanks,
> 
> Ruth
> 
Hi Ruth,

Have you try your functions with a fresh kernel? Could you provide 
MathGroup an example of a call to the function fun that does produce the 
error messages you reported. It works correctly on my system:

In[1]:=
yyder[(om_)?NumericQ, (w_)?NumericQ, (h_)?NumericQ] :=
   D[FunctionInterpolation[Sin[x*y], {x, om - h,
         om + h}, {y, w - h, w + h}][x, y], {y, 2}] /.
     x -> om /. y -> w

In[2]:=
fun[(w_)?NumericQ, (h_)?NumericQ] :=
   NIntegrate[yyder[om, w, h], {om, 0, 1}]

In[3]:=
fun[1, 2]

Out[3]=
-0.221297

In[4]:=
$Version

Out[4]=
"5.2 for Microsoft Windows (June 20, 2005)"

Regards,
Jean-Marc


  • Prev by Date: Re: Update on Weinberg-Sallam model in super symmetry as E8xE8-> energy of split
  • Next by Date: RE: RelaTime3D
  • Previous by thread: integrate an interpolated function
  • Next by thread: Re: Definition of SE (standard error) in LinearRegress and NonlinearRegress