Re: piecewise integration

*To*: mathgroup at smc.vnet.net*Subject*: [mg67002] Re: piecewise integration*From*: "Chris Chiasson" <chris at chiasson.name>*Date*: Tue, 6 Jun 2006 06:29:05 -0400 (EDT)*References*: <20060605102611.774$dR_-_@newsreader.com> <3AD65290-CE3D-41D7-B2B4-BA3BFCA7C6E6@mimuw.edu.pl>*Sender*: owner-wri-mathgroup at wolfram.com

Actually, even I have used the PiecewiseIntegrate package before. Maxim mentioned it in answer to a problem I had with DSolve & a Piecewise forcing function. I have also noticed the problem with DiracDelta functions occurring at the end points of integration. This makes me wonder how they are handled by DSolve and NDSolve. I am not presently at a Mathematica capable computer, so I can't test it. On 6/5/06, Andrzej Kozlowski <akoz at mimuw.edu.pl> wrote: > *This message was transferred with a trial version of CommuniGate(tm) Pro* > > On 5 Jun 2006, at 23:26, David W. Cantrell wrote: > > > > > > > Andrzej Kozlowski <akoz at mimuw.edu.pl> wrote: > >> On 4 Jun 2006, at 15:01, Chris Chiasson wrote: > >> > >>> The Integrate result seems pretty weak. Is there any way to obtain a > >>> more explicit exact answer besides manually converting the Piecewise > >>> function to two UnitStep functions? Can the same be done if the > >>> final > >>> limit of integration is a variable? > >>> > >>> in > >>> > >>> load[x_]=-9*10^3*DiracDelta[x]+Piecewise[{{x*10*(10^3/3), > >>> 0<=x<=3}}]-6*10^3*DiracDelta[x-5]//InputForm > >>> > >>> out > >>> > >>> -6000*DiracDelta[-5 + x] - 9000*DiracDelta[x] + > >>> Piecewise[{{(10000*x)/3, 0 <= x <= 3}}, 0] > >>> > >>> in > >>> > >>> Integrate[load[x],{x,0,5}]//InputForm > >>> > >>> out > >>> > >>> Integrate[InputForm[-6000*DiracDelta[-5 + x] - 9000*DiracDelta[x] + > >>> Piecewise[{{(10000*x)/3, 0 <= x <= 3}}, 0]], {x, 0, 5}] > >>> > >>> -- > >>> http://chris.chiasson.name/ > >>> > >> > >> I am sure Maxim does not need my help to advertise his package but > >> somehow people still keep posting such questions with surprising > >> frequency. > > > > It shouldn't surprise you. Such questions will continue to be posted > > frequently until Mathematica _itself_ can adequately handle > > integration of > > Piecewise functions. > > No doubt you are right, but I was referring to the fact that I > mentioned the package in a related context only a few days earlier > and Maxim has posted several times in detail on this topic. So I > naturaly felt a little bit like a person trying to help another > person with a Sisyphean task. > > > >> Even if for some reason you do not want to use a third > >> party package you can always look at the Mathematica code inside, > >> which should answer questions such as these. > >> > >> load[x_] = -9*10^3* > >> DiracDelta[x] + Piecewise[{{x*10*(10^3/3), 0 <= > >> x <= 3}}] - 6*10^3*DiracDelta[x - 5]; > >> << piecewise` > >> > >> In[3]:= > >> PiecewiseIntegrate[load[x],{x,0,5}] > >> > >> Out[3]= > >> 0 > > > > That might or might not be what Chris wanted. It depends on whether he > > wanted integration of DiracDelta to be handled as Mathematica does > > or as > > PiecewiseIntegrate does. > > > > Using Mathematica, we have, for example, > > > > In[28]:= Integrate[DiracDelta[x],{x,0,2}] > > Out[28]= 1/2 > > > > rather than 1, which I infer is what PiecewiseIntegrate would do. > > I confess that I never noticed that Integrate and DiracDelta in > Mathematica behaved like this at end points. It seems to me that the > Piecewise approach, which assumes that boundary points are treated > the same as interior points, is the more natural. But Chris obviously > was not interested in the answer to this particular problem but in > more general matters. It is trivial to modify the behaviour of the > package in this respect (by adding ones own rules for handling > DiracDelta) to make it conform with what Mathematica does, if one > really wanted to. But my main point was that the package is > interesting in its own right and it seems to me that anyone seriously > interested in this topic would have already taken a look at it. Why, > even people not seriously interested in it, like myself, have done so > and found interesting and instructive things in it. > > Andrzej > > > > > If Chris really wanted the integration of the DiracDelta functions > > to be > > handled as Mathematica does, then I should think he'd want > > Integrate[load[x],{x,0,5}] to return 7500, rather than your Out[3]=0. > > > > David > > > >> In[4]:= > >> PiecewiseIntegrate[load[x], {x, 0, a}] > >> > >> Out[4]= > >> If[Inequality[0, Less, a, LessEqual, 3], (5000*a^2)/3, 0] + If[3 < a, > >> 15000, 0] + If[a < 0, 9000, 0] + If[0 <= a, -9000, 0] + > >> If[5 <= a, -6000, 0] > >> > >> Andrzej Kozlowski > > -- http://chris.chiasson.name/