Main Content

La traduzione di questa pagina non è aggiornata. Fai clic qui per vedere l'ultima versione in inglese.

Definizione del comportamento del grafico tramite l'utilizzo delle azioni di stato e delle etichette di transizione

Le azioni di stato e le azioni di transizione sono istruzioni che si scrivono rispettivamente all'interno di uno stato o di una transizione per definire il comportamento di un grafico Stateflow® durante la simulazione. Ad esempio, le azioni di questo grafico definiscono una macchina a stati che verifica empiricamente un'istanza della congettura di Collatz. Per un dato input numerico $u$, il grafico calcola la sequenza di Hailstone $n_0 = u,$ $n_1,$ $n_2,$ $n_3,$... iterando la seguente regola:

  • Se $n_i$ è pari, allora $n_{i+1} = n_i / 2$.

  • Se $n_i$ è dispari, allora $n_{i+1} = 3n_i+1$.

La congettura di Collatz afferma che ogni intero positivo ha una sequenza di Hailstone che alla fine raggiunge l'uno.

Il grafico è composto da tre stati. All'inizio della simulazione, lo stato Init inizializza i dati del grafico impostando:

  • I dati locali n sul valore di input u.

  • I dati locali n2 sul resto, quando n viene diviso per due.

  • I dati di output y su false.

A seconda della parità dell'input, il grafico passa allo stato Even o Odd. Quando l'attività dello stato si sposta tra gli stati Even e Odd, il grafico calcola i numeri della sequenza di Hailstone. Quando la sequenza raggiunge il valore di uno, i dati di output y diventano true e attivano un blocco Stop Simulation (Simulink) nel modello Simulink®.

Tipi di azioni di stato

Le azioni di stato definiscono le attività di un grafico Stateflow quando uno stato è attivo. I tipi più comuni di azioni di stato sono entry, during e exit:

  • Le azioni entry si verificano quando lo stato diventa attivo.

  • Le azioni during si verificano a un passaggio temporale in cui lo stato è già attivo e il grafico non esce dallo stato.

  • Le azioni exit si verificano quando il grafico esce dallo stato.

È possibile specificare il tipo di azione di stato utilizzando una parola chiave completa (entry, during, exit) o un'abbreviazione (en, du, ex). Puoi anche raggruppare i tipi di azioni di stato utilizzando le virgole. Ad esempio, un'azione con il tipo combinato entry, during si verifica al passaggio temporale in cui lo stato diventa attivo e a ogni passaggio temporale successivo finché lo stato rimane attivo.

Il grafico di Hailstone contiene azioni in questi stati:

  • Init: quando questo stato diventa attivo all'inizio della simulazione, l'azione entry determina la parità di n e imposta y su false. Quando il grafico esce da Init dopo un passaggio temporale, l'azione exit determina se n è uguale a uno.

  • Even: quando questo stato diventa attivo, così come in ciascun successivo passaggio temporale in cui tale stato è attivo, l'azione combinata entry, during calcola il valore e la parità per il numero successivo della sequenza di Hailstone n/2.

  • Odd: quando questo stato diventa attivo, così come in ciascun successivo passaggio temporale in cui tale stato è attivo, l'azione combinata entry, during verifica se n è maggiore di uno e, in caso affermativo, calcola il valore e la parità per il numero successivo della sequenza di Hailstone 3*n+1.

Tipi di etichette di transizione

Le etichette di transizione definiscono le attività di un grafico Stateflow quando si modifica lo stato attivo. I tipi più comuni di etichette di transizione sono le condizioni e le azioni di condizione.

  [Condition]{ConditionAction}

Condition è un'espressione booleana che determina se la transizione si verifica. Se non si specifica una condizione, la transizione avviene nel passaggio temporale successivo a quello in cui lo stato sorgente è diventato attivo.

ConditionAction è un'istruzione che viene eseguita quando la condizione che protegge la transizione è vera. L'azione di condizione avviene dopo la condizione ma prima di qualsiasi azione di stato exit o entry.

Il grafico di Hailstone contiene azioni in queste transizioni:

  • Transizione predefinita in Init: all'inizio della simulazione, l'azione di condizione n = u assegna il valore di input u ai dati locali n.

  • Transizione da Init a Even: la condizione n2 == 0 determina che la transizione avvenga quando n è pari. Il numero 1 all'origine di questa transizione indica che questa transizione viene valutata prima della transizione da Init a Odd.

  • Transizione da Odd a Even: la condizione n2 == 0 determina che la transizione avvenga quando n è pari.

  • Transizione da Even a Odd: la condizione n2 ~= 0 determina che la transizione avvenga quando n è dispari. In questo caso, l'azione di condizione y = isequal(n,1) determina se n è uguale a uno.

Analisi del comportamento del grafico

Per calcolare la sequenza di Hailstone partendo da un valore iniziale di nove:

1. Nel blocco Constant, inserire un valore di 9.

2. Nella scheda Simulation (Simulazione), fare clic su Run (Esegui). Il grafico risponde con le seguenti azioni:

  • Al tempo $t = 0$, si verifica la transizione predefinita a Init. L'azione di transizione imposta il valore di n su 9. Lo stato Init diventa attivo. Le azioni entry in Init impostano n2 su 1 e y su false.

  • Al tempo $t = 1$, la condizione n2 == 0 è falsa e il grafico si prepara a passare a Odd. L'azione exit in Init imposta y su false. Lo stato Init diventa inattivo e lo stato Odd diventa attivo. L'azione entry in Odd imposta n su 28 e n2 su 0.

  • Al tempo $t = 2$, la condizione n2 == 0 è vera, quindi il grafico si prepara a passare a Even. Lo stato Odd diventa inattivo e lo stato Even diventa attivo. L'azione entry in Even imposta n su 14 e n2 su 0.

  • Al tempo $t = 3$, la condizione n2 ~= 0 è falsa, quindi il grafico non esegue una transizione. Lo stato Even rimane attivo. L'azione during in Even imposta n su 7 e n2 su 1.

  • Al tempo $t = 4$, la condizione n2 ~= 0 è vera, quindi il grafico si prepara a passare a Odd. L'azione di transizione imposta y su falso. Lo stato Even diventa inattivo e lo stato Odd diventa attivo. Le azioni entry in Odd impostano n su 22 e n2 su 0.

  • Il grafico continua a calcolare la sequenza di Hailstone finché non raggiunge un valore n$= 1$ al tempo $t = 19$.

  • Al tempo $t = 20$, il grafico si prepara a passare da Even a Odd. L'azione di transizione imposta y su true. Lo stato Even diventa inattivo e lo stato Odd diventa attivo. Le azioni entry in Odd non modificano n o n2. Il blocco Stop Simulation collegato al segnale di output y interrompe la simulazione.

3. Nella scheda Simulation (Simulazione), sotto Review Results (Revisiona risultati), fare clic su Data Inspector (Controllo dei dati).

4. Per vedere i valori della sequenza di Hailstone, selezionare il segnale registrato n in Simulation Data Inspector (Controllo dei dati di simulazione).

La sequenza di Hailstone raggiunge il valore di uno dopo 19 iterazioni.

Argomenti complementari