MathGroup Archive 2013

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

Search the Archive

Re: How to remove a singularity

  • To: mathgroup at smc.vnet.net
  • Subject: [mg130523] Re: How to remove a singularity
  • From: Peter Pein <petsie at dordos.net>
  • Date: Fri, 19 Apr 2013 01:13:45 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-newout@smc.vnet.net
  • Delivered-to: mathgroup-newsend@smc.vnet.net
  • References: <kkoelp$gl3$1@smc.vnet.net>

Am 18.04.2013 11:33, schrieb William Duhe:
> Bellow I have a differential equation which hits a singularity at low values of t. What I want to do is somehow utilize the WhenEvent command in order to replace the last factor of the equation (2/t a'[t]) with 0 at low values of t in order to avoid getting errors. Is there a way to do this?
> 
> Here is an example of the equation and how I attempted to use the Whenevent Command.
> 
> q = NDSolve[{a''[t] == 1/2 a[t]^2 + 1/6 a[t]^6 - 1/4 a[t]^4 - 2/t a'[t], a[0] == 1, a'[0] == 0, WhenEvent[t < .1, a'[t] -> 0]}, a, {t, 0, 1}];
> 
> any help would be appreciated!
> 

Hi,

 mathematically incorrect but working:

In[1]:= With[{eps = SetPrecision[$MachineEpsilon, Infinity]},
  soln = a /.
     NDSolve[{a''[t] ==
        1/2 a[t]^2 + 1/6 a[t]^6 - 1/4 a[t]^4 - 2/t  a'[t],
       a[eps] == 1, a'[eps] == 0}, a, {t, eps, 1},
      WorkingPrecision -> 16] // First
  ];

In[2]:= Abs[1 - soln[0]]
Derivative[1][soln][0]
soln[1]

Out[2]= 0.*10^-16

Out[3]= 0.*10^-2

Out[4]= 1.073198752912019

Peter




  • Prev by Date: Re: Plot with axes exchanged
  • Next by Date: linux mathematica speed
  • Previous by thread: Re: How to remove a singularity
  • Next by thread: linux mathematica speed