       Re: restricting interpolating functions to be positive

• To: mathgroup at smc.vnet.net
• Subject: [mg106430] Re: restricting interpolating functions to be positive
• From: Valeri Astanoff <astanoff at gmail.com>
• Date: Tue, 12 Jan 2010 04:49:50 -0500 (EST)
• References: <higdjs\$kfi\$1@smc.vnet.net>

```On 12 jan, 00:52, 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?

Good day,

Here is a DIY way to do it (just a toy example) :

In:= data = {{0, 2}, {1, 1}, {2, .2}, {3, .01}, {4, 1},
{5, 0.9}, {6, 0.05}, {7, 0.1}, {8, 1}};
xm = data[[-1, 1]];

[ we're gonna get negative interpolation with data close to zero ]

In:= f1 = Interpolation[data, InterpolationOrder -> 1];
f2 = Interpolation[data];

[ f1 is used just to locate the minimums, an additional test
should be used below to only select minimums close to zero ]

In:= dx = 0.1;

[ dx is to be adjusted accordingly ]

In:= data2 = Table[{{x}, f2[x],
If[ f1'[x - dx] < 0 && f1'[x + dx] > 0 , 0, f2'[x]]}, {x, 0, xm}]

During evaluation of In:= InterpolatingFunction::dmval: Input \
value {-0.1} lies outside the range of data in the interpolating \
function. Extrapolation will be used. >>

Out= {{{0}, 2., -0.963333}, {{1}, 1., -0.968333}, {{2},
0.2, -0.563333}, {{3}, 0.01, 0}, {{4}, 1., 0.823333}, {{5},
0.9, -0.531667}, {{6}, 0.05, 0}, {{7}, 0.1, 0.483333}, {{8}, 1.,
1.30833}}

[ Notice derivatives at 3 and 6 set to zero ]

In:= f3 = Interpolation[data2];

In:= Plot[f1[x], {x, 0, xm}]
[...]

In:= Plot[f2[x], {x, 0, xm}]
[...]

In:= Plot[f3[x], {x, 0, xm}]
[...]

Seems okay ( sure not for all cases ! )

--
Valeri Astanoff

```

• Prev by Date: Re: Re: Radicals simplify
• Next by Date: Re: Positions of earliest dates for each month in a list
• Previous by thread: Re: restricting interpolating functions to be positive
• Next by thread: Re: restricting interpolating functions to be positive