UnitStep vs Piecewise

*To*: mathgroup at smc.vnet.net*Subject*: [mg112659] UnitStep vs Piecewise*From*: "David Park" <djmpark at comcast.net>*Date*: Sat, 25 Sep 2010 02:19:52 -0400 (EDT)

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 properly. 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 djmpark at comcast.net <http://home.comcast.net/~djmpark> http://home.comcast.net/~djmpark/