risorse | casio fx-180p | modulo lunare

Modulo lunare

Scopo del gioco è riuscire a far toccare al modulo di allunaggio la superficie lunare ad una velocità consona, provvedendo ad azionare i motori quando opportuno, evitando nel contempo di esaurire il carburante a disposizione.

Il gioco è realizzato mediante un programma che, passo dopo passo, indica l'altitudine alla quale si trova il modulo di allunaggio, la sua velocità verticale corrente e la quantità di carburante disponibile nei serbatoi; l'utente, valutando i dati forniti dagli "strumenti di bordo", decide se è opportuno accendere i motori, e quanto carburante consumare durante il passo corrente. In funzione del carburante consumato, la velocità di discesa del modulo risulterà ridotta nella misura di 1m/s per ogni kg di carburante utilizzato. L'allunaggio, affinché possa essere considerato valido, deve avvenire con una velocità verticale finale inferiore a 2m/s; in caso contrario il modulo di allunaggio sarà considerato irrimediabilmente distrutto.

Nota: introdurre la sequenza KAC 5 Kin 3 prima di iniziare la programmazione.

Fisica (approssimata) del gioco

Le variabili considerate sono la quota q, la velocità v, la quantità di carburante c e la quantità di carburante cc utilizzata per ottenere la spinta s.

Sono prefissati i valori delle variabili dipendenti iniziali q(0), v(0), c(0).

Al passo p, l'utente può decidere di utilizzare una quantità di carburante pari a:

cc(p) ≤ c(p)

La quantità di carburante consumato determina la spinta risultante sul modulo lunare, che per semplicità si considera numericamente equivalente al carburante utilizzato:

s(p) = cc(p)

La velocità verticale del modulo, considerando l'accelerazione di gravità e l'eventuale spinta dovuta all'accensione del motore, è espressa dall'equazione (Δt=1):

v(p+1) = v(p) - g + s(p)

La quota alla quale si troverà il modulo al passo p+1 sarà:

q(p+1) = q(p) + v(p) + ½ a(t)

Essendo:

a(p) = v(p+1) - v(p)

per sostituzione si ottiene:

q(p+1) = q(p) + ½ (v(p+1) + v(p))

Detto

pa = minp { q(p) ≤ 0 }

l'allunaggio si considererà riuscito se:

|v(pa)| < 2

Uso delle memorie

Note implementative

La sequenza M - Kout N = verifica la condizione |KN| < √M, generando un errore in caso di esito negativo.

Esempio d'uso

Sequenza di inizializzazione del programma

Uso del programma

Programma P1

Determina il valore del prossimo numero da proporre.

passotastonote
1Kout 1visualizza la quota corrente q(p)
2HLT 
3Kout 3visualizza la velocità corrente v(p)
4HLT 
5Kout 2visualizza la quantità di carburante disponibile c(p)
6ENTrichiede la la quantità di carburante da bruciare cc(p)
7Min 
8- 
9Kout 2verifica che cc(p)≤c(p)
10= 
11x>0se cc(p)>c(p), riesegui la procedura
12+/- 
13Kin 2aggiorna la quantità di carburante disponibile
14(determina v(p+1)
155assumi g=5
16M- 
17Kout 3 
18M+la memoria M ora contiene v(p+1)
19+ 
20MR 
21Kin 3salva v(p+1) nella memoria K3
22) 
23÷ 
242 
25+sul display è ora presente il valore ½(v(p) + v(p+1))
26Kout 1che sommato al valore q(p)
27= 
28Kin 1origina q(p+1), che viene salvato nella memoria K1
29x>0se q(p+1) è negativo, la discesa è terminata
304il modulo è allunato…
31-verifica la condizione |v(p+1)|≤2
32Kout 3con l'espressione equivalente √(4-v(p+1)²)
33che esiste solo per i valori ammissibili di v(p+1)
34= 
35se v(p+1) è troppo elevata, produci una condizione d'errore,
360altrimenti segnala l'avvenuto allunaggio visualizzando quota 0

Pagina modificata il 9/11/2011