MathGroup Archive 2004

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

Search the Archive

Re: NDSolve for Newtonian Orbits Question

  • To: mathgroup at smc.vnet.net
  • Subject: [mg47317] Re: [mg47297] NDSolve for Newtonian Orbits Question
  • From: Selwyn Hollis <sh2.7183 at misspelled.erthlink.net>
  • Date: Mon, 5 Apr 2004 05:22:55 -0400 (EDT)
  • References: <200404020831.DAA13114@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Hi David,

You're running into problems because your equation has (r'[t])^2 taking 
on negative values. You can get around the problem by differentiating 
each side to obtain a second-order equation. Your value of En would 
then enter in via an initial condition. Try this:

Veff[M_, h_][r_] = -M/r + (1/2)*(h^2/r^2)
deqn[M_, h_] = 0 == Simplify[(1/r'[t])*D[(1/2)*r'[t]^2 + Veff[M, 
h][r[t]], t]]


NDSolve[{deqn[1,1], r[0]==1.5, r'[0]==Sqrt[2*(-0.3-Veff[1, 1][1.5])]}, 
r, {t,0,10}]
rr[t_] = r[t] /. First[%]
Plot[rr[t], {t, 0, 10}];

-----
Selwyn Hollis
http://www.math.armstrong.edu/faculty/hollis
(edit reply-to to reply)

On Apr 2, 2004, at 3:31 AM, David Park wrote:

> Dear MathGroup,
>
> I am trying to obtain a numerical solution for Newtonian orbits. (I 
> can solve the
> du/dphi equation symbolically with DSolve to obtain the equation of an 
> ellipse, but I also want to know how to do numerical solutions.) I'm 
> having difficulty in knowing how to use NDSolve. For a start I just 
> want to solve for the radius r as a function of time.
>
> Here are the equations. We have an effective potential given by
>
> Clear[r]
> Veff[M_, h_][r_] = -M/r + (1/2)*(h^2/r^2)
>
> M is the attracting mass and h is the angular momentum. The following 
> is a plot of a particular case.
>
> Plot[Veff[1, 1][r], {r, 0.5, 10},
>     PlotRange -> All,
>     Frame -> True,
>     FrameLabel -> {r, Veff},
>     Axes -> False,
>     ImageSize -> 450];
>
> The differential equation is given by...
>
> deqn[M_, h_, En_] = En == (1/2)*Derivative[1][r][t]^2 + Veff[M, 
> h][r[t]]
> En == h^2/(2*r[t]^2) - M/r[t] + (1/2)*Derivative[1][r][t]^2
>
> where En is the energy. If I pick the energy to be -0.3 and put r[0] 
> somewhere in the orbit range I should obtain a nice elliptical orbit. 
> But when I try to solve I run into all kinds of problems.
>
> Clear[r]
> NDSolve[{deqn[1, 1, -0.3], r[0] == 1.5}, r, {t, 0, 10}]
> r[t_] = r[t] /. Part[%, 2]
>
> Plot[r[t], {t, 0, 5.25}];
>
> It appears that the numerical solution gets stuck at the turning 
> points. How can I obtain an extended solution?
>
> David Park
> djmp at earthlink.net
> http://home.earthlink.net/~djmp/
>
>
>


  • Prev by Date: Open letter: Who steals memory? :-)
  • Next by Date: bug in Random
  • Previous by thread: NDSolve for Newtonian Orbits Question
  • Next by thread: Re: NDSolve for Newtonian Orbits Question