Re: Piecewise function generator
- To: mathgroup at christensen.cybernetics.net
- Subject: [mg1154] Re: Piecewise function generator
- From: villegas (Robert Villegas)
- Date: Sat, 20 May 1995 00:53:19 -0400
- Organization: Wolfram Research, Inc.
- References: <3p8shv$6b8@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,
> ...}
A quick and easy way is Interpolation with InterpolationOrder->1
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]:= f[x_] = Interpolation[pts, InterpolationOrder->1][x]
Out[2]= InterpolatingFunction[{20, 5000}, <>][x]
It's easier to see the effect for this data set:
In[3]:= pts = Table[{i, Sin[i]}, {i, 7}]
Out[3]= {{1, Sin[1]}, {2, Sin[2]}, {3, Sin[3]}, {4, Sin[4]}, {5, Sin[5]},
> {6, Sin[6]}, {7, Sin[7]}}
In[4]:= g[x_] = Interpolation[pts, InterpolationOrder->1][x]
Out[4]= InterpolatingFunction[{1, 7}, <>][x]
In[5]:= Plot[g[x], {x, 1, 7}]
Out[5]= -Graphics-
Robby Villegas