HP35s per astronomia, astrofisica e calcolo scientifico

a cura di Paolo Botton
aggiornato: 18 luglio 2018


A partire dal mese di novembre 2014, a seguire, con cadenza non definita, ho avviato la progettazione di una serie di programmi, per la calcolatrice scientifica programmabile HP35s, che possano tornare utili nel settore di ricerca in cui operiamo, ogni qualvolta che non sia possibile ricorrere ad un computer o alla più massiccia HP50g.
La HP35s è una calcolatrice scientifica programmabile con doppia notazione, RPN e SOA, e memoria interna di 31kByte; mette a disposizione 26 etichette da A-Z, 4 flag ad uso generico, 7 flag specifici di sistema, indirizzamento indiretto con i registri I e J, gestione delle iterazioni controllate (DSE, ISG) e dei salti condizionati e incondizionati, 20 livelli di subroutine, 999 instruzioni per programma e 801 possibili registri di memoria indiretta condivisi con la memoria di programmazione.
Il firmware residente permette la verifica della checksums di ogni routine inserita ed il riordino automatico delle linee di programma, compresi i salti incondizionati e condizionati, in caso di inserimento o cancellazione di linee di codice.

I programmi NON possono essere utilizzati a livello professionale, sono di libero dominio ma forniti così come sono, senza alcuna garanzia implicita o esplicita. Non è fornita assistenza o personalizzazione; i programmi sono stati ampiamente provati, ma chi li utilizzerà lo farà a proprio rischio e si assumerà tutte le responsabilità.
Lo scrivente, il sodalizio SideroGRID e/o i suoi membri non sono o saranno responsabili di eventuali danni diretti o indiretti, di qualsiasi natura o entità provocati o imputabili ai programmi qui descritti
.
L'operatore deve essere pratico nell'uso della calcolatrice scientifica HP35s.
Il trasferimento, su qualsiasi calcolatrice o sistema di elaborazione digitale, del codice presente in questa pagina, presuppone l'accettazione tacita e senza alcuna deroga della clausola liberatoria sopra indicata.

Programmi disponibili alla data dell'aggiornamento della pagina:

19.11.2014   Conversione da data civile a data giuliana
21.11.2014   Calcolo del Tempo medio siderale locale (TSML)
24.11.2014   Calcolo delle ore medie di luce in un dato giorno dell'anno
25.11.2014   Calcolo del numero di giorni tra due date
26.11.2014   Conversione da data giuliana a data civile
27.11.2014   Algoritmo ALBA-TRAMONTO corretto solo un commento il 30.11.2014
08.12.2014   Radici di un'equazione di secondo grado. 2 programmi: didattico (08.12) e subroutine (13.12)
15.12.2014   Calcolo della data della Pasqua per un determinato anno

07.12.2017   Conversione da data civile a data giuliana. Programma alternativo corretto il coefficiente 30.6001 il 18.07.2018
07.12.2017   Calcolo del Tempo medio siderale locale (TSML). Programma alternativo corretto un errore il 17.07.2018


Conversione da data civile a data giuliana

Per i dettagli della data giuliana, cortesemente accedere al menu a tendina [Documentazione] —› [La misura del tempo].
Il programma ci torna utile quando sia necessario etichettare un istante preciso durante una sessione di osservazione sia visuale, sia fotografica.
In genere è utilizzato quando si acquisiscono i dati fotometrici delle stelle variabili oppure nelle riprese a grande campo o deep-sky durante la ricerca dei fenomeni astronomici transitori (novae, supernovae), per assegnare un tempo di riferimento allo scatto.
È importante ricordare che questo algoritmo funziona per date posteriori al 15 ottobre 1582 e che il giorno giuliano è sempre intero a mezzogiorno (JD,00), ed è JD,50 a mezzanotte.

Formule utilizzate:
a = INT((14 − mese) ÷ 12)
y = anno + 4800 − a
m = mese + 12 × a − 3
Data Giuliana = giorno + INT((153 × m + 2) ÷ 5) + 365 × y + INT(y ÷ 4) − INT(y ÷ 100) + INT(y ÷ 400) − 32045
Data Giuliana = Data Giuliana + ((ora − 12) ÷ 24)

NOTA BENE: INT indica il quoziente di un'operazione di divisione che comprende due numeri interi, ossia la parte intera del quoziente senza alcuna approssimazione.
Tale operatore, nella HP35s, è INT÷.

Come usare il programma
    Precaricare le seguenti informazioni nei registri, come indicato:
    H = ora del giorno in notazione sessagesimale ore.minuti
    ora.minuti       STO       H
    NOTA: 7h 3m 5s deve essere inserito come 7.0305 e non come 7.35

    D = data del giorno
    data       STO       D

    M = mese (1 = gennaio... 12 = dicembre)
    mese       STO       M

    Y = anno, a 4 cifre (ad esempio 2014)
    anno       STO       Y
    avviare il programma e attenderne la conclusione:
    XEQ       G       ENTER
    A fine calcolo, a video sarà mostrata la data giuliana e la stessa sarà memorizzata nel registro J
    ad esempio:
    J =
                2457111.2792
    Premere R/S per terminare l'esecuzione.

Registri di appoggio durante i calcoli: U e W, dove:
U = a = INT((14 − mese) ÷ 12)
W = y = anno + 4800 − a

Programma:

G001     LBL G
G002     14
G003     RCL− M
G004     12
G005     INT÷
G006     STO U
G007     4800
G008     RCL+ Y
G009     RCL− U
G010     STO W
G011     RCL D
G012     STO J
G013     12
G014     RCL× U
G015     RCL+ M
G016     3
G017     −
G018     153
G019     ×
G020     2
G021     +
G022     5
G023     INT÷
G024     STO+ J
G025     365
G026     RCL× W
G027     STO+ J
G028     RCL W
G029     4
G030     INT÷
G031     STO+ J
G032     RCL W
G033     100
G034     INT÷
G035     STO− J
G036     RCL W
G037     400
G038     INT÷
G039     STO+ J
G040     RCL J
G041     32045
G042     −
G043     STO J
G044     RCL H
G045     HMS—›
G046     12
G047     −
G048     24
G049     ÷
G050     RCL+ J
G051     STO J
G052     VIEW J
G053     RTN
          Codici di verifica del programma: LN=194 CK=EE79

Esempi di verifica:

5 febbraio 1963, ore 19:30 ha data giuliana 2438066.3125

    19.30     STO       H
    5             STO       D
    2             STO       M
    1963       STO       Y
    XEQ       G       ENTER
    ... RUNNING ...
    J =
                2438066.3125
    Premere R/S per terminare l'esecuzione
2 marzo 2001, ore 12:00 ha data giuliana 2451971.0000
    12         STO       H
    2           STO       D
    3           STO       M
    2001    STO       Y
    XEQ     G       ENTER
    ... RUNNING ...
    J =
                2451971.0000
    Premere R/S per terminare l'esecuzione
