Archive for aprile 2022

Distanza Terra-sole

Posted on 18 aprile 2022. Filed under: Senza categoria |

Questa mattina mi sono svegliato con una nuova idea, tanto per cambiare.

Nell Web Application sul meteo che sto sviluppando, e della quale vi darò in settimana il Link, voglio aggiungerci anche la distanza Terra-Sole in tempo reale, almeno del giorno.

Sappiamo dagli almanacchi e dalle enciclopedie di astronomia che la distanza minima dal Sole è di 147 milioni, la distanza massima è di 152 milioni e la distanza media è di 149,6 milioni di Km.

Come fare quindi sapendo una data, qual’è la distanza in quella data fra Terra e sole?

Sappiamo anche che la distanza temporale fra i giorni di Afelio e di Perielio è di circa 180 giorni (Gennaio= Perielio, Luglio=Afelio).

Come calcoliamo quindi in quale punto siamo fra i 147 e i 162 milioni di Km che ci separano dal Sole?

Ovviamente non posiamo fare una interpolazione lineare, in quanto la Terra aumenta di velocità man mano che si avvicina al Sole. Se la velocità fosse uguale, allora si avremmo potuto usare la formula S= V x T, ma in questo caso non possiamo usarlo.

Ci viene incontro la prima legge di Keplero che afferma l’orbita descritta da un pianeta è un’ellisse, di cui il Sole occupa uno dei due fuochi.

Quindi il raggio vettore che unisce il centro del sole al centro di un pianeta è uguale a:

1-0,01672 * COS(0,98560*(n-4)) dove n è il numero dei giorni dal 1° gennaio.

Traduciamo dalla formula a un codice in VB.NET e otteniamo:

    Private Sub button_Click(sender As Object, e As RoutedEventArgs) Handles button.Click
        Dim Data As String = InputBox("Inserire la data di calcolo")
        If IsDate(Data) = True Then
            Dim DataCalcolo = CDate(Data)
            Dim NumeroGiorno As Integer = DataCalcolo.DayOfYear

            Dim Raggio = 1 - 0.01672 * Math.Cos(0.9856 * (NumeroGiorno - 4) * Math.PI / 180)
            Dim Distanza = Raggio * 149600000
            MsgBox("Distanza Terra-Luna al " & DataCalcolo & ": " & Distanza & " Km")
        End If
    End Sub

Lanciamo l’applicazione e otteniamo:

Questa è una soluzione molto approssimativa. Se volessimo avere un valore più preciso (qua l’errore è su qualche migliaio di chilometri) dovremo inserire una lunga sequenza di correzioni, cosa che esula dallo scopo di questo articolo.

Leggi l'articolo intero | Make a Comment ( None so far )

Le ricorsioni

Posted on 6 aprile 2022. Filed under: Senza categoria |

Buongiorno, cari lettori del blog.

In questo nuovo e breve articolo voglio parlarvi delle ricorsioni.

Vediamo quindi cosa è una ricorsione.

La ricorsione è un metodo per definire una funzione in modo tale che la funzione includa sè stessa nella definizione.

E’ una tecnica molto usata nella programmazione, anche molto potente, perchè per ottenere un valore preciso di X, ad esempio, devi usare X tante volte finché il valore di X man mano diventa sempre più preciso.

Ad esempio vogliamo calcolare il fattoriale di un numero, il calcolo verrà fatto diverse volte fino a quando si ottiene un valore preciso.

Apriamo Visual Studio, creiamo un progetto in VB.NET e ci scriviamo il seguente codice:

Class MainWindow
    Private Sub button_Click(sender As Object, e As RoutedEventArgs) Handles button.Click
        Dim numero As Long = 0
        Dim risultato As Long = 0

        numero = Convert.ToSingle(InputBox("Inserisci un intero positivo: "))
        risultato = Fattoriale(numero)
        MsgBox("Il fattoriale è: " & risultato)
    End Sub

    Function Fattoriale(ByVal numero As Long) As Long
        If numero <= 1 Then
            Return 1
        Else
            Return numero * Fattoriale(numero - 1)
        End If
    End Function
End Class

Eseguiamolo passo passo e vediamo cosa succede.

Mettiamo come numero 5.

La funzione Fattoriale al primo ciclo dà un risultato di 5 * (fattoriale di numero-1)

Siamo quindi alla seconda esecuzione della funzione Fattoriale.

Numero ora vale 4.

La funzione Fattoriale ora dà un risultato di 4 * (fattoriale di 4-1)

Quindi al terzo ciclo numero=3

Ora fattoriale ritorna 3 * (fattoriale di 3-1)

Quindi al quarto ciclo numero=2

Fattoriale ritorna ora 2 * (fattoriale di 2-1)

Siamo al quinto ciclo e numero =1

Quindi ritorna fattoriale=1

Risultato finale = 120

120 viene ottenuto da= 5*4*3*2*1

Questo articolo l’ho scritto per vedere una ricorsione che useremo nell’astronomia, in un prossimo articolo.

Leggi l'articolo intero | Make a Comment ( None so far )

Liked it here?
Why not try sites on the blogroll...