[Numpy-discussion] Interpolation question

Robert Kern robert.kern at gmail.com
Sun Mar 28 14:22:24 EDT 2010


On Sun, Mar 28, 2010 at 03:26, Anne Archibald <peridot.faceted at gmail.com> wrote:
> On 27 March 2010 20:24, Andrea Gavana <andrea.gavana at gmail.com> wrote:
>> Hi All,
>>
>>    I have an interpolation problem and I am having some difficulties
>> in tackling it. I hope I can explain myself clearly enough.
>>
>> Basically, I have a whole bunch of 3D fluid flow simulations (close to
>> 1000), and they are a result of different combinations of parameters.
>> I was planning to use the Radial Basis Functions in scipy, but for the
>> moment let's assume, to simplify things, that I am dealing only with
>> one parameter (x). In 1000 simulations, this parameter x has 1000
>> values, obviously. The problem is, the outcome of every single
>> simulation is a vector of oil production over time (let's say 40
>> values per simulation, one per year), and I would like to be able to
>> interpolate my x parameter (1000 values) against all the simulations
>> (1000x40) and get an approximating function that, given another x
>> parameter (of size 1x1) will give me back an interpolated production
>> profile (of size 1x40).
>
> If I understand your problem correctly, you have a function taking one
> value as input (or one 3D vector) and returning a vector of length 40.
> You want to know whether there are tools in scipy to support this.
>
> I'll say first that it's not strictly necessary for there to be: you
> could always just build 40 different interpolators, one for each
> component of the output. After all, there's no interaction in the
> calculations between the output coordinates. This is of course
> awkward, in that you'd like to just call F(x) and get back a vector of
> length 40, but that can be remedied by writing a short wrapper
> function that simply calls all 40 interpolators.
>
> A problem that may be more serious is that the python loop over the 40
> interpolators can be slow, while a C implementation would give
> vector-valued results rapidly.

40 is not a bad number to loop over. The thing I would be worried
about is the repeated calculation of the (1000, 1000) radial function
evaluation. I think that a small modification of Rbf could be made to
handle the vector-valued case. I leave that as an exercise to Andrea,
of course. :-)

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
  -- Umberto Eco



More information about the NumPy-Discussion mailing list