18 novembre 2014, ore 8:15 ha data giuliana 2456979.8438
    8.15        STO       H
    18           STO       D
    11           STO       M
    2014      STO       Y
    XEQ       G       ENTER
    ... RUNNING ...
    J =
                2456979.8438
    Premere R/S per terminare l'esecuzione

Calcolo del tempo siderale medio locale (TSML)

Questo programma permette di calcolare il TSML, inserendo longitudine, ora locale e fuso orario.
Poiché la longitudine è espressa in <gradi><gradi>.<primi><primi><secondi><secondi>, e le procedure di calcolo operano su dati normalizzati in decimale, è necessaria una subroutine (invocata con la direttiva XEQ L001) in grado di convertire tale valore nel formato <ore><ore>.<minuti><minuti><secondi><secondi>.
Inoltre è necessaria la data giuliana, pertanto si deve inserire nella calcolatrice anche il precedente programma, che sarà espressamente richiamato con la direttiva XEQ G001.
L'algoritmo TSML prevede che la data giuliana locale JD1 sia riferita all'ora 0 (zero), mentre il il programma che la calcola (G001) produce un valore riferito all'ora impostata, pertanto nella routine di calcolo del TSML ho dovuto sottrarre alla data giuliana J la frazione di 24 dovuta proprio dall'ora impostata H.
INT indica il quoziente di un'operazione di divisione che comprende due numeri interi, ossia la parte intera del quoziente senza alcuna approssimazione; tale operatore, nella HP35s, è INT÷.

Formule utilizzate:

T = (JD1 − JD0) ÷ 36525
    T sarà anche un registro di appoggio; qui conserva il numero di secoli giuliani trascorsi dal 13 Dicembre 1899 alla data del giorno inserita per il calcolo.

TS = 6.6460656 + (2400.051262 × T) + (0.00002581 × T2)
        Tempo siderale trascorso dal 1899

TSMG = ((TS ÷ 24) − INT(TS ÷ 24)) × 24
        Tempo siderale medio di Greenwich TSMG alle ore 0

TSMLo = TSMG + L
        Tempo siderale medio alla longitudine di riferimento alle ore 0 (zero)

TSML = TSMLo + (H − F) × 1.002737908
        Tempo siderale medio locale all'ora desiderata. (H − F) è il T.U.

Costanti:

2415020.00         JD0: tempo di riferimento riferito al 31 Dicembre 1899 alle 12h TU
6.6460656           TSMGo: tempo Siderale medio a Greenwich il 31 Dicembre 1899 alle 12h TU (6.6460656 = 6h 38m 45s)
36525                     1 secolo giuliano = 36525 giorni giuliani

Come usare il programma

    Precaricare le seguenti informazioni nei registri, come indicato:
    L = longitudine del luogo di osservazione in notazione sessagesimale <gradi><gradi>.<primi><primi><secondi><secondi>
    <gradi><gradi>.<primi><primi><secondi><secondi>       STO       L
    NOTA: 7° 3' 5" deve essere inserito come 7.0305 e non come 7.35

    F = Fuso orario per l'Italia: +1 con ora solare, +2 con ora legale
    fuso       STO       F

    H = ora del giorno in notazione sessagesimale <ore><ore>.<minuti><minuti><secondi><secondi>
    <ore><ore>.<minuti><minuti><secondi><secondi>       STO       H
    NOTA: 7h 3m 5s deve essere inserito come 7.0305 e non come 7.35

    D = data del giorno
    data       STO       D

    M = mese (1 = gennaio... 12 = dicembre)
    mese       STO       M

    Y = anno, a 4 cifre (ad esempio 2014)
    anno       STO       Y
    avviare il programma :
    XEQ       S       ENTER
    Apparirà la scritta RUNNING, poi, a video sarà mostrata la data giuliana e la stessa sarà memorizzata nel registro J
    ad esempio:
    J =
                2457111.2792
    Premere R/S per proseguire.
    Apparirà la scritta RUNNING, poi, a video sarà mostrato il TSML nel formato HH.mmssd
    ad esempio:
    T =
                3.27127
    Premere R/S per terminare.

Programma:

S001     LBL S
S002     XEQ G001
S003     RCL H
S004     HMS—›
S005     24
S006     ÷
S007     −
S008     STO J
S009     XEQ L001
S010     RCL J
S011     2415020.00
S012     −
S013     36525.0
S014     ÷
S015     STO T
S016     x2
S017     0.00002581
S018     ×
S019     RCL T
S020     2400.051262
S021     ×
S022     +
S023     6.6460656
S024     +
S025     STO T
S026     24
S027     ÷
S028     RCL T
S029     24
S030     INT÷
S031     −
S032     24
S033     ×
S034     RCL L
S035     +
S036     STO T
S037     RCL H
S038     HMS—›
S039     RCL F
S040     −
S041     1.002737908
S042     ×
S043     RCL+ T
S044     —›HMS
S045     STO T
S046     24
S047     RCL T
S048     x>y?
S049     XEQ S054
S050     FIX 5
S051     VIEW T
S052     ALL
S053     RTN
S054     24
S055     −
S056     STO T
S057     RTN
          Codici di verifica del programma: LN=241 CK=42B0

Subroutine di trasformazione Longitudine da sessagesimale in decimale HH.mmss

Chiamata dal calcolo del tempo siderale medio locale (TSML), preleva la Longitudine L espressa in <gradi><gradi>.<primi><primi><secondi><secondi>, e la trasforma nel formato decimale <ore><ore>.<minuti><minuti><secondi><secondi>, sapendo che, per effetto della rotazione terrestre, si ha:
1° = 4m, dati da 1440m÷360°
1' = 4s, dati da (1440m×60s)÷(360°×60')
1" = 0,066667s = 1/15s, dati da (1440m×60s)÷(360°×3600")
Ricordo che 1440 sono i minuti in 24 ore.
L'equazione per la trasformazione è:
(gradi × 4) ÷ 60 + (primi × 4) ÷ 3600 + (secondi × 1/15) ÷ 3600

es: 7° 45' 5" —› 7,4505 = 0,51675926

Subroutine:

L001     LBL L
L002     0
L003     STO T
L004     RCL L
L005     IP
L006     4
L007     ×
L008     60
L009     ÷
L010     STO T
L011     RCL L
L012     FP
L013     100
L014     ×
L015     IP
L016     4
L017     ×
L018     3600
L019     ÷
L020     STO+ T
L021     RCL L
L022     FP
L023     100
L024     ×
L025     FP
L026     100
L027     ×
L028     15
L029     1/x
L030     ×
L031     3600
L032     ÷
L033     STO+ T
L034     RCL T
L035     STO L
L036     RTN
          Codici di verifica del programma: LN=132 CK=C8BE

Esempio di verifica:

