MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: multivariate interpolation

  • To: mathgroup at smc.vnet.net
  • Subject: [mg110936] Re: multivariate interpolation
  • From: Silvio Abruzzo <silvio.abruzzo at gmail.com>
  • Date: Mon, 12 Jul 2010 07:21:50 -0400 (EDT)
  • References: <i1e7pb$95b$1@smc.vnet.net>

Dear Ingolf Dahl,
    thank you very much. It is exactly what I was looking for.
I tried with other data that I have and the interpolation with the
small numbers works very good, better than the interpolation with the
big numbers.
Best regards,

Silvio


On Jul 12, 7:04 am, "Ingolf Dahl" <ingolf.d... at telia.com> wrote:
> Here is my suggestion:
> Restructure the data matrix in two steps
>
> data1 = Flatten[data, 1];
>
> data2 = Table[{{data1[[i, 1]], data1[[i, 2]]}, {data1[[i, 3]],
>     data1[[i, 4]], data1[[i, 5]]}}, {i, Length[data1]}];
>
> The list data2 can be used for interpolation
>
> f[a_, b_, x_] := Simplify[Interpolation[data2][a, b]]
>
> f[10.45, 0.065, x]
>
> gives
>
> {1000.67,8.09232*10^7,0.731501-22.7918 Sqrt[1/x]+151.976/x}
>
> Was this what you were looking for?
>
> I suggest that instead of working with large x, you should work with smal=
l
> y, where x = 1/y^2. The limits will then be very small number instead o=
f
> very large. It seems plausible that linear interpolation should be more
> exact for small numbers than for large.
>
> x := 1/y^2
>
> data3 = Table[{{data1[[i, 1]],
>      data1[[i, 2]]}, {Sqrt[1./data1[[i, 4]]], Sqrt[1./data1[[i, 3]]=
],
>      data1[[i, 5]]}}, {i, Length[data1]}] /. {Sqrt[y^2] -> y};
>
> Instead of f we might define g. The first two elements in the result are
> then the limits for y.
>
> g[a_, b_, y_] := Expand[Simplify[Interpolation[data3][a, b]]]
>
> g[9., 0.09, y]
>
> gives
>
> {0.000140028,0.031607,0.651531-21.3675 y+128.192 y^2}
>
> I guess that g gives a "better" interpolation than f
>
> Best regards
>
> Ingolf Dahlhttp://www.familydahl.se/mathematica
>
>
>
> > -----Original Message-----
> > From: Silvio Abruzzo [mailto:silvio.abru... at gmail.com]
> > Sent: den 11 juli 2010 12:20
> > To: mathgr... at smc.vnet.net
> > Subject:  multivariate interpolation
>
> > Dear Group,
> >   I have the following problem. I have a matrix of this form
> > {{{9, 0.01, 1001, 269250000,
> >    0.944218 - 12.6734 Sqrt[1/x] + 72.8455/x}, {10, 0.01, 1001,
> >    269250000, 0.944134 - 13.1619 Sqrt[1/x] + 71.1457/x}, {11, 0.01,
> >    1001, 269250000, 0.944054 - 13.6278 Sqrt[1/x] + 69.5111/x},....
>
> > where the first two numbers are parameters and the third and fourth
> > number represent the bounds where the function in the last entries is
> > usable. I would like to interpolate the first, second and last column
> > in such a way that I have as result a function f[a_, b_, x_] were when
> > a and b are fixed and corresponds to some value in the matrix above
> > the function in the last column is used and when there is not the
> > corresponding entry the interpolation is used. A method to achieve my
> > goal is to calculate in some point between the min and the max the
> > function in the last column in order that I have a tensor product
> > structure and then to use the function Interpolation. Although this
> > method should work enough well, I would like to know if there is a
> > method to use all analytical information contained in the function in
> > the last column in order to produce a better interpolation.
>
> > Best regards,
>
> > Silvio



  • Prev by Date: Re: Simple Question
  • Next by Date: Restricting file type with SystemDialogInput
  • Previous by thread: Re: multivariate interpolation
  • Next by thread: Stem and Leaf Question