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