19 novembre 2014, ore 20:30, longitudine 7° 45' 5" (fuso orario +1)

    20.30      STO       H
    1               STO       F
    7.4505    STO       L
    19            STO       D
    11             STO       M
    2014       STO       Y
    XEQ       S       ENTER
    ... RUNNING ...
    J =
                2456981.3548
    Premere R/S per proseguire l'esecuzione
    ... RUNNING ...
    T =
                23.55597 —› 23h55m59,7s
    Premere R/S per terminare l'esecuzione

Calcolo delle ore medie di luce in un dato giorno dell'anno

Il programma fornisce un valore approssimato del numero di ore di luce in base alla latitudine L impostata e alla data di uno specifico giorno dell'anno in corso. Ho scritto approssimato perché il calcolo è effettuato tenendo in considerazione la stima della declinazione del sole ed il numero di giorni D trascorsi dall'equinozio di primavera (21 marzo), assumendo un anno pari a 365 giorni.
Per un calcolo più preciso occorre utilizzare l'Algoritmo ALBA-TRAMONTO (A001) che si trova sempre all'interno di questo articolo.
Alcune avvertenze...
La latitudine L si presume espressa in <gradi>.<primi><secondi>, con segno positivo per l'emisfero Boreale e negativo per quello Australe.
È necessario inserire la latitudine nel formato GG.ppss; ad esempio:
7° 3' 8" deve essere scritta come 7.0308.
Per esigenze computazionali, la data per cui si richiede il calcolo della durata delle ore di luce deve essere inserita nel formato <MESE>.<GIORNO><ANNO>, dove ANNO deve essere un numero a 4 cifre ed il numero del giorno deve essere completato con uno zero in testa, in caso di valori < 10; esempi:
2 marzo 2014 deve essere scritta come 3.022014 e NON come 3.22014
16 dicembre 2014 deve essere scritta come 12.162014.
Per il conteggio delle ore di luce, il programma richiama la procedura che calcola il numero di giorni tra due date (vedere più sotto i programmi D001 e N001).

Formule utilizzate:

Le formule usano la stima della declinazione del Sole, pertanto, dato che si ha:
360° ÷ 365.25giorni ˜0.985626283368°g-1
allora...
d = 23.45 sin(D × 0.985626283368°)
θ = arcos(−tg L × tg d)
ore di luce = 24 × θradianti ÷ π

Come usare il programma

    Precaricare le la latitudine L del luogo di osservazione in notazione sessagesimale, con la notazione riciesta.
    GG.ppss       STO       L
    RICORDA: 7° 3' 5" deve essere inserito come 7.0305 e non come 7.35
    avviare il programma inserendo la data del giorno per cui si vole calcolare la durata delle ore di luce:
    MM.ggAAAA       XEQ       O       ENTER
    RICORDA: 7° marzo 2014 deve essere inserito come 3.072014 e non come 3.72014
    Apparirà la scritta RUNNING, poi, nella riga in basso del display sarà mostrata la durata media delle ore di luce.
    esempio:
    0.12345             stack, registo Y = non significativo.
    8.27142           stack, registo X = ore medie di luce.

Programma:

O001     LBL O
O002     ENTER
O003     FP
O004     100
O005     ×
O006     FP
O007     100
O008     ÷
O009     3.21
O010     +
O011     x<>y
O012     XEQ D001
O013     DEG
O014     0.985626283
O015     ×
O016     SIN
O017     23.45
O018     ×
O019     RCL L
O020     HMS—›
O021     TAN
O022     x<>y
O023     TAN
O024     ×
O025     +/−
O026     ACOS
O027     —›RAD
O028     24
O029     ×
O030     π
O031     ÷
O032     —›HMS
O023     FIX 6
O034     RTN
          Codici di verifica del programma: LN=130 CK=5B20

Esempio di verifica:

19 novembre 2014, latitudine +45° 6' 9"

    45.0603         STO       L
    11.192014       XEQ      O       ENTER
    ... RUNNING ...
    0.1234567         stack, registo Y = dato irrilevante.
    9.0635484     ⇐ stack, registo X = 9h 6m 35s di luce (circa).

Calcolo del numero di giorni tra due date

Il programma fornisce il numero di giorni compreso tra due date ed è composto da due funzioni D001 e N001.
Per esigenze computazionali, le date per cui si richiede il calcolo del numero di giorni che intercorrono, devono essere inserite nel formato <MESE>.<GIORNO><ANNO>, dove ANNO deve essere un numero a 4 cifre ed il numero del giorno deve essere completato con uno zero in testa, in caso di valori < 10. Esempi:
2 marzo 2014 deve essere scritta come 3.022014.
16 dicembre 2014 deve essere scritta come 12.162014.
Avvertenze...
La procedura qui riportata è presente come esempio nei manuali HP di alcune calcolatrici scientifiche datate; io l'ho modificato e adattato alla HP35s, di cui non esiste - che sappia - un analogo nei manuali utente ufficiali.

Come usare il programma
    Quando questo programma è invocato come subroutine dal precedente programma di calcolo della durata delle ore di luce (O001), i parametri alla funzione (le due date richieste) sono passati automaticamente, in modo del tutto trasparente all'utente.
    Quando questo programma è utilizzato per il solo calcolo dei giorni che intercorrono tra due date, è necessario inserire le date in formato mm.ggaaaa e MM.GGAAAA nella stack geristri Y e X, inserendo quindi prima quella temporalmente minore, poi quella maggiore.
    mm.ggaaaa           ENTER
    MM.GGAAAA       XEQ       D       ENTER
    dove, se ad esempio le date sono 7 marzo 2014 e 12 novembre 2014, deve essere:
    mm.ggaaaa = 3.072014
    e
    MM.GGAAAA = 11.122014
    Apparirà la scritta RUNNING, poi, nella riga in basso del display sarà indicato il numero di giiorni intercorsi tra le due date.
    esempio:
    0.12345                     stack, registo Y = non significativo.
    250.00000           stack, registo X = numero dei giorni tra le due date.

Programma:

D001     LBL D
D002     STO Z
D003     x<>y
D004     XEQ N
D005     STO K
D006     RCL Z
D007     XEQ N
D008     RCL− K
D009     RTN
          Codici di verifica del programma D: LN=27 CK=9BE3

N001     LBL N
N002     ENTER
N003     IP
N004     9
N005     +
N006     12
N007     RMDR
N008     STO M
N009     x<>y
N010     ENTER
N011     FP
N012     100
N013     ×
N014     IP
N015     STO D
N016     R⇓
N017     100
N018     ×
N019     FP
N020     10000
N021     ×
N022     RCL M
N023     10
N024     INT÷
N025     −
N026     STO Y
N027     365
N028     ×
N029     RCL Y
N030     4
N031     INT÷
N032     +
N033     RCL Y
N034     100
N035     INT÷
N036     −
N037     RCL Y
N038     400
N039     INT÷
N040     +
N041     RCL M
N042     306
N043     ×
N044     5
N045     +
N046     10
N047     INT÷
N048     +
N049     RCL D
N050     1
N051     −
N052     +
N053     RTN
          Codici di verifica del programma: LN=192 CK=EF03

