MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: UnitStep vs Piecewise

  • To: mathgroup at smc.vnet.net
  • Subject: [mg112676] Re: UnitStep vs Piecewise
  • From: "Sjoerd C. de Vries" <sjoerd.c.devries at gmail.com>
  • Date: Sun, 26 Sep 2010 02:43:48 -0400 (EDT)
  • References: <i7k4b6$lf4$1@smc.vnet.net>

David,

If you define g as a definite integral it works out OK.

g[value_, t1_, t2_][t_] =
 Integrate[f[value, t1, t2][tx], {tx, -\[Infinity], t}]

Using the indefinite integral wouldn't be correct in general, would
it? It works here because you start at zero, but otherwise, it would
be wrong.

Cheers -- Sjoerd

On Sep 25, 8:20 am, "David Park" <djmp... at comcast.net> wrote:
> It appears to me that there is a bug in Piecewise when it is used inside an
> Integrate or DSolve expression. On the other hand UnitStep behaves proper ly.
> Here is the example.
>
> I'm defining a square pulse using symbolic values for the start and stop
> times and then integrating it. Using UnitStep:
>
> Clear[f, g];
>
> f[value_, t1_, t2_][t_] := value (UnitStep[t - t1] - UnitStep[t - t2])
>
> g[value_, t1_, t2_][t_] = Integrate[f[value, t1, t2][t], t]
>
> Alternatively, we could calculate g by using DSolve.
>
> deqns = {g'[t] == f[value, t1, t2][t], g[t1] == 0};
>
> gsol = DSolve[deqns, g, t][[1]];
>
> g[value_, t1_, t2_][t_] = g[t] /. gsol
>
> Plot[{f[1, 0, 1][t], g[1, 0, 1][t]}, {t, -1, 2},
>
>  Exclusions -> None,
>
>  PlotStyle -> {Thin, Thick},
>
>  PlotRangePadding -> {0, 0.2},
>
>  Frame -> True, Axes -> False]
>
> Using Piecewise there appears to be a bug:
>
> Clear[f, g];
>
> f[value_, t1_, t2_][t_] := Piecewise[{{value, t1 < t < t2}}]
>
> g[value_, t1_, t2_][t_] = Integrate[f[value, t1, t2][t], t]
>
> Or alternatively using DSolve:
>
> deqns = {g'[t] == f[value, t1, t2][t], g[t1] == 0};
>
> gsol = DSolve[deqns, g, t][[1]];
>
> g[value_, t1_, t2_][t_] = g[t] /. gsol  
>
> Plot[{f[1, 0, 1][t], g[1, 0, 1][t]}, {t, -1, 2},
>
>  Exclusions -> None,
>
>  PlotStyle -> {Thin, Thick},
>
>  PlotRangePadding -> {0, 0.2},
>
>  Frame -> True, Axes -> False]
>
> Just in case I don't know how to use Piecewise, I also tried starting with
> the UnitStep definition and then converting to Piecewise using
> PiecewiseExpand, but that lead to the same error. The problem with Piecewise
> occurs with symbolic values t1 and t2 and not if it is defined with
> numerical values. I was under the impression that Piecewise was a more
> general method than using UnitStep, but perhaps not.
>
> David Park
>
> djmp... at comcast.net
>
>  <http://home.comcast.net/~djmpark>http://home.comcast.net/~djmpark/ 



  • Prev by Date: Perhaps a FindMinimum issue...
  • Next by Date: Re: ContourPlot under ListPlot3D
  • Previous by thread: Re: UnitStep vs Piecewise
  • Next by thread: Re: Interpolate in polar coordinates or cartesian