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