Documentation / Formes / Expression

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.

Forme Expression sur le tableau, avec des équations visibles

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.

Utilise plusieurs petites formes Expression regroupées par thème (paramètres, équations, grandeurs dérivées) pour garder ton modèle ordonné et lisible.

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.

Trois formes Expression montrant des équations alignées avec des couleurs selon leur rôle

Chaque partie d'une expression est colorée selon ce qu'elle représente :

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

Barre d'outils de la forme Expression avec le sélecteur de couleur, le sélecteur de raccourcis et le bouton de suppression

La barre d'outils apparaît quand tu sélectionnes une forme Expression. Elle propose :

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 implicite2x2xUn 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
Factoriellex!!Factorielle en notation postfixée, pour les entiers positifs ou nuls
Racine carrée\sqrt{x}\sqrtRacine 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 \geqSupérieur ou égal à
≤\le ou \leqInférieur ou égal à
≠\neqDiffé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étriquesSinus\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éciproquesArc sinus\arcsin\left(x\right)1
Arc cosinus\arccos\left(x\right)1
Arc tangente\arctan\left(x\right)1
HyperboliquesSinus hyperbolique\sinh\left(x\right)1
Cosinus hyperbolique\cosh\left(x\right)1
Tangente hyperbolique\tanh\left(x\right)1
LogarithmesLogarithme népérien\ln\left(x\right)1
Logarithme décimal\log\left(x\right)1
À deux argumentsMaximum\max\left(a, b\right)2
Minimum\min\left(a, b\right)2
Modulo\mod\left(a, b\right)2
UtilitairesSignesign\left(x\right)1 — renvoie -1, 0 ou 1
Valeur aléatoirernd\left(x\right)1 — nombre réel aléatoire dans [0, x]
Entier aléatoireirnd\left(x\right)1 — entier aléatoire dans [0, x]
Partie entièreint\left(x\right)1 — tronque à l'entier
Arrondiround\left(x\right)1 — arrondit à l'entier le plus proche
AutresDéterminant\det\left(x\right)1
Tous les appels de fonction utilisent les délimiteurs \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

NomLaTeXValeur
Pi\pi3.14159…
Nombre d'Euler (e)e ou \E2.71828…
g n'est pas une constante intégrée. Définis-le comme paramètre : g = 9.8.

Syntaxe particulière

Variation (Δ)

SyntaxeSignification
\Delta xx(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)

SyntaxeSignification
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_0Valeur 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)
SyntaxeSignification
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 + zSuperposition : 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 :

ActionRaccourciRésultat
Ouvrir la palette de formules types ⌘. (macOS) · Ctrl+. (Windows/Linux) Choisis une formule type dans la palette compacte
Puissance (exposant) ^ x^2
Indice _ x_{t-1}
Opposé ~ -x
Factorielle ! n!
Racine carrée # \sqrt{x}
Delta % \Delta x
Valeur absolue | \left|x\right|
Différent de <> x \ne y
Supérieur ou égal >= x \ge 1
Inférieur ou égal <= x \le 1
Condition (par morceaux) \ \begin{cases} 1 & t=0 \\ y & t\ge2 \end{cases}
Ou ⌥v (macOS) · Alt+v (Windows) x>0 \lor x<5
Et ⌥^ (macOS) · Alt+^ (Windows) x>0 \land x<5
Formule type de dérivée ⌥/ (macOS) · Alt+/ (Windows) \frac{dx}{dt}
Partie entière ⌥_ (macOS) · Alt+_ (Windows) \lfloor x \rfloor
Partie entière supérieure ⌘_ (macOS uniquement) \lceil x \rceil
Fraction ⌘/ (macOS) · Ctrl+/ (Windows) \frac{a}{b}
Point de multiplication * a \cdot b
Nouvelle ligne (nouvelle instruction) Enter —
Sortir / emplacement suivant Tab —

Sélecteur de raccourcis

Forme Expression sélectionnée, avec sa barre d'outils visible

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.

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

Panneau des propriétés de la forme Expression

Quand une forme Expression est sélectionnée, le panneau des propriétés affiche :

PropriétéDescription
Variable indépendanteLa variable d'itération (par défaut : t)
PasL'incrément à chaque itération (Δt)
Début / FinL'intervalle de la variable indépendante
Valeurs initialesLes valeurs de départ des équations différentielles et des récurrences
ScénariosPlusieurs 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}