MathGroup Archive 2002

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

Search the Archive

Re: Problem with NDSolve

  • To: mathgroup at smc.vnet.net
  • Subject: [mg37884] Re: Problem with NDSolve
  • From: Selwyn Hollis <hollisse at mail.armstrong.edu>
  • Date: Sat, 16 Nov 2002 01:16:07 -0500 (EST)
  • References: <200210220847.EAA27452@smc.vnet.net> <ar25in$g4h$1@smc.vnet.net>
  • Reply-to: selwynh at earthlink.net
  • Sender: owner-wri-mathgroup at wolfram.com

Hi Sergio,

If you look at your i2[t] expression, you'll see that it has a term 
involving DiracDelta[t-.5]. There is no way a numerical algorithm is 
going to deal correctly with that. Here's a simple, though not totally 
satisfactory, work-around:

First define an approximate Dirac distribution (a pulse with "width" r):

  nDelta[x_, r_] := (UnitStep[x + r/2] - UnitStep[x - r/2])/r

Then replace the DiracDelta function in i2[t] with nDelta:

  ni2[t_] = i2[t]/.DiracDelta[x_] -> nDelta[x,.001];

  NDSolve[{i1[t] == ni2[t], vout[0] == 0},
     vout, {t, 0, 10.}, MaxStepSize->.001,  MaxSteps->10^5]

Note that the setting for MaxStepSize is the same as the width of the 
pulse. You'll see that the result agrees fairly well with your 
"physical" solution.

---
Selwyn Hollis



  • Prev by Date: Re: Characters Allowed in Symbols
  • Next by Date: Re: NestWhile
  • Previous by thread: Re: Installing mathematica for linux
  • Next by thread: Re: Problem with NDSolve