Variable Step rates in loops

G

gtslabs

I am working on an astronomy project where I need to get all the
conjunctions of 2 planets between 2 dates.
I have functions that give me the Longitude of each planet and the
Angular Separation between 2 longitudes. These are based on a Julian
Day.

I need help with how to get the most accurate date/time of each event
where PAS (Planetry Angular Separation) = 0 or less than X (say
0.001*)

When I step thur my routine with the Julian Day (JD) by 1 I dont get
the precision as if I steped thru at 0.0001.
Obvously the 0.0001 step would take forever if I am searching over 30
years.

Is there a way to have a variable STEP that reduces based on the value
of my PAS?
Then once one event is solved, the step would go back to 1 and start
the loop over?

Thanks
 
L

Leith Ross

gtslabs;230211 said:
I am working on an astronomy project where I need to get all the
conjunctions of 2 planets between 2 dates.
I have functions that give me the Longitude of each planet and the
Angular Separation between 2 longitudes. These are based on a Julian
Day.

I need help with how to get the most accurate date/time of each event
where PAS (Planetry Angular Separation) = 0 or less than X (say
0.001*)

When I step thur my routine with the Julian Day (JD) by 1 I dont get
the precision as if I steped thru at 0.0001.
Obvously the 0.0001 step would take forever if I am searching over 30
years.

Is there a way to have a variable STEP that reduces based on the value
of my PAS?
Then once one event is solved, the step would go back to 1 and start
the loop over?

Thanks

Hello gtslabs,

I am not an astronomer, so I can't fully answer your question. What you
need is a recursive VBA Function. The function would need to be seeded
and then the results of the algorithm are fed back into the function as
arguments. There needs to be some check inside the algorithm to
determine when the function should stop calculating and return the
result.

Which algorithm or algorithms you need I can't say. If I owned a copy
of Jean Meeus book "Astronomical Algorithms, second edition", I probably
could. Perhaps someone who is an astronomer will be able to offer you
more insight. I do know that it is possible.


--
Leith Ross

Sincerely,
Leith Ross

'The Code Cage' (http://www.thecodecage.com/)
 
D

Dana DeLouis

Hi. Would a simple linear interpolation function work for you?
If at day 10, planet a is 4 degrees ahead of B, and on day 20 it is -12
degrees behind, then a very simple next guess might be...

Sub Example()
Debug.Print NextGuess(10, 4, 20, -12)
End Sub

Returns: 12.5

Meaning that a guess of when they were the closest is day 12, at around
noon.
Use this, and the closest of the previous two observations, and loop again.

Function NextGuess(t1, d1, t2, d2)
'Time 1, Difference 1, time 2, Difference 2

NextGuess = (d1 * t2 - d2 * t1) / (d1 - d2)
End Function

= = =
HTH :>)
Dana DeLouis
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top