Esempio di verifica:

Calcolare quanti giorni ci sono tra il 7 marzo 2014 e il 12 novembre 2014

    7 marzo 2014           ⇒ 3.072014       ENTER
    12 novembre 2014 ⇒ 11.122014       XEQ       D       ENTER
    ... RUNNING ...
    0.12345                     stack, registo Y = non significativo.
    250.00000           stack, registo X = numero dei giorni.

Conversione da data giuliana a data civile

Per i dettagli della data giuliana, cortesemente accedere al menu a tendina [Documentazione] —› [La misura del tempo].
Il programma (che probabilmente potrebbe essere ottimizzato come codice macchina) permette di etichettare con la data civile, ossia espressa in giorno-mese-anno ore-minuti-secondi, dati fotometrici, riprese a grande campo o deep-sky, immagni o riprese planetarie che siano state precedentemente marcate con una data giuliana.
È importante ricordare che questo algoritmo funziona con date giuliane che abbiano un reale riscontro e che siano maggiori o uguali a 2299160 (4715 a.C)... Ho infatti omesso il controllo dato che gestiamo date decisamente più prossime ai nostri giorni.

Formule utilizzate:
JD è la data giuliana che si vuole trasformare in data civile
I = IP( JD + 0.5 )
F = JD + 0.5 − I
A = IP( ( I − 1867216.25 ) ÷ 36524.25 )
se I ≤ 2299160 ⇒ B = 1, altrimenti B= I + 1 + A − IP(A ÷ 4)
C = B + 1524
D = IP( ( C − 122.1 ) ÷ 365.25 )
E = IP( 365.25 × D )
H = IP( ( C − E ) ÷ 30.6001 )
giorno = IP( C − E + F − IP( 30.6001 × H ) )
se H < 14 ⇒ mese = H − 1, altrimenti mese = H − 13
se mese < 3 ⇒ anno = D − 4715, altrimenti anno = D − 4716
ora = FP( C − E + F − IP( 30.6001 × H )) × 24
minuti = FP( ora ) × 60
secondi = FP( minuti ) × 60
NOTA: IP indica la parte intera di un'espressione numerica, FP la parte decimale.

Come usare il programma

    Precaricare la data giuliana sulla stack
    data_giuliana       ENTER
    esempio: 2456979.8438       ENTER
    avviare il programma e attenderne la conclusione:
    XEQ       C       ENTER
    Apparirà la scritta RUNNING poi, sulle due righe del display, saranno mostrati ora e data equivalenti alla data giuliana inserita.
    ad esempio:
    8.150432        8h 15m 04s
    18.112014      18 novembre 2014

Programma:

>
C001     LBL C
C002     ENTER
C003     0.5
C004     +
C005     IP
C006     STO I
C007     x<>y
C008     0.5
C009     +
C010     FP
C011     STO F
C012     RCL I
C013     1867216.25
C014     −
C015     36524.25
C016     ÷
C017     IP
C018     ENTER
C019     RCL+ I
C020     1
C021     +
C022     x<>y
C023     4
C024     ÷
C025     IP
C026     −
C027     1524
C028     +
C029     STO C
C030     122.1
C031     −
C032     365.25
C033     ÷
C034     IP
C035     STO D
C036     365.25
C037     ×
C038     IP
C039     STO E
C040     RCL C
C041     x<>y
C042     −
C043     30.6001
C044     ÷
C045     IP
C046     STO H
C047     RCL C
C048     RCL− E
C049     RCL+ F
C050     RCL H
C051     30.6001
C052     ×
C053     IP
C054     −
C055     ENTER
C056     FP
C057     24
C058     ×
C059     —›HMS
C060     STO O
C061     R⇓
C062     IP
C063     STO G
C064     14
C065     RCL H
C066     x<y?
C067     GTO C069
C068     GTO C071
C069     1
C070     GTO C072
C071     13
C072     −
C073     ENTER
C074     100
C075     ÷
C076     STO+ G
C077     R⇓
C078     3
C079     x≥y?
C080     GTO C082
C081     GTO C084
C082     −4715
C083     GTO C085
C084     −4714
C085     RCL+ D
C086     1E6
C087     ÷
C088     STO+ G
C089     RCL O
C090     RCL G
C091     RTN
          Codici di verifica del programma: LN=358 CK=98E3

Esempio di verifica:

Convertire la data giuliana 2456987.30938 in data civile.

    2456987.30938         ENTER
    XEQ       C       ENTER
    ... RUNNING ...
    19.253043      stack, registo Y, si legge 19h 25m 30s
    25.112014       stack, registo X, si legge 25 novembre 2014

Algoritmo ALBA-TRAMONTO

Le formule utilizzate sono indicate nell'articolo Algoritmo ALBA-TRAMONTO, che si può leggere dal menu a tendina [Studio e Ricerca]—›[Algoritmo Alba-Tramonto]
IMPORTANTE: il programma necessita delle coordinate geografiche del luogo, quali Longitudine e Latitudine; in questo esempio ho inserito quelle approssimative del posto in cui vivo, pertanto ognuno dovrà inserire quelle compatibili con l'area in cui si trova.
Le righe di codice A010 e A012 devono essere personalizzate, come indico anche nei commenti a tergo.
Ricordo solo che cambieranno anche i codici di controllo LN (lunghezza) e CK (checksum).

FLAG della calcolatrice utilizzati:
0       se SET allora è richiesto il calcolo dell'ora del tramonto
          se CLEAR allora è richiesto il calcolo dell'ora dell'alba

Registri della calcolatrice utilizzati:
A     Latitudine
O     Longitudine
U     Offset da UTC (ora locale) o fusoORARIO
N     Numero dei giorni dall'inizio dell'anno
Z     Zenith
G     Longitudine trasformata in Angolo Orario (angoloORARIO)
T     Tempo approssimativo calcolato (t)
M     Anomalia media del Sole(M)
L     Longitudione reale del Sole (L)
R     Ascensione Retta (AR)
S     Declinazione del Sole (senDEC)
C     Declinazione del Sole (cosDEC)
H     Angolo Orario H del Sole (H)
B     Registro di appoggio per salvare il primo dei valori calcolati tra alba o tramonto

Come usare il programma

    avviare il programma e attenderne la conclusione:
    data del giorno in notazione MM.GGAAAA       XEQ       A       ENTER
    NOTA: 2 marzo 2014 deve essere inserito come 3.022014
    A fine calcolo, la stack offre i seguenti valori:
    Y: Ora dell'alba
    X: Ora del tramonto

Programma:
È composto da due routines: A001 e Y001 e necessita anche della procedura D001 "Calcolo del numero di giorni tra due date".

