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