problem with integrating an interpolated list
- To: mathgroup at smc.vnet.net
 - Subject: [mg102841] problem with integrating an interpolated list
 - From: Tobias Baumann <ttobsen at hotmail.com>
 - Date: Sat, 29 Aug 2009 06:31:19 -0400 (EDT)
 
Hi
I've an problem with integrating an interpolated list. I use Mathematica 
7 and I'm a pretty newbie.
I generate a list of lists like this
List2D = {{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 5,
     1, 0, 0}, {0, 0, 1, 4, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0,
     0}};
With MatrixForm it looks like
000000
000000
005100
001400
000000
000000
Now i make a ListInterpolation first order
MyFunction = ListInterpolation[List2D, {{0, 6}, {0, 6}}, 
InterpolationOrder -> 1];
After this I norm the new Function to value 1. So I integrate
NormFactor = Integrate[MyFunction[x, y], {x, 0, 6}, {y, 0, 6}]
This works very well, the result is 396/25. For the next step, I prepare 
a new function, to make shure that outside of the interpolaten range the 
function is 0. In this step I also normalize "MyFunction":
NewFunction[xy_List] := 0 /; xy[[1]] < 2
NewFunction[xy_List] := 0 /; xy[[2]] < 2
NewFunction[xy_List] := 0 /; xy[[1]] > MaxResolution - 2
NewFunction[xy_List] := 0 /; xy[[2]] > MaxResolution - 2
NewFunction[xy_List] := MyFunction [xy[[1]], xy[[2]]]/NormFactor
Now, if I make an integration of "NewFunction" ist works really good if 
I try
Output = Integrate[NewFunction[{x, y}], {x, -10, 10}, {y, -10, 10}];
Output
Out = 1
But I can't integrate something like this
Output = Integrate[NewFunction[{x+2, y+2}], {x, -10, 10}, {y, -10, 10}];
Output
Out = 25/396 Integrate[InterpolatingFunction[{{0,6}, {0,6}}, <>][2 + x, 
2 + y],{x,-10, 10}, {y,-10,10}]
In this case the Output is no numerical result. I allways get the 
inputstring back (in a bit more graphical way). The problem is that I 
need to transform the x and y coordinate.
Numerical integration is also no option. I get the right solution, but 
with the message
"NIntegrate::slwcon: Numerical integration converging too slowly; 
suspect one of the following: singularity, value of the integration is 
0, highly oscillatory integrand, or WorkingPrecision too small. >>"
It's also too slow for my project.
I hope someone has any ideas.
Thanks a lot,
Tobias
Complete Code for trying at home
List2D = {{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 5, 1, 0,
     0}, {0, 0, 1, 4, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}};
List2D // MatrixForm
MaxResolution = Length[List2D];
MyFunction =
   ListInterpolation[List2D, {{0, MaxResolution}, {0, MaxResolution}},
    InterpolationOrder -> 1];
NormFactor = Integrate[MyFunction[x, y], {x, 0, 6}, {y, 0, 6}]
NewFunction[xy_List] := 0 /; xy[[1]] < 2
NewFunction[xy_List] := 0 /; xy[[2]] < 2
NewFunction[xy_List] := 0 /; xy[[1]] > MaxResolution - 2
NewFunction[xy_List] := 0 /; xy[[2]] > MaxResolution - 2
NewFunction[xy_List] := MyFunction [xy[[1]], xy[[2]]]/NormFactor
Output = Integrate[
    NewFunction[{x + 2, y + 2}], {x, -10, 10}, {y, -10, 10}];
Output