Forma Espressione
La forma Espressione è il cuore matematico di ogni modello di Modellus. È qui che definisci le equazioni, i parametri, le equazioni differenziali, le ricorrenze e le condizioni che guidano la simulazione.
Panoramica
Una forma Espressione contiene una o più istruzioni matematiche scritte con una sintassi simile al LaTeX in un campo matematico MathLive. Ogni istruzione occupa una riga. Tutte le forme Espressione di un modello condividono un unico sistema di calcolo: i nomi dei termini devono essere unici in tutto il modello, non solo nella singola forma.
Leggere un'espressione
Quando una forma contiene due o più equazioni, vengono mostrate come un unico blocco con una sola colonna per il segno di uguale: i primi membri sono allineati a destra contro il segno di uguale, i secondi membri sono allineati a sinistra dopo di esso, e il blocco è centrato nella scheda. Si allinea solo il segno di uguale principale di ogni riga: un segno di uguale dentro una condizione, una frazione o delle parentesi resta dov'è. Una forma con una sola equazione si vede come prima. L'allineamento riguarda solo la presentazione: il modello memorizza sempre una riga semplice per ogni equazione.
Ogni parte di un'espressione è colorata secondo il suo significato:
- Variabili — blu scuro
- Numeri — arancione
- Operatori, relazioni e parentesi — grigio neutro
- Funzioni come
sin,lnosqrt— verde - Derivate (la
ddidx/dt, i simboli di derivata parziale, gli apici e le derivate col punto) — magenta - Pedici qualificativi come la
cdiK_c— azzurro - Indici di iterazione come la
ndix_n— viola - I termini con cui avanza il modello (il termine indipendente
te il termine dell'iterazionen, ovunque compaiano da soli) — viola, lo stesso colore che hanno già come indice - Righe che il modello non riesce a leggere — rosso, e segnate nel punto in cui si trovano (vedi sotto)
Se il modello non riesce a leggere una riga, lo dice sulla scheda stessa, non nascosto dietro un passaggio del mouse. La riga è scritta in rosso e attraversata da una fascia, la scheda ha un bordo rosso così la riconosci anche da lontano sulla lavagna, e un pannello in fondo alla scheda spiega il perché, nella stessa lingua del resto dell'editor. Dove alla riga manca qualcosa (un valore, una parentesi) viene disegnato uno spazio tratteggiato nel punto in cui andrebbe, come lo spazio vuoto di uno schema da completare; quando il pezzo mancante è dentro una frazione o una radice, viene invece sottolineata quella frazione o radice, perché il punto non si può indicare con più precisione del simbolo che lo contiene. Un simbolo che non può stare dove è stato scritto viene sottolineato lì dov'è. Il pannello si apre ogni volta che ti avvicini alla scheda (con il puntatore sopra, con la scheda selezionata o con il cursore dentro) e mostra soltanto le spiegazioni, senza un titolo sopra e senza il nome della riga davanti a ciascuna: puntando una spiegazione si illumina la riga a cui si riferisce, e facendo clic il cursore va lì. Le righe vengono controllate mentre scrivi e non solo quando ti sposti altrove, tranne la riga in cui si trova il cursore: una riga è incompleta finché la stai scrivendo, quindi viene lasciata stare finché non la lasci.
I colori indicano una famiglia, non una tonalità fissa. Ognuno viene letto dai token del tema --math-* e poi adattato alla scheda su cui è dipinto: la tinta resta, la luminosità si sposta finché il testo non si stacca bene dallo sfondo, e allo stesso tempo il colore si fa più intenso. Una scheda bianca riceve colori profondi e saturi; una scheda nera o grigio scuro riceve colori brillanti; cambiando il colore della scheda l'espressione si ridipinge subito. Ogni colore mantiene almeno il contrasto richiesto dalle linee guida sull'accessibilità, e gli operatori restano un tono più discreti delle variabili. Il cursore e l'evidenziazione della selezione seguono la stessa regola, e così anche il colore del testo della scheda, che è quello con cui si disegnano le parentesi, le linee di frazione e i segni di radice: resta esattamente come l'hai scelto e viene schiarito solo quando altrimenti la scheda lo farebbe sparire. Niente di tutto questo arriva al modello: un'espressione salvata o copiata non porta mai con sé un colore.
Barra degli strumenti
La barra degli strumenti compare quando selezioni una forma Espressione. Offre:
- Selettore del colore — Cambia il colore principale della forma
- Selettore delle scorciatoie — Inserisce rapidamente gli schemi matematici più comuni
- Elimina — Rimuove la forma dalla lavagna
Tipi di istruzione
Ogni riga di una forma Espressione viene letta come uno di questi tipi di istruzione:
| Tipo | Sintassi | Esempio | Descrizione |
|---|---|---|---|
| Parametro | name = value |
g = 9.8 |
Un valore costante. Non dipende da altri termini né dalla variabile indipendente. |
| Funzione | name = expression |
E = ½·m·v² |
Un valore calcolato che dipende da altri termini o dalla variabile indipendente. |
| Differenziale | dx/dt = expression |
dx/dt = v |
Equazione differenziale ordinaria del primo ordine. Richiede un valore iniziale nelle proprietà della forma. |
| Ricorrenza | x_{n} = expression |
x_{n} = x_{n-1} + v·Δt |
Definizione passo per passo. Il pedice determina lo scarto di passi. |
| Condizionale | name = \begin{cases}...\end{cases} |
v = { 0 & t=0 \\ a·t & otherwise } |
Definizione a tratti. Servono almeno due rami. |
| Funzione con argomento | f(t) = expression |
h(t) = v₀·t - ½·g·t² |
Notazione con argomento esplicito (solo estetica; si comporta come Funzione). |
| Visualizzazione | expression |
F = ma |
Solo etichetta visiva. Il calcolatore non la calcola. |
Operatori aritmetici
| Operatore | LaTeX | Tasti | Descrizione |
|---|---|---|---|
| Addizione | + | + | Somma di due espressioni |
| Sottrazione | - | - | Differenza di due espressioni |
| Moltiplicazione | \cdot | * | Moltiplicazione esplicita (simbolo ·) |
| Moltiplicazione implicita | 2x | 2x | Coefficiente seguito da un nome o da una parentesi |
| Divisione in linea | / | / | Notazione in linea a/b |
| Frazione | \frac{a}{b} | / (in posizione di numeratore) | Frazione verticale, in stile tipografico |
| Potenza | ^{n} | ^ | Elevamento a potenza |
| Fattoriale | x! | ! | Fattoriale in notazione postfissa per interi non negativi |
| Radice quadrata | \sqrt{x} | \sqrt | Radice quadrata |
| Opposto | -x | - | Cambio di segno (meno unario) |
Nota sul fattoriale: il fattoriale usa la notazione postfissa (n!) ed è pensato per valori interi non negativi.
Operatori di confronto
Si usano nei rami delle condizioni (\begin{cases}):
| Operatore | LaTeX | Significato |
|---|---|---|
| = | = | Uguale a |
| > | > | Maggiore di |
| < | < | Minore di |
| ≥ | \ge o \geq | Maggiore o uguale |
| ≤ | \le o \leq | Minore o uguale |
| ≠ | \neq | Diverso da |
Le condizioni si possono concatenare (per esempio 0 < x < 1) o combinare con \lor (O) e \land (E). La parola chiave \text{otherwise} fa da ramo «altrimenti».
Funzioni predefinite
| Categoria | Funzione | LaTeX | Argomenti |
|---|---|---|---|
| Goniometriche | Seno | \sin\left(x\right) | 1 |
| Coseno | \cos\left(x\right) | 1 | |
| Tangente | \tan\left(x\right) | 1 | |
| Cotangente | \cot\left(x\right) | 1 | |
| Secante | \sec\left(x\right) | 1 | |
| Cosecante | \csc\left(x\right) | 1 | |
| Goniometriche inverse | Arcoseno | \arcsin\left(x\right) | 1 |
| Arcocoseno | \arccos\left(x\right) | 1 | |
| Arcotangente | \arctan\left(x\right) | 1 | |
| Iperboliche | Seno iperbolico | \sinh\left(x\right) | 1 |
| Coseno iperbolico | \cosh\left(x\right) | 1 | |
| Tangente iperbolica | \tanh\left(x\right) | 1 | |
| Logaritmiche | Logaritmo naturale | \ln\left(x\right) | 1 |
| Logaritmo in base 10 | \log\left(x\right) | 1 | |
| A due argomenti | Massimo | \max\left(a, b\right) | 2 |
| Minimo | \min\left(a, b\right) | 2 | |
| Modulo (resto) | \mod\left(a, b\right) | 2 | |
| Di utilità | Segno | sign\left(x\right) | 1 — restituisce -1, 0 o 1 |
| Valore casuale | rnd\left(x\right) | 1 — numero decimale casuale in [0, x] | |
| Valore intero casuale | irnd\left(x\right) | 1 — intero casuale in [0, x] | |
| Parte intera | int\left(x\right) | 1 — tronca all'intero | |
| Arrotondamento | round\left(x\right) | 1 — arrotonda all'intero più vicino | |
| Altro | Determinante | \det\left(x\right) | 1 |
\left( e \right). Le parentesi semplici non sono valide nelle chiamate di funzione. Il campo matematico le inserisce automaticamente.
Costanti
| Nome | LaTeX | Valore |
|---|---|---|
| Pi greco | \pi | 3.14159… |
| Numero di Nepero | e o \E | 2.71828… |
g non è una costante predefinita. Definiscila come parametro: g = 9.8.
Sintassi speciale
Differenza finita (Δ)
| Sintassi | Significato |
|---|---|
\Delta x | x(attuale) − x(precedente). Per la variabile indipendente: l'ampiezza del passo. |
\Delta\left(expr\right) | Differenza finita applicata a una sottoespressione. |
Pedici (riferimenti ai passi)
| Sintassi | Significato |
|---|---|
x_{n-1} | Valore di x nell'iterazione precedente |
x_{n} | Iterazione attuale (primo membro della ricorrenza) |
x_0 | Valore iniziale di x (cifra semplice, senza graffe) |
x_{0} | Valore iniziale (forma con le graffe) |
Termini indicizzati (riferimenti agli elementi)
Un termine può rappresentare molti valori insieme, per esempio gli oscillatori di un'onda, se lo definisci su un indice di elemento invece che sul tempo. L'indice è vincolato dall'assegnazione, quindi non diventa mai una variabile del modello:
y\left[i\right] = A\cdot\cos\left(k\cdot i - \omega\cdot t\right)
| Sintassi | Significato |
|---|---|
y\left[i\right] = … | Definisce y sugli indici degli elementi; il secondo membro viene valutato una volta per ogni elemento richiesto |
y\left[3\right] | L'elemento 3 di y |
y\left[i\right] | L'elemento i, dove i è un'espressione qualsiasi |
s = y + z | Sovrapposizione: anche s è indicizzato, e si somma elemento per elemento |
È un terzo spazio di indici, accanto ai due precedenti: y_3 legge y all'iterazione 3 e y\left(3\right) la legge per il valore 3 della variabile indipendente, mentre solo le parentesi quadre leggono un elemento. Un termine indicizzato non ha un valore singolo, quindi se ne leggono gli elementi invece di mostrarlo come un numero.
Un oggetto Oscilloscopio li legge: indica i termini indicizzati nella sua riga Onde e ciascuno viene disegnato sul suo reticolo, una traccia per riga. Due onde progressive sommate in questo modo, una con -\omega\cdot t e una con +\omega\cdot t, danno un'onda stazionaria con i nodi fissi. Un Pianoforte ne pubblica uno: l'accordo che sta tenendo, un elemento per campione.
Un oggetto Onda meccanica lavora invece a partire da un termine semplice. Indica nella sua riga Onda un termine che il modello calcola da sé, come y=A\cdot\sin\left(\omega\cdot t\right), e la catena ripete quello che quel termine ha fatto: a ogni iterazione il primo oscillatore riceve il valore che il termine ha appena assunto e passa avanti quello di prima, così la catena contiene gli ultimi valori dell'esecuzione, con il più vecchio in fondo, e il moto si propaga lungo di essa man mano che l'esecuzione procede. Contiene un valore per oscillatore, quindi Campioni indica anche quanto indietro arriva. Se scrivi un nome che il modello non definisce, l'oggetto fa il contrario: calcola la sua onda a partire da ampiezza, frequenza, velocità e fase e passa al modello, con quel nome, ciò che fa il suo oscillatore di riferimento. Il nome diventa un termine del modello (compare in tutti gli elenchi dei termini, come un nome a cui il modello assegna un valore), quindi puoi tracciarne il grafico in funzione del tempo, leggerlo in una definizione (z=2\cdot y) e sommarlo alla lettura di un altro oggetto (s=forward+back). Un nome che il modello definisce appartiene al modello: un'assegnazione, sul tempo o sugli indici degli elementi, viene letta e non sovrascritta; e un oggetto tolto dalla lavagna si porta via il suo termine.
Indicazione delle unità di misura
Aggiungi dopo qualsiasi istruzione delle unità di misura solo da mostrare:
v = 10 \quad\textcolor{gray}{\mathrm{m/s}}
Le unità sono solo estetiche: il motore non le controlla né le converte.
Nomi con il punto (riferimenti alle forme figlie)
Fai riferimento ai termini delle forme figlie dentro un Sistema di riferimento: body.x, particle.velocity.
Scorciatoie da tastiera
Il campo matematico MathLive supporta queste scorciatoie da tastiera per scrivere più in fretta:
| Azione | Scorciatoia | Risultato |
|---|---|---|
| Apri la tavolozza degli schemi | ⌘. (macOS) · Ctrl+. (Windows/Linux) | Scegli uno schema matematico dalla tavolozza compatta |
| Potenza (apice) | ^ | |
| Pedice (indice) | _ | |
| Opposto (meno unario) | ~ | |
| Fattoriale | ! | |
| Radice quadrata | # | |
| Delta | % | |
| Valore assoluto | | | |
| Diverso | <> | |
| Maggiore o uguale | >= | |
| Minore o uguale | <= | |
| Condizione (a tratti) | \ | |
| O | ⌥v (macOS) · Alt+v (Windows) | |
| E | ⌥^ (macOS) · Alt+^ (Windows) | |
| Schema del differenziale | ⌥/ (macOS) · Alt+/ (Windows) | |
| Arrotondamento per difetto | ⌥_ (macOS) · Alt+_ (Windows) | |
| Arrotondamento per eccesso | ⌘_ (solo macOS) | |
| Frazione | ⌘/ (macOS) · Ctrl+/ (Windows) | |
| Punto di moltiplicazione | * | |
| Nuova riga (nuova istruzione) | Enter | — |
| Esci / spazio successivo | Tab | — |
Selettore delle scorciatoie
Mentre scrivi, premi ⌘. su macOS o Ctrl+. su Windows/Linux per aprire la tavolozza delle scorciatoie. Puoi aprirla anche con il pulsante della barra degli strumenti.
- Equazioni differenziali (dx/dt = ..., scorciatoia: ⌥ + / su macOS, Alt + / su Windows)
- Ricorrenze (x_n = x_{n-1} + ...)
- Funzioni definite a tratti
- Schema della funzione arrotondamento per difetto
\lfloor x\rfloor - Schema della funzione arrotondamento per eccesso
\lceil x\rceil - Formule di fisica comuni
- Identità goniometriche
Notazione degli integrali
Puoi scrivere integrali con la notazione LaTeX, per esempio \int_{a}^{b} f\left(x\right)\,\mathrm{d}x. Per la parte intera, usa la funzione di utilità int\left(x\right).
Pannello delle proprietà
Quando è selezionata una forma Espressione, il pannello delle proprietà mostra:
| Proprietà | Descrizione |
|---|---|
| Variabile indipendente | La variabile dell'iterazione (predefinita: t) |
| Passo | L'incremento a ogni iterazione (Δt) |
| Inizio / Fine | Intervallo della variabile indipendente |
| Valori iniziali | Valori di partenza per le equazioni differenziali e le ricorrenze |
| Scenari | Più insiemi di valori iniziali per studiare l'effetto dei parametri |
Esempi
Cinematica semplice
g = 9.8
v₀ = 20
θ = 45
vx = v₀·\cos\left(θ\right)
vy = v₀·\sin\left(θ\right) - g·t
\frac{dx}{dt} = vx
\frac{dy}{dt} = vy
Crescita di una popolazione (ricorrenza)
r = 0.05
P_{n} = P_{n-1}·\left(1 + r\right)
Velocità definita a tratti
v = \begin{cases} 0 & t = 0 \\ a·t & 0 < t < 5 \\ a·5 & \text{otherwise} \end{cases}