A001     LBL A
A002     DEG
A003     CF 0
A004     XEQ Y001
A005     STO N
A006     1
A007     STO U
A008     90.83333333
A009     STO Z
A010     45.0957
A011     STO A
A012     7.5939
A013     STO O
A014     15
A015     ÷
A016     STO G
A017     SF 0
A018     XEQ A028
A019     STO B
A020     CF 0
A021     XEQ A028
A022     RCL B
A023     SF 10
A024     ALBA-TRAMONTO
A025     CF 10
A026     CF 0
A027     RTN
   
A028     6
A029     FS? 0
A030     18
A031     RCL− G
A032     24
A033     ÷
A034     RCL+ N
A035     STO T
A036     0.9856
A037     ×
A038     3.289
A039     −
A040     STO M
A041     SIN
A042     1.916
A043     ×
A044     RCL+ M
A045     2
A046     RCL× M
A047     SIN
A048     0.02
A049     ×
A050     +
A051     3
A052     RCL× M
A053     SIN
A054     0.0003
A055     ×
A056     +
A057     282.634
A058     +
A059     360
A060     RMDR
A061     STO L
A062     TAN
A063     0.91764
A064     ×
A065     ATAN
A066     360
A067     RMDR
A068     STO R
A069     RCL L
A070     90
A071     INT÷
A072     90
A073     ×
A074     +
A075     RCL R
A076     90
A077     INT÷
A078     90
A079     ×
A080     −
A081     15
A082     ÷
A083     STO R
A084     RCL L
A085     SIN
A086     0.39782
A087     ×
A088     STO S
A089     ASIN
A090     COS
A091     STO C
A092     RCL Z
A093     COS
A094     RCL A
A095     SIN
A096     RCL× S
A097     −
A098     RCL A
A099     COS
A100     RCL× C
A101     ÷
A102     ACOS
A103     FS? 0
A104     GTO A108
A105     360
A106     x<>y
A107     −
A108     15
A109     ÷
A110     RCL+ R
A111     0.06571
A112     RCL× T
A113     −
A114     6.622
A115     −
A116     24
A117     RMDR
A118     RCL− G
A119     RCL+ U
A120     —›HMS
A121     RTN
          Codici di verifica del programma: LN=492 CK=9CFB

