In this chapter three concepts are explained:
The second concept is used in order to calculate a position in the past. The third concept is used to find the maximum position of Mercury.
In order to simulate Newtons Law three parameters are calculated:
acceleration : a, ax and ay speed : v, vx and vy position : s, x and y
At each iteration or simulation cycle those three parameters are more or less calculated as follows:
an = function of m1, m2 and distance vn = vn + an * t sn = sn + vn * t
The problem with this method is accuracy. When the initial values are zero this is not a problem. On the other hand when the initial speed is 100 and acceleration small then after each iteration the speed stays more or less constant but the position not. The position increases linear with at each iteration becoming less accurate because the influence of a is decimated.
Two improve accuracy in x direction 3 accumulators are defined for each of the objects used: two for acceleration (Sa and SSa) and one for speed (Sv). The same for y direction
As a result for each iteration only the values of the accumulators have to be calculated and not speed and position. The position is only necessary if you want to display the place an object. The accuracy of the distance between two objects (necessary for acceleration) is drastically improved.
Initial conditions
m0 = mass of object 0 m1 = mass of object 1 s0 = distance between object 0 and object 1 at t = 0 or iteration 0 v0 = speed of object 0 at t = 0 or iteration 0 t = delta t = time period between each iteration (calculation cycle)At iteration 1 the following values are calculated:
a0 = m1 * G / r² r² = s0 * s0 a0x = a0 * dx / s0 v1 = v0 + a0 * t s1 = s0 + v1 * t = s0 + v0 * t + a0 * t² t² = t * t
At iteration 2 the following values are calculated:
a1 = m1 * G / r² r² = s1 * s1 a1x = a1 * dx / s1 v2 = v1 + a1 * t = v0 + (a0 + a1) * t s2 = s1 + v2 * t = s0 + v0 * t + a0 * t² + v0 * t + (a0 + a1) * t² = s0 + 2 * v0 * t + (2 * a0 + a1) * t²
At iteration 3 the following values are calculated:
a2 = m1 * G / r² r² = s2 * s2 a2x = a2 * G / s2 v3 = v2 + a2 * t = v0 + (a0 + a1 + a2) * t s3 = s2 + v3 * t = = s0 + 3 * v0 * t + (3 * a0 + 2 * a1 + a0) * t
At iteration n the following values are calculated:
an = m1 * G / r² r² = sn-1 * sn-1 anx = an * dx / sn-1 any = an * dy / sn-1 San = a0 + a1 + a2 .... an = San-1 + an SSan = Sa0 + Sa1 + Sa2 .... San = SSan-1 + San Svn = n * v0 = Svn-1 + v0 vnt = v0 + San * t snt = s0 + Svn * t + SSan * t²
for x and y the following applies
vxnt = vx0 + Sanx * t (2.1) vynt = vy0 + Sany * t (2.2) sxnt = x0 + Svnx * t + SSanx * t² (2.3) synt = y0 + Svny * t + SSany * t² (2.4)
Sanx = a0x + a1x + a2x .... anx = San-1x + anx (2.5) SSanx = Sa0x + Sa1x + Sa2x .... Sanx = SSan-1x + Sanx (2.6) Svnx = n * v0x = Svn-1x + v0x (2.7) Sany = a0y + a1y + a2y .... any = San-1y + any (2.8) SSany = Sa0y + Sa1y + Sa2y .... Sany = SSan-1y + Sany (2.9) Svny = n * v0y = Svn-1y + v0y (2.10)
For each iteration only the equations 2.5 until 2.10 have to be calculated.
Using equation 2.3 the distance between two objects 1 and 2 is calculated as follows:
s = (x01 - x02) + (Svnx1 - Svnx2) * t + (SSanx1 - SSanx2) * t² (2.11)
The brackets are important. First all the values in between the brackets are calculated and then the sum is calculated thereby minimising the influence of x0
Two values are measured:
x0 at iteration = 0 x1 at iteration = 1What is the value xn for 0
xn = a + bn x0 = a for n = 0 x1 = a + b for n = 1 b = x1 - x0 xn = x0 + (x1 - x0) * n
for yn the following applies:
yn = y0 + (y1 - y0) * n
Three values are measured:
x0 at n = 0 x1 at n = 1 x2 at n = 2What is the value xn for 0
xn = a + bn + cn² x0 = a for n = 0 x1 = a + b + c for n = 1 x2 = a + 2b + 4c for n = 2
x0 = a x1 = x0 + b + c * -2 x2 = x0 + 2b + 4c * 1 x2 - 2x1 = -x0 + 2c c = x0/2 - x1 + x2/2
b = x1 - x0 - c = x1 - x0 - x0/2 + x1 - x2/2 = -3x0/2 + 2x1 -x2/2 xn = x0 + (-3x0 + 4x1 - x2) * n / 2 + (x0 - 2x1 + x2) * n² / 2 (2.12)
For yn the following applies:
yn = y0 + (-3y0 + 4y1 - y2) * n / 2 + (y0 - 2y1 + y2) * n² / 2 (2.13)
Example:
x0 = x0 x1 = x0 + v1.t x2 = x1 + v2.t = x0 + v2.t + v1.t
xnt = x0 + (-3x0 + 4x0 + 4v1.t - x0 - v2.t - v1.t) * n / 2 + ( x0 - 2x0 - 2v1.t + x0 + v2.t + v1.t) * n² / 2
xnt = x0 + (3v1.t - v2.t ) * n / 2 + (- v1.t + v2.t ) * n² / 2
Three values are measured:
xn at t = n xn1 at t = n-1 xn2 at t = n-2What is the value xnt for n
xnt = xn + (-3xn + 4xn1 - xn2) * n/2 + (xn - 2xn1 + xn2) * n²/2
xn = x0 + Svx.t + SSax.t² xn-1 = x0 + Svx-1.t + SSax-1.t² xn-2 = x0 + Svx-2.t + SSax-2.t²
xnt = x0 + Svx.t + SSax.t² +{ -3x0 -3Svx.t -3SSax.t² +4x0 +4Svx-1.t +4SSax-1.t² - x0 - Svx-2.t - SSax-2.t² } * n/2 +{ x0 + Svx.t + SSax.t² -2x0 -2Svx-1.t -2SSax-1.t² + x0 + Svx-2.t + SSax-2.t² } * n²/2 xnt = x0 + Svx.t + SSax.t² +{ -3Svx.t -3SSax.t² +4Svx-1.t +4SSax-1.t² - Svx-2.t - SSax-2.t² } * n/2 +{ Svx.t + SSax.t² -2Svx-1.t -2SSax-1.t² + Svx-2.t + SSax-2.t² } * n²/2
Svx = n * vx0 Svx-1 = (n-1) * vx0 Svx-2 = (n-2) * vx0
-3Svx + 4Svx-1 - Svx-2 = -3n*vx0 +4n*vx0 -4vx0 -n*vx0 +2vx0 = -2vx0 Svx - 2Svx-1 + Svx-2 = n*vx0 -2n*vx0 +2vx0 +n*vx0 -2vx0 = 0
xnt = x0 + Svx.t + SSax.t² +{ -2vx0.t -3SSax.t² +4SSax-1.t² - SSax-2.t² } * n/2 +{ SSax.t² -2SSax-1.t² + SSax-2.t² } * n²/2
SSax = SSax-1 + Sax SSax-1 = SSax-2 + Sax-1 SSax = SSax-2 + Sax-1 + Sax
xnt = x0 + Svx.t + SSax.t² +{ -2vx0.t - 3SSax-2.t² -3Sax-1.t² -3Sax.t² +4SSax-2.t² +4Sax-1.t² - SSax-2.t² } * n/2 +{ + SSax-2.t² + Sax-1.t² + Sax.t² -2SSax-2.t² -2Sax-1.t² + SSax-2.t² } * n²/2Remove SSax-2.t²
xnt = x0 + Svx.t + SSax.t² +{ -2vx0.t -3Sax-1.t² -3Sax.t² +4Sax-1.t²} * n/2 +{ + Sax-1.t² + Sax.t² -2Sax-1.t²} * n²/2
xnt = x0 + Svx.t + SSax.t² +{ -2vx0.t + Sax-1.t² -3Sax.t²} * n/2 +{ - Sax-1.t² + Sax.t²} * n²/2
Equation in y direction is identical.
xnt (n=0) = x0 + Svx.t + SSax.t² xn-1t (n=1) = x0 + Svx.t + SSax.t² -vx0.t -Sax.t² xn-2t (n=2) = x0 + Svx.t + SSax.t² -2vx0.t -Sax.t² -Sax-1.t²
For a function :
f(t) = a + b * t + c * t²
the maximum is at :
df/dt = 0 b + 2c * t = 0 t = - b / 2c
in equation 2.12 the values of of a, b and c are:
s0 = sqrt (x0²+ y0²) etc for s1 and s2 a = s0 b = (-3s0 + 4s1 - s2)/2 c = (s0 - 2s1 + s2) / 2Using those values the maximum is at :
3s0 - 4s1 + s2 t = --------------- 2s0 - 4s1 + 2s2
Return back to INDEX.TXT