Re: 2D interpolation
- To: mathgroup at smc.vnet.net
- Subject: [mg72924] Re: 2D interpolation
- From: Bill Rowe <readnewsciv at sbcglobal.net>
- Date: Thu, 25 Jan 2007 07:11:30 -0500 (EST)
On 1/24/07 at 5:33 PM, F.Jouvenot at liverpool.ac.uk (Jouvenot, Fabrice)
wrote:
>I am asking (again) for your knowledge to help me. I try to have a 2
>dimensional interpolation of points {x, y, f(x,y)}. After some try,
>I wrote these lines (as an exemple of what I want to do) that works
>: ________________________________________
>
>data = {{1, 1, -10}, {1, 2, 2}, {1, 3, 3}, {1, 4, 4}, {1, 5, 5}, {2,
>1, 2}, {2, 2, 4}, {2, 3, 6}, {2, 4, 8}, {2, 5, 10}, {3., 1, -9}, {3,
>2, 6}, {3, 3, 90}, {3, 4, 12}, {3, 5, 15}, {4, 1, 4}, {4, 2, 8}, {4,
>3, 12}, {4, 4, 16}, {4, 5, 20}, {5, 1, 5}, {5, 2, 10}, {5, 3, 15},
>{5, 4, 20}, {5, 5, 40.5}};
>MatrixForm[data]
>test[x_, y_] := Interpolation[data][x, y];
>test[1.5, 1.5]
While this clearly gives you the result you are looking for this
is a very poor way to define your function. This definition will
cause Mathematica to re-compute the interpolation function
everytime it is called. That means there will be a lot more
computation than you need. A better approach would be:
In[13]:=
f=Interpolation[data];
In[14]:=
f[1.5,1.5]
Out[14]=
10.2578
Using this approach, the interpolation function is computed only once.
>Plot[test[x, 1], {x, 1, 5}];
>Plot[test[x, x], {x, 1, 5}];
Neither of the above will work since Plot will not provide both
arguments needed to define a numeric value for your function.
>Plot3D[test[x, y], {x, 1, 5}, {y, 1, 5}];
This should work albeit slowly due to the excessive computations
required as described above.
When I define the function as I've indicated above, Mathematica
returns a surface plot in about 0.04 seconds.
--
To reply via email subtract one hundred and four
- Follow-Ups:
- RE: Re: 2D interpolation
- From: "Jouvenot, Fabrice" <F.Jouvenot@liverpool.ac.uk>
- RE: Re: 2D interpolation