Re: Piecewise functions
- To: mathgroup at smc.vnet.net
- Subject: [mg23162] Re: [mg23119] Piecewise functions
- From: Hartmut Wolf <hwolf at debis.com>
- Date: Thu, 20 Apr 2000 23:48:36 -0400 (EDT)
- Organization: debis Systemhaus
- References: <200004190630.CAA07527@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
An Le schrieb:
>
> Can someone send me some notebook and package files to do piecewise
> functions? I can't seem to be able to do it with mathematica.
>
> The only thing i get close to is using the Which[] function, but I can't
> integrate with that function.
>
An Le,
if you have your function defined piecewise, you might define
f[x_]:= f1[x] UnitStep[x-x0] UnitStep[x1-x] +
f2[x] UnitStep[x-x1] UnitStep[x2-x] +
... +
f<<n>>[x] UnitStep[x-x<<n-1>>] UnitStep[x<<n>>-x]
and try.
If f should be piecewise linear then e.g. f1 is
f1[x] -> y0 + (y1 - y0)/(x1 - x0) (x - x0)
if you have function values {y0, y1, ..., y<<n>>} at {x0, x1, ...,
x<<n>>};
etc.
In this case you can make things more simple; define
n = 9
y = (c = 0; Table[c += Random[Real, {-10, 10}], {n}])
x = Join[{0.}, Sort[Table[Random[Real, {0, 100}], {n-2}]], {100.}]
pts = Transpose[{x, y}]
ListPlot[pts, PlotJoined -> True, PlotRange -> {{0, 100}, All}]
dx = (#2 - #1 &) @@@ Partition[x, 2, 1]
dy = (#2 - #1 &) @@@ Partition[y, 2, 1]
m = dy/dx
PrependTo[m, 0.]
f[\[Xi]_] =
First[y] +
Plus @@ MapThread[(Subtract @@ #1) (#2 - \[Xi]) UnitStep[\[Xi] - #2]
&, \
{Partition[m, 2, 1], Drop[x, -1]}]
Plot[f[x], {x, 0., 100.}]
Kind regards, Hartmut
- References:
- Piecewise functions
- From: An Le <an_le@brown.edu>
- Piecewise functions