LBL Y preleva dalla stack una data nel formato MM.GGAAAA e restituisce il numero del giorno di quella data (Calcola il giorno dell'anno di una specifica data).
Richiama a sua volta la procedura D001 "Calcolo del numero di giorni tra due date".

Y001     LBL Y
Y002     ENTER
Y003     ENTER
Y004     100
Y005     ×
Y006     FP
Y007     0.0001
Y008     −
Y009     100
Y010     ÷
Y011     12.31
Y012     +
Y013     x<>y
Y014     XEQ D001
Y015     RTN
          Codici di verifica del programma: LN=62 CK=4005

Esempi di verifica:

Calcolare l'ora di levata e tramonto del Sole per il giorno 21 dicembre 2014

    12.212014       XEQ       A       ENTER
    ... RUNNING ...
    ALBA-TRAMONTO
    premere C e saranno visualizzate le ore di levata e calata del Sole.
    8.04558397812            ora dell'alba
    16.05025274858          ora del tramonto

    Per calcolare il numero delle ore di luce, si potrebbero aggiungere alcune righe al programma, oppure, manualmente:
    Premere HMS—›
    Premere il tasto x<>y       si scambiano i registri X e Y della stack
    Premere HMS—›
    Sui registri X e Y della stack si hanno i valori decimali delle due ore
    16.1048712664        ora del tramonto
    8.02441023211            ora dell'alba
    Premendo il tasto [] si ottiene il numero di ore di luce.
    8.08046103429
    Premere —›HMS
    Si ottiene il valore sessagesimale delle ore di luce
    8.04496597234

Calcolare l'ora di levata e tramonto del Sole per il giorno 21 giugno 2014

    6.212014       XEQ       A       ENTER
    ... RUNNING ...
    ALBA-TRAMONTO
    premere C e saranno visualizzate le ore di levata e calata del Sole.
    4.422028177             ora dell'alba
    20.2015421662             ora del tramonto

    Per calcolare il numero delle ore di luce, si potrebbero aggiungere alcune righe al programma, oppure, manualmente:
    Premere HMS—›
    Premere il tasto x<>y       si scambiano i registri X e Y della stack
    Premere HMS—›
    Sui registri X e Y della stack si hanno i valori decimali delle due ore
    20.3376171283        ora del tramonto
    4.705633825            ora dell'alba
    Premendo il tasto [] si ottiene il numero di ore di luce.
    15.6319833033
    Premere —›HMS
    Si ottiene il valore sessagesimale delle ore di luce
    15.3755139892

Radici di un'equazione di secondo grado

La soluzione di un'equazione di secondo grado nella nota forma ax2 + bx + c = 0 è:

−b ± √   b2 − 4ac 
              2a              
dove     b2 − 4ac     è noto con il termine di discriminante, (ma anche determinante) e generalmente indicato con la lettera greca Δ (Delta).
Se Δ è positivo, allora l'equazione ha due soluzioni (due radici reali).
Se Δ = 0, l'equazione ha un'unica soluzione (unica radice reale).
Se Δ è negativo, l'equazione ha due radici complesse.
Il programma permette di fornire le tre possibili soluzioni.

Se la soluzione ammessa è una sola, il registro D conterrà 0 (zero) e sarà visualizzato solo il valore del registro P nella prima riga in basso del display. La seconda riga conterrà sempre 0 (zero).
Nel caso classico di due possibili soluzioni, la prima radice è inserita nel registro P e la seconda nel registro Q. Entrambe le soluzioni sono sempre a disposizione sulla stack (registri Y e X al termine del programma).
NOTA: il programma è nato per scopi didattici, per insegnare la programmazione a mio figlio, ma l'ho inserito perché può essere chiamato come subroutine da altri programmi che necessitino di dati provenienti dalla risoluzione di equazioni di secondo grado (vedi più in basso lo stesso programma modificato ad hoc).

FLAG della calcolatrice utilizzati:
Flag 10, per trattare le equazioni come stringhe di testo. Il Flag è alzato all'avvio e riazzerato al termine.

Registri della calcolatrice utilizzati:
A     valore del coefficiente a dell'equazione di secondo grado
B     valore del coefficiente b dell'equazione di secondo grado
C     valore del coefficiente c dell'equazione di secondo grado
D     discriminante Δ
P     prima soluzione
Q     seconda soluzione

Come usare il programma
coefficiente a       ENTER
coefficiente b       ENTER
coefficiente c       XEQ       Q       ENTER
Sarà visualizzato RUNNING.

Se l'equazione ammette l'esistenza di due soluzioni reali, il programma visualizza per 1 secondo la scritta I RAD REALE, quindi propone la prima soluzione:
P=
            valore della prima soluzione.
Premere R/S e sarà proposta la seconda soluzione... La calcolatrice visualizza II RAD REALE per un secondo, poi:
Q=
            valore della seconda soluzione.
Premere R/S per terminare.

Se le soluzioni sono due numeri complessi, sarà visualizzata la scritta I RAD COMPL e a seguire il suo valore numerico:
P=
            valore di una delle radici, in forma complessa. —› un numero nella forma 0.25000i-0.66144 è letto come 0.25000-i0.66144.
Premere R/S e sarà proposta la seconda soluzione... La calcolatrice visualizza II RAD COMPL, per un secondo, poi:
Q=
            valore dell'altra radice, in forma complessa.
Premere R/S per terminare.

Nel caso di una singola soluzione, sarà indicato RAD UNICA, e proposta l'unica soluzione sul display, con 0 (zero) nel registro Y e la soluzione nel registro X:
[Y] 0
[X] valore della soluzione.
Premere R/S per terminare.

Programma:

Q001     LBL Q
Q002     STO C
Q003     R⇓
Q004     STO B
Q005     R⇓
Q006     STO A
Q007     SF 10
Q008     RCL B
Q009     x2
Q010     RCL A
Q011     RCL× C
Q012     4
Q013     ×
Q014     −
Q015     STO D
Q016     x<0?
Q017     GTO Q041
Q018     x=0?
Q019     GTO Q069
Q020     √x
Q021     RCL− B
Q022     RCL÷ A
Q023     2
Q024     ÷
Q025     STO P
Q026     I RAD REALE
Q027     PSE
Q028     VIEW P
Q029     RCL D
Q030     √x
Q031     RCL+ B
Q032     RCL÷ A
Q033     2
Q034     ÷
Q035     +/−
Q036     STO Q
Q037     II RAD REALE
Q038     PSE
Q039     VIEW Q
Q040     GTO Q080
Q041     RCL D
Q042     ABS
Q043     √x
Q044     i
Q045     ×
Q046     RCL− B
Q047     RCL÷ A
Q048     2
Q049     ÷
Q050     STO P
Q051     I RAD COMPL
Q052     PSE
Q053     VIEW P
Q054     RCL D
Q055     ABS
Q056     √x
Q057     +/−
Q058     i
Q059     ×
Q060     RCL− B
Q061     RCL÷ A
Q062     2
Q063     ÷
Q064     STO Q
Q065     II RAD COMPL
Q066     PSE
Q067     VIEW Q
Q068     GTO Q080
Q069     RCL B
Q070     +/−
Q071     RCL÷ A
Q072     2
Q073     ÷
Q074     STO P
Q075     RAD UNICA
Q076     PSE
Q077     CLSTK
Q078     RCL P
Q079     CF 10
Q080     RTN
          Codici di verifica del programma: LN=303 CK=9787

Esempi di verifica:
Imposto la visualizzazione in FIX con 5 decimali...

L'equazione 8x2+ 2x + 1 = 0 ha due soluzioni (o radici) complesse:
      8       ENTER
      2       ENTER
      1       XEQ       Q       ENTER
RUNNING
P =
                -0.12500i0.33072, ossia -0.12500 + i0.33072
Q =
                -0.12500i-0.33772, ossia -0.12500 - i0.33772

L'equazione 2x2 + 8x - 1 = 0 ammette due soluzioni reali:
      2       ENTER
      8       ENTER
      -1       XEQ       Q       ENTER
RUNNING
P =
                0.12132
Q =
                -4.12142

L'equazione x2 + 2x + 1 = 0 ha un'unica soluzione:
      1       ENTER
      2       ENTER
      1       XEQ       Q       ENTER
RUNNING
0.00000
-1.00000

Programma modificato e usabile come SUBROUTINE:

Come usare il programma
È necessario che il programma che sfrutta questa procedura inserisca nei registri A, B e C i 3 coefficienti, quindi usi l'istruzione XEQ Q007.
È possibile sfruttare il programma ridotto come programma a se stante (rispetto all'originale non mostra le indicazioni prolisse ma termina lasciando sul display le radici dell'equazione).
Per usarlo da utente e non da un programma...
inserire il coefficiente a       ENTER
inserire il coefficiente b       ENTER
inserire il coeffciente c       XEQ       Q       ENTER

Q001     LBL Q
Q002     STO C
Q003     R⇓
Q004     STO B
Q005     R⇓
Q006     STO A
Q007     RCL B
Q008     x2
Q009     RCL A
Q010     RCL× C
Q011     4
Q012     ×
Q013     −
Q014     STO D
Q015     x<0?
Q016     GTO Q034
Q017     x=0?
Q018     GTO Q056
Q019     √x
Q020     RCL− B
Q021     RCL÷ A
Q022     2
Q023     ÷
Q024     STO P
Q025     RCL D
Q026     √x
Q027     RCL+ B
Q028     RCL÷ A
Q029     2
Q030     ÷
Q031     +/−
Q032     STO Q
Q033     GTO Q064
Q034     RCL D
Q035     ABS
Q036     √x
Q037     i
Q038     x
Q039     RCL− B
Q040     RCL÷ A
Q041     2
Q042     ÷
Q043     STO P
Q044     RCL D
Q045     ABS
Q046     √x
Q047     +/−
Q048     i
Q049     ×
Q050     RCL− B
Q051     RCL÷ A
Q052     2
Q053     ÷
Q054     STO Q
Q055     GTO Q064
Q056     RCL B
Q057     +/−
Q058     RCL÷ A
Q059     2
Q060     ÷
Q061     STO P
Q062     CLSTK
Q063     RCL P
Q064     RTN
          Codici di verifica del programma: LN=200 CK=7E39
Calcolo della data della Pasqua per un determinato anno

Il programma, inserito un anno, calcola il mese ed il giorno in cui cadrà la Pasqua.
Può sembrare alieno all'astronomia, ma in realtà il giorno della Pasqua è frutto di una serie di calcoli astronomici legati alla data dell'ultimo plenilunio dell'anno precedente a quello per cui si cerca la data della festività.

Equazioni utilizzate:
NOTA: le divisioni sono tutte con numeri interi, pertanto va considerato solo il quoziente.
G = AAaa modulo 19         è il numero aureo - 1
C = AAaa ÷ 100                   è il secolo dell'anno
H = (C − (C ÷ 4) − ((8 × C) + 13) ÷ 25 + 19 × G + 15) modulo 30         è (23 − Epatta) modulo 30
I = H - (H ÷ 28) × (1 - (H ÷ 28) × (29 ÷ (H + 1)) × ((21 - G) ÷ 11)         sono i giorni tra il 21 marzo e il plenilunio pasquale
J = (AAaa + (AAaa ÷ 4) + I + 2 − C + (C ÷ 4)) modulo 7                            giorno della settimana del plenilunio pasquale 0=domenica, 1=lunedì, ecc.
L = I − J                                           giorno dal 21 marzo alla domenica del plenilunio pasquale o precedente il plenilunio
M = 3 + (L + 40) ÷ 44                 Mese della Pasqua
D = L + 28 − 31 × (M ÷ 4)         Giorno della Pasqua

Registri della calcolatrice utilizzati:
Y     l'anno inserito per cui si cerca la data della Pasqua
G     numero aureo − 1
C     il secolo dell'anno inserito
H     (23 − Epatta) modulo 30
I     sono i giorni tra il 21 marzo e il plenilunio pasquale
J     giorno della settimana del plenilunio pasquale 0=domenica, 1=lunedì, ecc.
L     giorno dal 21 marzo alla domenica del plenilunio pasquale o precedente il plenilunio
M     mese della Pasqua
D     giorno della Pasqua

Come usare il programma
Conviene fissare il display per la visualizzazione in formnato FIX 0 (ossia intero senza cifre decimali)
anno nel formato AAAA       XEQ       P       ENTER
Sarà visualizzato RUNNING
al termine il risultato sarà mostrato sulla stack (display)...
[Y] contiene il giorno della Pasqua
[X] contiene il mese della Pasqua

Programma:

P001     LBL P
P002     STO Y
P003     19
P004     RMDR
P005     STO G
P006     RCL Y
P007     100
P008     INT÷
P009     STO C
P010     4
P011     INT÷
P012     +/−
P013     RCL+ C
P014     RCL C
P015     8
P016     ×
P017     13
P018     25
P019     √x
P020     INT÷
P021     −
P022     RCL G
P023     19
P024     ×
P025     +
P026     15
P027     +
P028     30
P029     RMDR
P030     STO H
P031     29
P032     x<>y
P033     1
P034     +
P035     INT÷
P036     RCL H
P037     28
P038     INT÷
P039     ×
P040     21
P041     RCL− G
P042     11
P043     INT÷
P044     ×
P045     +/−
P046     1
P047     +
P048     RCL H
P049     28
P050     INT÷
P051     ×
P052     +/−
P053     RCL+ H
P054     STO I
P055     RCL Y
P056     4
P057     INT÷
P058     RCL+ Y
P059     RCL+ I
P060     2
P061     +
P062     RCL− C
P063     RCL C
P064     4
P065     INT÷
P066     ÷
P067     7
P068     RMDR
P069     STO J
P070     RCL I
P071     x<>y
P072     −
P073     STO L
P074     40
P075     +
P076     44
P077     INT÷
P078     3
P079     +
P080     STO M
P081     4
P082     INT÷
P083     31
P084     ×
P085     +/−
P086     28
P087     +
P088     RCL+ L
P089     STO D
P090     RCL M
P091     RTN
          Codici di verifica del programma: LN=316 CK=7B7F

Esempi di verifica:
Imposto la visualizzazione in FIX con 0 decimali...

Calcolo la Pasqua per l'anno 2014       2014       XEQ       P       ENTER
RUNNING
        20.
        4.      ossia 20 aprile

Calcolo la Pasqua per l'anno 2015       2015       XEQ       P       ENTER
RUNNING
        5.
        4.      ossia 5 aprile


Conversione da data civile a data giuliana. Programma alternativo

Come quello precedente del 19.11.2014, questo algoritmo funziona per date posteriori al 15 ottobre 1582.
Richiede in ingresso data e ora del giorno; restituisce la data giuliana.

Algoritmo utilizzato:
Converto l'ora [O] del giorno in decimale e la rapporto al giorno (ventiquattresimi)
Aggiungo l'ora convertita al numero del giorno [G], ottenendo così un numero decimale che rappresenta lo scostamento dall'ora 0 del giorno considerato.
Calcolo il coefficiente [Y] del termine correttivo [C]: se [M]ese > 2, allora [Y] = [A]nno e [K] = [M]ese
Calcolo il termine correttivo [K] del mese: se [M]ese =< 2, allora [Y] = ([A]nno - 1) e [K] = [M]ese + 12
Calcolo il termine correttivo [C]: [C] = IDIV([Y] / 100)
Calcolo il termine correttivo [B]: [B] = 2 - [C] + IDIV([C] / 4)
Giorno Giuliano [J] = INTG(365,25 * ([Y] + 4716)) + INTG(30,6 * ([K]+1)) + [G] + [B] - 1524,5

NOTA BENE: INTG indica la frazione intera di un numero decimale, IDIV indica il quoziente di un'operazione di divisione che comprende due numeri interi, ossia la parte intera del quoziente senza alcuna approssimazione; in modo EQN all'interno di un programma HP35s, è indicato IDIV(dividendo,divisore).

Come usare il programma
    Precaricare le seguenti informazioni nei registri, come indicato:
    [O] = ora del giorno in notazione sessagesimale ore.<minuti>&ls;secondi>
    ora.<minuti><secondi>       STO       O
    NOTA: 7h 3m 5s deve essere inserito come 7.0305 e non come 7.35

    [G] = data del giorno
    data       STO       G

    [M] = mese (1 = gennaio... 12 = dicembre)
    mese       STO       M

    [A] = anno, a 4 cifre (ad esempio 2014)
    anno       STO       A
    avviare il programma e attenderne la conclusione:
    XEQ       J       ENTER
    A fine calcolo, a video sarà mostrata la data giuliana e la stessa sarà memorizzata nel registro J
    ad esempio:
    J =
                2457111.2792
    Premere R/S per terminare l'esecuzione.

Registri di appoggio durante i calcoli: B, C, K, Y, come indicato nella descrizione dell'algoritmo.

Programma:

J001     LBL J
J002     0
J003     STO J
J004     RCL O
J005     HMS—›
J006     24
J007     ÷
J008     STO+ G
J009     2
J010     RCL M
J011     x>y?
J012     GTO J018
J013     A−1
J014     STO Y
J015     M+12
J016     STO K
J017     GTO J022
J018     RCL A
J019     STO Y
J020     RCL M
J021     STO K
J022     IDIV(Y,100)
J023     STO C
J024     2−C+IDIV(C,4)
J025     STO B
J026     INTG(365.25×(Y+4716))
J027     STO+ J
J028     INTG(30.6001×(K+1))+G+B−1524.5
J029     STO+ J
J030     VIEW J
J031     RCL J
J032     RTN
          Codici di verifica del programma: LN=182 CK=8FEC

Esempi di verifica:

5 febbraio 1963, ore 19:30 ha data giuliana 2438066.3125

    19.30     STO       O
    5             STO       G
    2             STO       M
    1963       STO       A
    XEQ       J       ENTER
    ... RUNNING ...
    J =
                2438066.3125
    Premere R/S per terminare l'esecuzione
2 marzo 2001, ore 12:00 ha data giuliana 2451971.0000
    12         STO       O
    2           STO       G
    3           STO       M
    2001    STO       A
    XEQ     J       ENTER
    ... RUNNING ...
    J =
                2451971.0000
    Premere R/S per terminare l'esecuzione
18 novembre 2014, ore 8:15 ha data giuliana 2456979.8438
    8.15        STO       O
    18           STO       G
    11           STO       M
    2014      STO       A
    XEQ       J       ENTER
    ... RUNNING ...
    J =
                2456979.8438
    Premere R/S per terminare l'esecuzione

Calcolo del tempo siderale medio locale (TSML). Programma alternativo

Questo programma, esattamente come il precedente del 21.11.2014, permette di calcolare il TSML, inserendo longitudine, ora locale e fuso orario.
Funziona esclusivamente assieme a quello di calcolo della data giuliana qua sopra descritto (LBL J).
Poiché la longitudine è espressa in <gradi><gradi>.<primi><primi><secondi><secondi>, e le procedure di calcolo operano su dati normalizzati in decimale, è necessaria una subroutine (invocata con la direttiva XEQ L001) in grado di convertire tale valore nel formato <ore><ore>.<minuti><minuti><secondi><secondi>.
Inoltre è necessaria la data giuliana, pertanto si deve inserire nella calcolatrice anche il precedente programma, che sarà espressamente richiamato con la direttiva XEQ J001.
IDIV indica il quoziente di un'operazione di divisione tra due numeri interi, ossia la parte intera del quoziente senza alcuna approssimazione; tale operatore, in modalit├á EQN della HP35s, è indicato IDIV(dividendo,divisore).

Formule utilizzate:

T = (JD1 − JD0) ÷ 36525
    T sarà anche un registro di appoggio; qui conserva il numero di secoli giuliani trascorsi dal 13 Dicembre 1899 alla data del giorno inserita per il calcolo.

TS = 6.6460656 + (2400.051262 × T) + (0.00002581 × T2)
        Tempo siderale trascorso dal 1899

TSMG = ((TS ÷ 24) − IDIV(TS ÷ 24)) × 24
        Tempo siderale medio di Greenwich TSMG alle ore 0

TSMLo = TSMG + L
        Tempo siderale medio alla longitudine di riferimento alle ore 0 (zero)

TSML = TSMLo + (H − F) × 1.002737908
        Tempo siderale medio locale all'ora desiderata. (H − F) è il T.U.

Costanti:

2415020.00         JD0: tempo di riferimento riferito al 31 Dicembre 1899 alle 12h TU
6.6460656           TSMGo: tempo Siderale medio a Greenwich il 31 Dicembre 1899 alle 12h TU (6.6460656 = 6h 38m 45s)
36525                     1 secolo giuliano = 36525 giorni giuliani

Come usare il programma

    Precaricare le seguenti informazioni nei registri, come indicato:
    [G] = data del giorno
    data       STO       G

    [M] = mese (1 = gennaio... 12 = dicembre)
    mese       STO       M

    [A] = anno, a 4 cifre (ad esempio 2014)
    anno       STO       A
    avviare il programma :
    XEQ       T       ENTER
    Apparirà la scritta RUNNING, poi, a video sarà mostrata la data giuliana riferita alle ore 00 del giorno indicato, la stessa sarà memorizzata nel registro J
    ad esempio:
    J =
                2457111.50
    Premere R/S per proseguire.

    Inserire ora le informazioni richieste dal programma, come indicato:
    [H] = ora del giorno in notazione sessagesimale <ore><ore>.<minuti><minuti><secondi><secondi>
    <ore><ore>.<minuti><minuti><secondi><secondi>       ENTER       R/S
    NOTA: 7h 3m 5s deve essere inserito come 7.0305 e non come 7.35

    [Z] = Fuso orario per l'Italia: +1 con ora solare, +2 con ora legale
    fuso       ENTER       R/S

    [L] = longitudine del luogo di osservazione in notazione sessagesimale <gradi><gradi>.<primi><primi><secondi><secondi>
    <gradi><gradi>.<primi><primi><secondi><secondi>       ENTER       R/S
    NOTA: 7° 3' 5" deve essere inserito come 7.0305 e non come 7.35
    Apparirà la scritta RUNNING, poi, a video sarà mostrato il TSML nel formato HH.mmssdd
    ad esempio:
    T =
                3.271274
    Premere R/S per terminare.

Programma:

T001     LBL T
T002     INPUT H
T003     HMS—›
T004     STO H
T005     INPUT Z
T006     INPUT L
T007     XEQ L001
T008     0
T009     STO O
T010     XEQ J001
T011     (J-2415020)÷36525
T012     STO T
T013     6.6460656+(2400.051262×T)+(0.00002581×SQ(T))
T014     STO T
T015     ((T÷24)−IDIV(T,24))×24
T016     STO T
T017     RCL L
T018     STO+ T
T019     T+(H−Z)×1.002737908
T020     STO T
T021     24
T022     x<>y
T023     x>=y?
T024     T−24
T025     —›HMS
T026     STO T
T027     VIEW T
T028     RCL J
T029     RCL T
T030     RTN
          Codici di verifica del programma: LN=199 CK=0879

Subroutine di trasformazione Longitudine da sessagesimale in decimale HH.mmss

Chiamata dal calcolo del tempo siderale medio locale (TSML), preleva la Longitudine L espressa in <gradi><gradi>.<primi><primi><secondi><secondi>, e la trasforma nel formato decimale <ore><ore>.<minuti><minuti><secondi><secondi>, sapendo che, per effetto della rotazione terrestre, si ha:
1° = 4m, dati da 1440m÷360°
1' = 4s, dati da (1440m×60s)÷(360°×60')
1" = 0,066667s = 1/15s, dati da (1440m×60s)÷(360°×3600")
Ricordo che 1440 sono i minuti in 24 ore.
L'equazione per la trasformazione è:
(gradi × 4) ÷ 60 + (primi × 4) ÷ 3600 + (secondi × 1/15) ÷ 3600

es: 7° 45' 5" —› 7,4505 = 0,51675926

Subroutine:

L001     LBL L
L002     0
L003     STO X
L004     IP(L)×4÷60
L005     STO+ X
L006     IP(FP(L)×100)×4÷3600
L007     STO+ X
L008     FP(L×100)×100×(1÷15)÷3600
L009     STO+ X
L010     RCL X
L011     STO L
L012     RTN
          Codici di verifica del programma: LN=92 CK=B0C2

Esempio di verifica:

19 novembre 2014, ore 20:30, longitudine 7° 45' 5" (fuso orario +1)

    19            STO       G
    11             STO       M
    2014       STO       A
    XEQ       T       ENTER
    ... RUNNING ...
    J =
                2456980.50
    Premere R/S per proseguire l'esecuzione
    H=?
    20.30               ENTER       R/S
    Z=?
    1       ENTER       R/S
    L=?
    7.4505       ENTER       R/S
    ... RUNNING ...
    T =
                23.555970 —› 23h55m59,7s
    Premere R/S per terminare l'esecuzione
    Sul display rimarranno data giuliana e TSML:
    2456980.50
    23.555970

© Paolo B.
000webhost logo