risorse | casio fx-180p | 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.
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
La sequenza M - Kout N x² = √ verifica la condizione |KN| < √M, generando un errore in caso di esito negativo.
È necessario impostare i valori q(0), v(0), c(0) nelle rispettive memorie:
1 0 0 Kin 1 5 0 Kin 2 1 0 +/- Kin 3
Il programma mostra in sequenza quota, velocità, carburante disponibile:
P1 → 100 RUN → -10 RUN → 50
Dei 50kg di carburante disponibili, l'utente prova a bruciarne 60:
6 0 RUN → 100 RUN → -10 RUN → 50
il programma rifiuta di consumare più carburante di quello disponibile, e ripete la richiesta…
L'utente opta per una caduta libera, lasciando il motore sempre spento: la velocità di discesa aumenta incontrollata fino all'inevitabile schianto finale:
0 RUN → 87.5 RUN → -15 RUN → 50
0 RUN → 70 RUN → -20 RUN → 50
0 RUN → 47.5 RUN → -25 RUN → 50
0 RUN → 20 RUN → -30 RUN → 50
0 RUN → E
L'utente re-inizializza gli strumenti di bordo:
1 0 0 Kin 1 5 0 Kin 2 1 0 +/- Kin 3
L'utente riavvia quindi la procedura di allunaggio:
P1 → 100.0 RUN → -10 RUN → 50
0 RUN → 87.5 RUN → -15 RUN → 50
0 RUN → 70 RUN → -20 RUN → 50
0 RUN → 47.5 RUN → -25 RUN → 50
1 5 RUN → 27.5 RUN → -15 RUN → 35
1 0 RUN → 15 RUN → -10 RUN → 25
1 0 RUN → 7.5 RUN → -5 RUN → 15
5 RUN → 2.5 RUN → -5 RUN → 10
1 0 RUN → 0
Allunaggio perfetto!
Al termine del programma, la memoria K2 contiene la quantità di carburante residuo, K3 la velocità finale:
Kout 2 → 0
Kout 3 → 0
Determina il valore del prossimo numero da proporre.
| passo | tasto | note |
|---|---|---|
| 1 | Kout 1 | visualizza la quota corrente q(p) |
| 2 | HLT | |
| 3 | Kout 3 | visualizza la velocità corrente v(p) |
| 4 | HLT | |
| 5 | Kout 2 | visualizza la quantità di carburante disponibile c(p) |
| 6 | ENT | richiede la la quantità di carburante da bruciare cc(p) |
| 7 | Min | |
| 8 | - | |
| 9 | Kout 2 | verifica che cc(p)≤c(p) |
| 10 | = | |
| 11 | x>0 | se cc(p)>c(p), riesegui la procedura |
| 12 | +/- | |
| 13 | Kin 2 | aggiorna la quantità di carburante disponibile |
| 14 | ( | determina v(p+1) |
| 15 | 5 | assumi g=5 |
| 16 | M- | |
| 17 | Kout 3 | |
| 18 | M+ | la memoria M ora contiene v(p+1) |
| 19 | + | |
| 20 | MR | |
| 21 | Kin 3 | salva v(p+1) nella memoria K3 |
| 22 | ) | |
| 23 | ÷ | |
| 24 | 2 | |
| 25 | + | sul display è ora presente il valore ½(v(p) + v(p+1)) |
| 26 | Kout 1 | che sommato al valore q(p) |
| 27 | = | |
| 28 | Kin 1 | origina q(p+1), che viene salvato nella memoria K1 |
| 29 | x>0 | se q(p+1) è negativo, la discesa è terminata |
| 30 | 4 | il modulo è allunato… |
| 31 | - | verifica la condizione |v(p+1)|≤2 |
| 32 | Kout 3 | con l'espressione equivalente √(4-v(p+1)²) |
| 33 | x² | che esiste solo per i valori ammissibili di v(p+1) |
| 34 | = | |
| 35 | √ | se v(p+1) è troppo elevata, produci una condizione d'errore, |
| 36 | 0 | altrimenti segnala l'avvenuto allunaggio visualizzando quota 0 |
Pagina modificata il 9/11/2011