Re: Piecewise function generator

• To: mathgroup at christensen.cybernetics.net
• Subject: [mg1182] Re: Piecewise function generator
• From: roth at sunny.mpimf-heidelberg.mpg.de (Arnd Roth)
• Date: Sat, 20 May 1995 05:33:34 -0400
• Organization: Max-Planck-Institut fuer Medizinische Forschung

```In article <3p8shv\$6b8 at news0.cybernetics.net>
REECE_D <REECE+_D%A1%Electromagnetic_Sciences at mcimail.com> writes:

>    I want to generate a piecewise continuous linear function by giving a
> function, call it F, a list of {x,y} values defining the corners of the
> function.  I can't seem to do it.  Does anyone out there have a quick way
> of doing it?
>
>    pts={{20,0.08},{50,0.8},{250,0.8},{5000,0.004}}
>
>    F[pts_] := ????
>
>    F[pts]
>
>    Out:
>    {(0.72 f-12)/30 /; 20<=f<=50,
>    ...}

There is a built-in object for such purposes,
InterpolatingFunction. Try this:

In[1]:= pts={{20,0.08},{50,0.8},{250,0.8},{5000,0.004}}
Out[1]= {{20, 0.08}, {50, 0.8}, {250, 0.8}, {5000, 0.004}}

In[2]:= ?Interpolation
Interpolation[data] constructs an InterpolatingFunction
object which represents an approximate function that
interpolates the data. The data can have the forms {{x1,
f1}, {x2, f2}, ...} or {f1, f2, ...}, where in the second
case, the xi are taken to have values 1, 2, ....

In[3]:= ?InterpolationOrder
InterpolationOrder is an option to Interpolation.
InterpolationOrder -> n specifies interpolating
polynomials of order n.

In[4]:= F[points_] := Interpolation[points, InterpolationOrder -> 1]
In[5]:= specialF = F[pts]

Out[5]= InterpolatingFunction[{20, 5000}, <>]

In[6]:= Plot[specialF[x], {x, 20, 5000}]
Out[6]= -Graphics-

In[7]:= InputForm[specialF]
Out[7]//InputForm=
InterpolatingFunction[{20, 5000}, {{20, 20, {0.08, 0}, {0}},
{50, 20, {0.8, 0.024}, {0}}, {250, 50, {0.8, 0.}, {0}},
{5000, 250, {0.004, -0.0001675789473684210526}, {0}}}]
(* this is the internal data structure for this
InterpolatingFunction                        *)

Arnd Roth
Abteilung Zellphysiologie
Max-Planck-Institut fuer Medizinische Forschung
Postfach 10 38 20, D-69028 Heidelberg, Germany
http://sunny.mpimf-heidelberg.mpg.de/people/roth/ArndRoth.html

```

• Prev by Date: Question from Blind User
• Next by Date: MMA List Output Query
• Previous by thread: Re: Piecewise function generator
• Next by thread: Re: Piecewise function generator