Forme Expression
La forme Expression est le cœur mathématique de tout modèle Modellus. C'est là que tu définis les équations, les paramètres, les équations différentielles, les relations de récurrence et les conditions qui pilotent la simulation.
Vue d'ensemble
Une forme Expression contient une ou plusieurs instructions mathématiques écrites dans une syntaxe proche de LaTeX, dans un champ mathématique MathLive. Chaque instruction occupe une ligne. Toutes les formes Expression d'un modèle partagent un même système de calcul : le nom de chaque terme doit être unique dans l'ensemble des formes.
Lire une expression
Quand une forme contient deux équations ou plus, elles s'affichent en un seul bloc, alignées sur une même colonne de signes égal : les membres de gauche sont alignés à droite contre le signe égal, les membres de droite sont alignés à gauche après lui, et le bloc est centré dans la carte. Seul le signe égal principal de chaque ligne est aligné — un signe égal dans une condition, une fraction ou des parenthèses reste où il est. Une forme qui ne contient qu'une équation s'affiche comme avant. L'alignement ne concerne que l'affichage : le modèle enregistre toujours une simple ligne par équation.
Chaque partie d'une expression est colorée selon ce qu'elle représente :
- Variables — bleu foncé
- Nombres — orange
- Opérateurs, relations et parenthèses — gris neutre
- Fonctions comme
sin,lnousqrt— vert - Dérivées — le
ddedx/dt, les signes de dérivée partielle, les primes et les points de dérivation — magenta - Indices qualificatifs comme le
cdeK_c— bleu clair - Indices d'itération comme le
ndex_n— violet - Les termes selon lesquels le modèle avance — le terme indépendant
tet le terme d'itérationn, partout où ils apparaissent seuls — violet, la couleur qu'ils ont déjà comme indice - Lignes que le modèle ne peut pas lire — rouge, avec l'endroit du problème signalé (voir ci-dessous)
Une ligne que le modèle ne peut pas lire est signalée sur la carte elle-même, pas cachée derrière un survol. La ligne est écrite en rouge et barrée d'un bandeau, la carte est bordée de rouge pour qu'on la repère de loin sur le tableau, et un panneau au pied de la carte en donne la raison, dans la langue du reste de l'éditeur. Quand il manque quelque chose à la ligne — une valeur, une parenthèse —, un emplacement en pointillés est dessiné à l'endroit où ce morceau devrait se trouver, comme l'emplacement vide d'une formule type ; quand le morceau manquant est dans une fraction ou une racine, c'est cette fraction ou cette racine qui est soulignée, car on ne peut pas désigner l'endroit plus précisément que le symbole qui le contient. Un symbole qui ne peut pas figurer là où il a été écrit est souligné sur place. Le panneau s'ouvre dès que tu t'occupes de la carte — le pointeur dessus, la carte sélectionnée ou le curseur dedans — et ne contient que les messages, sans titre au-dessus et sans nom de ligne devant chacun : pointer un message éclaire la ligne concernée, et cliquer dessus y place le curseur. Les lignes sont vérifiées pendant que tu écris, et pas seulement quand tu quittes la carte, sauf celle où se trouve le curseur : une ligne reste à moitié écrite tant que tu l'écris, elle n'est donc vérifiée qu'une fois que tu la quittes.
Les couleurs désignent une famille, pas une nuance fixe. Chacune est lue dans les jetons de thème --math-*, puis ajustée à la carte sur laquelle elle est peinte : la teinte reste la même, la luminosité change jusqu'à ce que le texte se détache nettement du fond, et la couleur est en même temps approfondie. Une carte blanche reçoit des couleurs profondes et saturées ; une carte noire ou gris foncé, des couleurs vives ; changer la couleur de la carte recolore l'expression aussitôt. Chaque couleur garde au moins le contraste demandé par les règles d'accessibilité, et les opérateurs restent d'un cran plus discrets que les variables. Le curseur et la surbrillance de la sélection suivent la même règle, tout comme la couleur du texte de la carte, qui dessine les parenthèses, les barres de fraction et les signes de racine : elle reste exactement celle que tu as choisie et n'est éclaircie que si la carte risquait de l'effacer. Rien de tout cela n'atteint le modèle : une expression enregistrée ou copiée ne porte jamais de couleur.
Barre d'outils
La barre d'outils apparaît quand tu sélectionnes une forme Expression. Elle propose :
- Sélecteur de couleur — Change la couleur d'accent de la forme
- Sélecteur de raccourcis — Insère rapidement des formules types courantes
- Supprimer — Retire la forme du tableau
Types d'instructions
Chaque ligne d'une forme Expression est interprétée comme l'un de ces types d'instructions :
| Type | Syntaxe | Exemple | Description |
|---|---|---|---|
| Paramètre | name = value |
g = 9.8 |
Une valeur constante. Ne dépend ni d'autres termes ni de la variable indépendante. |
| Fonction | name = expression |
E = ½·m·v² |
Une valeur calculée qui dépend d'autres termes ou de la variable indépendante. |
| Dérivée | dx/dt = expression |
dx/dt = v |
Équation différentielle du premier ordre. Demande une valeur initiale dans les propriétés de la forme. |
| Récurrence | x_{n} = expression |
x_{n} = x_{n-1} + v·Δt |
Définition pas à pas. L'indice fixe le décalage en nombre de pas. |
| Condition | name = \begin{cases}...\end{cases} |
v = { 0 & t=0 \\ a·t & otherwise } |
Définition par morceaux. Il faut au moins deux branches. |
| Fonction avec argument | f(t) = expression |
h(t) = v₀·t - ½·g·t² |
Notation explicite de l'argument (purement visuelle ; même comportement qu'une Fonction). |
| Affichage | expression |
F = ma |
Simple étiquette visuelle. Non calculée par le calculateur. |
Opérateurs arithmétiques
| Opérateur | LaTeX | Touche | Description |
|---|---|---|---|
| Addition | + | + | Somme de deux expressions |
| Soustraction | - | - | Différence de deux expressions |
| Multiplication | \cdot | * | Multiplication explicite (symbole ·) |
| Multiplication implicite | 2x | 2x | Un coefficient suivi d'un nom ou d'une parenthèse |
| Division en ligne | / | / | Notation a/b sur une ligne |
| Fraction | \frac{a}{b} | / (en position de numérateur) | Fraction verticale, comme dans un manuel |
| Puissance | ^{n} | ^ | Élévation à une puissance |
| Factorielle | x! | ! | Factorielle en notation postfixée, pour les entiers positifs ou nuls |
| Racine carrée | \sqrt{x} | \sqrt | Racine carrée |
| Opposé | -x | - | Signe moins devant une expression |
À propos de la factorielle : la factorielle s'écrit en notation postfixée (n!) et s'applique aux entiers positifs ou nuls.
Opérateurs de comparaison
Utilisés dans les branches des conditions (\begin{cases}) :
| Opérateur | LaTeX | Signification |
|---|---|---|
| = | = | Égal à |
| > | > | Strictement supérieur à |
| < | < | Strictement inférieur à |
| ≥ | \ge ou \geq | Supérieur ou égal à |
| ≤ | \le ou \leq | Inférieur ou égal à |
| ≠ | \neq | Différent de |
Les conditions peuvent s'enchaîner (par exemple 0 < x < 1) ou se combiner avec \lor (OU) et \land (ET). Le mot-clé \text{otherwise} joue le rôle de la branche « sinon ».
Fonctions intégrées
| Catégorie | Fonction | LaTeX | Arguments |
|---|---|---|---|
| Trigonométriques | Sinus | \sin\left(x\right) | 1 |
| Cosinus | \cos\left(x\right) | 1 | |
| Tangente | \tan\left(x\right) | 1 | |
| Cotangente | \cot\left(x\right) | 1 | |
| Sécante | \sec\left(x\right) | 1 | |
| Cosécante | \csc\left(x\right) | 1 | |
| Trigonométriques réciproques | Arc sinus | \arcsin\left(x\right) | 1 |
| Arc cosinus | \arccos\left(x\right) | 1 | |
| Arc tangente | \arctan\left(x\right) | 1 | |
| Hyperboliques | Sinus hyperbolique | \sinh\left(x\right) | 1 |
| Cosinus hyperbolique | \cosh\left(x\right) | 1 | |
| Tangente hyperbolique | \tanh\left(x\right) | 1 | |
| Logarithmes | Logarithme népérien | \ln\left(x\right) | 1 |
| Logarithme décimal | \log\left(x\right) | 1 | |
| À deux arguments | Maximum | \max\left(a, b\right) | 2 |
| Minimum | \min\left(a, b\right) | 2 | |
| Modulo | \mod\left(a, b\right) | 2 | |
| Utilitaires | Signe | sign\left(x\right) | 1 — renvoie -1, 0 ou 1 |
| Valeur aléatoire | rnd\left(x\right) | 1 — nombre réel aléatoire dans [0, x] | |
| Entier aléatoire | irnd\left(x\right) | 1 — entier aléatoire dans [0, x] | |
| Partie entière | int\left(x\right) | 1 — tronque à l'entier | |
| Arrondi | round\left(x\right) | 1 — arrondit à l'entier le plus proche | |
| Autres | Déterminant | \det\left(x\right) | 1 |
\left( et \right). Des parenthèses seules ne sont pas valides dans un appel de fonction. Le champ mathématique les insère automatiquement.
Constantes
| Nom | LaTeX | Valeur |
|---|---|---|
| Pi | \pi | 3.14159… |
| Nombre d'Euler (e) | e ou \E | 2.71828… |
g n'est pas une constante intégrée. Définis-le comme paramètre : g = 9.8.
Syntaxe particulière
Variation (Δ)
| Syntaxe | Signification |
|---|---|
\Delta x | x(actuel) − x(précédent). Pour la variable indépendante : la valeur du pas. |
\Delta\left(expr\right) | Variation appliquée à une sous-expression. |
Indices (références à un pas)
| Syntaxe | Signification |
|---|---|
x_{n-1} | Valeur de x à l'itération précédente |
x_{n} | Itération actuelle (membre de gauche d'une récurrence) |
x_0 | Valeur initiale de x (chiffre seul, sans accolades) |
x_{0} | Valeur initiale (forme avec accolades) |
Termes indexés (références à un élément)
Un terme peut représenter plusieurs valeurs à la fois — les oscillateurs d'une onde, par exemple — s'il est défini selon un indice d'élément plutôt que selon le temps. L'indice est lié par l'affectation : il ne devient donc jamais une variable du modèle :
y\left[i\right] = A\cdot\cos\left(k\cdot i - \omega\cdot t\right)
| Syntaxe | Signification |
|---|---|
y\left[i\right] = … | Définit y selon les indices d'élément ; le second membre est évalué une fois pour chaque élément demandé |
y\left[3\right] | L'élément 3 de y |
y\left[i\right] | L'élément i, où i est n'importe quelle expression |
s = y + z | Superposition : s est indexé lui aussi, et la somme se fait élément par élément |
C'est un troisième espace d'indices, à côté des deux précédents : y_3 lit y à l'itération 3 et y\left(3\right) le lit pour la valeur 3 de la variable indépendante, tandis que seuls les crochets lisent un élément. Un terme indexé n'a pas de valeur unique : on le lit élément par élément au lieu de l'afficher comme un nombre.
Un objet Oscilloscope les lit : indique les termes indexés dans sa ligne Waves et chacun est tracé sur son écran quadrillé, une trace par ligne. Deux ondes progressives additionnées de cette façon — l'une avec -\omega\cdot t, l'autre avec +\omega\cdot t — donnent une onde stationnaire aux nœuds fixes. Un Piano en publie un : l'accord qu'il tient, un élément par échantillon.
Un objet Onde mécanique part au contraire d'un terme ordinaire. Indique dans sa ligne Wave un terme que le modèle calcule lui-même — y=A\cdot\sin\left(\omega\cdot t\right) — et la chaîne reproduit ce que ce terme a fait : à chaque itération, le premier oscillateur reçoit la valeur que le terme vient de prendre et transmet la précédente au suivant ; la chaîne contient ainsi les dernières valeurs de la simulation, la plus ancienne à l'autre bout, et le mouvement s'y propage au fil de la simulation. Elle garde une valeur par oscillateur : Samples indique donc aussi jusqu'où elle remonte dans le temps. Écris un nom que le modèle ne définit pas, et l'objet fonctionne dans l'autre sens : il calcule son onde à partir de son amplitude, de sa fréquence, de sa célérité et de sa phase, et transmet au modèle, sous ce nom, ce que fait son oscillateur de référence. Le nom devient un terme du modèle — il figure dans toutes les listes de termes, comme un nom que le modèle affecte — : on peut donc le représenter en fonction du temps, l'utiliser dans une définition (z=2\cdot y) et l'ajouter à la lecture d'un autre objet (s=forward+back). Un nom que le modèle définit appartient au modèle — une affectation, selon le temps ou selon les indices d'élément, est lue et jamais écrasée —, et un objet retiré du tableau emporte son terme avec lui.
Unités
Ajoute des unités, purement affichées, après n'importe quelle instruction :
v = 10 \quad\textcolor{gray}{\mathrm{m/s}}
Les unités sont décoratives : le moteur ne les vérifie pas et ne les convertit pas.
Noms à point (références aux formes enfants)
Fais référence aux termes des formes enfants d'un Référentiel : body.x, particle.velocity.
Raccourcis clavier
Le champ mathématique MathLive accepte ces raccourcis clavier pour une saisie rapide :
| Action | Raccourci | Résultat |
|---|---|---|
| Ouvrir la palette de formules types | ⌘. (macOS) · Ctrl+. (Windows/Linux) | Choisis une formule type dans la palette compacte |
| Puissance (exposant) | ^ | |
| Indice | _ | |
| Opposé | ~ | |
| Factorielle | ! | |
| Racine carrée | # | |
| Delta | % | |
| Valeur absolue | | | |
| Différent de | <> | |
| Supérieur ou égal | >= | |
| Inférieur ou égal | <= | |
| Condition (par morceaux) | \ | |
| Ou | ⌥v (macOS) · Alt+v (Windows) | |
| Et | ⌥^ (macOS) · Alt+^ (Windows) | |
| Formule type de dérivée | ⌥/ (macOS) · Alt+/ (Windows) | |
| Partie entière | ⌥_ (macOS) · Alt+_ (Windows) | |
| Partie entière supérieure | ⌘_ (macOS uniquement) | |
| Fraction | ⌘/ (macOS) · Ctrl+/ (Windows) | |
| Point de multiplication | * | |
| Nouvelle ligne (nouvelle instruction) | Enter | — |
| Sortir / emplacement suivant | Tab | — |
Sélecteur de raccourcis
Pendant la saisie, appuie sur ⌘. sur macOS ou sur Ctrl+. sur Windows/Linux pour ouvrir la palette de raccourcis. Tu peux aussi l'ouvrir avec le bouton de la barre d'outils.
- Équations différentielles (dx/dt = ..., raccourci : ⌥ + / sur macOS, Alt + / sur Windows)
- Récurrences (x_n = x_{n-1} + ...)
- Fonctions définies par morceaux
- Formule type de la partie entière
\lfloor x\rfloor - Formule type de la partie entière supérieure
\lceil x\rceil - Formules de physique courantes
- Identités trigonométriques
Notation intégrale
Tu peux saisir des intégrales en notation LaTeX, par exemple \int_{a}^{b} f\left(x\right)\,\mathrm{d}x. Pour obtenir la partie entière, utilise la fonction utilitaire int\left(x\right).
Panneau des propriétés
Quand une forme Expression est sélectionnée, le panneau des propriétés affiche :
| Propriété | Description |
|---|---|
| Variable indépendante | La variable d'itération (par défaut : t) |
| Pas | L'incrément à chaque itération (Δt) |
| Début / Fin | L'intervalle de la variable indépendante |
| Valeurs initiales | Les valeurs de départ des équations différentielles et des récurrences |
| Scénarios | Plusieurs jeux de valeurs initiales pour étudier l'effet des paramètres |
Exemples
Cinématique simple
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
Croissance d'une population (récurrence)
r = 0.05
P_{n} = P_{n-1}·\left(1 + r\right)
Vitesse définie par morceaux
v = \begin{cases} 0 & t = 0 \\ a·t & 0 < t < 5 \\ a·5 & \text{otherwise} \end{cases}