[Numpy-discussion] Interpolation question

Friedrich Romstedt friedrichromstedt at gmail.com
Sun Mar 28 18:51:38 EDT 2010


2010/3/28 Andrea Gavana <andrea.gavana at gmail.com>:
> Example 1
>
> # o2 and o3 are the number of production wells, split into 2
> # different categories
> # inj is the number of injection wells
> # fomts is the final oil recovery
>
> rbf = Rbf(oilPlateau, gasPlateau, gasInjPlateau, o2, o3, inj, fomts)
>
> op = [50380]
> gp = [103014000]
> gi = [53151000]
> o2w = [45]
> o3w = [20]
> inw = [15]
>
> fi = rbf(op, gp, gi, o2w, o3w, inw)
>
> # I => KNOW <= the answer to be close to +3.5e8
>
> print fi
>
> [ -1.00663296e+08]
>
> (yeah right...)
>
>
> Example 2
>
> Changing o2w from 45 to 25 (again, the answer should be close to 3e8,
> less wells => less production)
>
> fi = rbf(op, gp, gi, o2w, o3w, inw)
>
> print fi
>
> [  1.30023424e+08]
>
> And keep in mind, that nowhere I have such low values of oil recovery
> in my data... the lowest one are close to 2.8e8...

I want to put my2 cents in, fwiw ...

What I see from
http://docs.scipy.org/doc/scipy-0.7.x/reference/generated/scipy.interpolate.Rbf.html#scipy.interpolate.Rbf
are three things:

1. Rbf uses some weighting based on the radial functions.
2. Rbf results go through the nodal points without *smooth* set to
some value != 0
3. Rbf is isotropic

(3.) is most important.  I see from your e-mail that the values you
pass in to Rbf are of very different order of magnitude.  But the
default norm used in Rbf is for sure isotropic, i.e., it will result
in strange and useless "mean distances" in R^N where there are N
parameters.  You have to either pass in a *norm* which weights the
coords according to their extent, or to scale the data such that the
aspect ratios of the hypecube's edges are sensible.

You can imagine it as the follwing ascii plot:

   *             *                             *
*      *              *                         *

the x dimension is say the gas plateau dimension (~1e10), the y
dimension is the year dimension (~1e1).  In an isotropic plot, using
the data lims and aspect = 1, they may be well homogenous, but on this
scaling, as used by Rbf, they are lumped.  I don't know if it's clear
what I mean from my description?

Are the corresponding parameter values spread completely randomly, or
is there always varied only one axis?

If random, you could try a fractal analysis to find out the optimal
scaling of the axes for N-d coverage of N-d space.  In the case above,
is is something between points and lines, I guess.  When scaling it
properly, it becomes a plane-like coveage of the xy plane.  When
scaling further, it will become points again (lumped together).  So
you can find an optimum.  There are quantitative methods to obtain the
fractal dimension, and they are quite simple.

Friedrich



More information about the NumPy-Discussion mailing list