Re: Re: restricting interpolating functions to be positive
- To: mathgroup at smc.vnet.net
- Subject: [mg106477] Re: [mg106455] Re: restricting interpolating functions to be positive
- From: DrMajorBob <btreat1 at austin.rr.com>
- Date: Thu, 14 Jan 2010 05:46:58 -0500 (EST)
- References: <higdjs$kfi$1@smc.vnet.net> <201001131058.FAA06854@smc.vnet.net>
- Reply-to: drmajorbob at yahoo.com
For some data, that works pretty well; for other samples it has HUGE peaks, reaching far above any of the data: data = Sort at RandomReal[{0.1, 1}, {20, 2}]; {min, max} = data[[{1, -1}, 1]] f = Interpolation@data; logdata = data /. {x_, y_} -> {x, Log[y]}; interp = Exp[Interpolation[logdata]@#] &; Show[Plot[Evaluate@Through[{f, interp}@x], {x, min, max}, PlotRange -> All]] (run it several times) The same thing happens here, but not as dramatically: data = Sort at RandomReal[{0.1, 1}, {20, 2}]; {min, max} = data[[{1, -1}, 1]] f = Interpolation@data; logdata = data /. {x_, y_} -> {x, Sqrt[y]}; interp = (Interpolation[logdata]@#)^2 &; Show[Plot[Evaluate@Through[{f, interp}@x], {x, min, max}, PlotRange -> All]] Bobby On Wed, 13 Jan 2010 04:58:01 -0600, Noqsi <jpd at noqsi.com> wrote: > On Jan 11, 4:52 pm, dantimatter <goo... at dantimatter.com> wrote: >> Hi All, >> >> I would like to construct an interpolation that can only take on >> positive values. The data that I'm trying to interpolate is all >> positive, but for some reason the Interpolation[] function 'wants' to >> connect the dots by dipping below zero. Is there a way to force >> positivity? Or should I simply adjust the InterpolationOrder until it >> works? > > One way is to transform the data. Choose a positive real function f, > apply its inverse to the data. Tranform the interpolation back using > f. > > Exp[] often is a good choice for f. Using Valeri's example data: > > data = {{0, 2}, {1, 1}, {2, .2}, {3, .01}, {4, 1}, {5, 0.9}, {6, > 0.05}, {7, 0.1}, {8, 1}} > logdata = data /. {x_, y_} -> {x, Log[y]} > interp[x_] = Exp[Interpolation[logdata][x]] > > If you plot interp[x], you'll see that it avoids zero. > -- DrMajorBob at yahoo.com
- References:
- Re: restricting interpolating functions to be positive
- From: Noqsi <jpd@noqsi.com>
- Re: restricting interpolating functions to be positive