Ausdruck-Form
Die Ausdruck-Form ist das mathematische Herz jedes Modellus-Modells. Hier legst du die Gleichungen, Parameter, Differentialgleichungen, Rekursionen und Fallunterscheidungen fest, die die Simulation antreiben.
Überblick
Eine Ausdruck-Form enthält eine oder mehrere mathematische Anweisungen, die du in einer LaTeX-ähnlichen Schreibweise in einem MathLive-Formelfeld eingibst. Jede Anweisung steht in einer eigenen Zeile. Alle Ausdruck-Formen eines Modells teilen sich ein gemeinsames Rechensystem – die Namen der Größen müssen also über alle Formen hinweg eindeutig sein.
Einen Ausdruck lesen
Enthält eine Form zwei oder mehr Gleichungen, werden sie als ein Block mit einer gemeinsamen Spalte für das Gleichheitszeichen gezeigt: Die linken Seiten stehen rechtsbündig vor dem Gleichheitszeichen, die rechten Seiten linksbündig dahinter, und der Block steht mittig auf der Karte. Ausgerichtet wird nur das Hauptgleichheitszeichen jeder Zeile – ein Gleichheitszeichen in einer Bedingung, einem Bruch oder in Klammern bleibt, wo es ist. Eine Form mit nur einer Gleichung sieht aus wie bisher. Die Ausrichtung betrifft nur die Darstellung: Das Modell speichert weiterhin eine einfache Zeile pro Gleichung.
Jeder Teil eines Ausdrucks ist nach seiner Bedeutung eingefärbt:
- Variablen – Dunkelblau
- Zahlen – Orange
- Operatoren, Relationszeichen und Klammern – neutrales Grau
- Funktionen wie
sin,lnodersqrt– Grün - Ableitungen – das
dindx/dt, partielle Ableitungszeichen, Striche und Punktableitungen – Magenta - Beschreibende Indizes wie das
cinK_c– Hellblau - Iterationsindizes wie das
ninx_n– Lila - Die Größen, mit denen das Modell fortschreitet – die unabhängige Größe
tund die Iterationsvariablen, wo immer sie allein stehen – Lila, die Farbe, die sie als Index ohnehin schon tragen - Zeilen, die das Modell nicht lesen kann – Rot und dort markiert, wo sie stehen (siehe unten)
Kann das Modell eine Zeile nicht lesen, steht das direkt auf der Karte und versteckt sich nicht hinter einem Tooltip. Die Zeile ist rot geschrieben und von einem Band durchzogen, die Karte bekommt einen roten Rahmen, damit du sie auch von der anderen Seite der Tafel aus erkennst, und ein Feld am unteren Rand der Karte erklärt den Grund, in der Sprache, in der auch der übrige Editor geschrieben ist. Fehlt in der Zeile etwas – ein Wert, eine Klammer –, wird an der richtigen Stelle ein gepunkteter Platzhalter in die Zeile gezeichnet, so wie ein noch leeres Feld einer Formelvorlage; liegt das fehlende Stück in einem Bruch oder einer Wurzel, wird stattdessen dieser Bruch oder diese Wurzel unterstrichen, weil sich die Stelle nicht genauer benennen lässt als durch das Zeichen, das sie umschließt. Ein Zeichen, das dort nicht stehen kann, wo es geschrieben wurde, wird an seiner Stelle unterstrichen. Das Feld öffnet sich, sobald du dich der Karte zuwendest – mit dem Mauszeiger darüber, wenn die Karte ausgewählt ist oder der Cursor darin steht – und enthält nur die Hinweise, ohne Überschrift und ohne vorangestellten Zeilennamen: Zeigst du auf einen Hinweis, leuchtet die zugehörige Zeile auf, und ein Klick darauf setzt den Cursor dorthin. Zeilen werden schon beim Schreiben geprüft und nicht erst, wenn du die Karte verlässt – außer der Zeile, in der gerade der Cursor steht: Solange du an einer Zeile schreibst, ist sie halb fertig, also bleibt sie in Ruhe, bis du sie verlässt.
Die Farben stehen für eine Farbfamilie, nicht für einen festen Farbton. Jede wird aus den Design-Tokens --math-* gelesen und dann an die Karte angepasst, auf der sie steht: Der Farbton bleibt, die Helligkeit verschiebt sich, bis sich der Text klar vom Hintergrund abhebt, und gleichzeitig wird die Farbe kräftiger. Eine weiße Karte bekommt tiefe, satte Farben, eine schwarze oder dunkelgraue Karte helle; änderst du die Farbe der Karte, wird der Ausdruck sofort neu eingefärbt. Jede Farbe hält mindestens den Kontrast ein, den die Richtlinien zur Barrierefreiheit verlangen, und die Operatoren bleiben eine Stufe zurückhaltender als die Variablen. Cursor und Auswahlmarkierung folgen derselben Regel, ebenso die Textfarbe der Karte, mit der Klammern, Bruchstriche und Wurzelzeichen gezeichnet werden: Sie bleibt genau so, wie du sie gewählt hast, und wird nur aufgehellt, wenn die Karte sie sonst verschlucken würde. Nichts davon gelangt ins Modell: Ein gespeicherter oder herauskopierter Ausdruck trägt nie eine Farbe.
Werkzeugleiste
Die Werkzeugleiste erscheint, wenn du eine Ausdruck-Form auswählst. Sie bietet:
- Farbauswahl – Ändert die Akzentfarbe der Form
- Vorlagenauswahl – Fügt häufige mathematische Vorlagen schnell ein
- Löschen – Entfernt die Form von der Tafel
Arten von Anweisungen
Jede Zeile einer Ausdruck-Form wird als eine dieser Arten von Anweisungen gelesen:
| Art | Syntax | Beispiel | Beschreibung |
|---|---|---|---|
| Parameter | name = value |
g = 9.8 |
Ein konstanter Wert. Hängt weder von anderen Größen noch von der unabhängigen Variablen ab. |
| Funktion | name = expression |
E = ½·m·v² |
Ein berechneter Wert, der von anderen Größen oder der unabhängigen Variablen abhängt. |
| Differentialgleichung | dx/dt = expression |
dx/dt = v |
Gewöhnliche Differentialgleichung erster Ordnung. Braucht einen Anfangswert in den Eigenschaften der Form. |
| Rekursion | x_{n} = expression |
x_{n} = x_{n-1} + v·Δt |
Schrittweise Definition. Der Index legt fest, um wie viele Schritte zurückgegriffen wird. |
| Fallunterscheidung | name = \begin{cases}...\end{cases} |
v = { 0 & t=0 \\ a·t & otherwise } |
Abschnittsweise Definition. Es braucht mindestens zwei Zweige. |
| Funktion mit Argument | f(t) = expression |
h(t) = v₀·t - ½·g·t² |
Schreibweise mit ausdrücklichem Argument (nur Darstellung; verhält sich wie eine Funktion). |
| Anzeige | expression |
F = ma |
Nur eine sichtbare Beschriftung. Wird vom Rechner nicht berechnet. |
Rechenoperatoren
| Operator | LaTeX | Taste | Beschreibung |
|---|---|---|---|
| Addition | + | + | Summe zweier Ausdrücke |
| Subtraktion | - | - | Differenz zweier Ausdrücke |
| Multiplikation | \cdot | * | Ausdrückliche Multiplikation (Malpunkt ·) |
| Implizite Multiplikation | 2x | 2x | Koeffizient, gefolgt von einem Namen oder einer Klammer |
| Division in der Zeile | / | / | Schreibweise a/b in einer Zeile |
| Bruch | \frac{a}{b} | / (an der Stelle des Zählers) | Bruch mit Bruchstrich, sauber gesetzt |
| Potenz | ^{n} | ^ | Potenzieren |
| Fakultät | x! | ! | Nachgestellte Fakultät für nichtnegative ganze Zahlen |
| Quadratwurzel | \sqrt{x} | \sqrt | Quadratwurzel |
| Negation | -x | - | Vorzeichenwechsel |
Hinweis zur Fakultät: Die Fakultät wird nachgestellt geschrieben (n!) und ist für nichtnegative ganze Zahlen gedacht.
Vergleichsoperatoren
Werden in den Zweigen einer Fallunterscheidung (\begin{cases}) verwendet:
| Operator | LaTeX | Bedeutung |
|---|---|---|
| = | = | Gleich |
| > | > | Größer als |
| < | < | Kleiner als |
| ≥ | \ge oder \geq | Größer oder gleich |
| ≤ | \le oder \leq | Kleiner oder gleich |
| ≠ | \neq | Ungleich |
Bedingungen lassen sich verketten (z. B. 0 < x < 1) oder mit \lor (ODER) und \land (UND) verknüpfen. Das Schlüsselwort \text{otherwise} wirkt als Sonst-Zweig.
Eingebaute Funktionen
| Kategorie | Funktion | LaTeX | Argumente |
|---|---|---|---|
| Trigonometrisch | Sinus | \sin\left(x\right) | 1 |
| Kosinus | \cos\left(x\right) | 1 | |
| Tangens | \tan\left(x\right) | 1 | |
| Kotangens | \cot\left(x\right) | 1 | |
| Sekans | \sec\left(x\right) | 1 | |
| Kosekans | \csc\left(x\right) | 1 | |
| Arkusfunktionen | Arkussinus | \arcsin\left(x\right) | 1 |
| Arkuskosinus | \arccos\left(x\right) | 1 | |
| Arkustangens | \arctan\left(x\right) | 1 | |
| Hyperbolisch | Sinus hyperbolicus | \sinh\left(x\right) | 1 |
| Kosinus hyperbolicus | \cosh\left(x\right) | 1 | |
| Tangens hyperbolicus | \tanh\left(x\right) | 1 | |
| Logarithmisch | Natürlicher Logarithmus | \ln\left(x\right) | 1 |
| Zehnerlogarithmus | \log\left(x\right) | 1 | |
| Zwei Argumente | Maximum | \max\left(a, b\right) | 2 |
| Minimum | \min\left(a, b\right) | 2 | |
| Modulo | \mod\left(a, b\right) | 2 | |
| Hilfsfunktionen | Vorzeichen | sign\left(x\right) | 1 – liefert -1, 0 oder 1 |
| Zufallswert | rnd\left(x\right) | 1 – zufällige Kommazahl in [0, x] | |
| Ganzzahliger Zufallswert | irnd\left(x\right) | 1 – zufällige ganze Zahl in [0, x] | |
| Ganzzahliger Teil | int\left(x\right) | 1 – schneidet die Nachkommastellen ab | |
| Runden | round\left(x\right) | 1 – rundet auf die nächste ganze Zahl | |
| Sonstige | Determinante | \det\left(x\right) | 1 |
\left( und \right). Einfache Klammern sind in Funktionsaufrufen nicht gültig. Das Formelfeld fügt sie automatisch ein.
Konstanten
| Name | LaTeX | Wert |
|---|---|---|
| Pi | \pi | 3.14159… |
| Eulersche Zahl | e oder \E | 2.71828… |
g ist keine eingebaute Konstante. Lege sie als Parameter fest: g = 9.8.
Besondere Schreibweisen
Differenz (Δ)
| Syntax | Bedeutung |
|---|---|
\Delta x | x(aktuell) − x(vorher). Für die unabhängige Variable: die Schrittweite. |
\Delta\left(expr\right) | Differenz, angewendet auf einen Teilausdruck. |
Indizes (Verweise auf Schritte)
| Syntax | Bedeutung |
|---|---|
x_{n-1} | Wert von x aus der vorigen Iteration |
x_{n} | Aktuelle Iteration (linke Seite einer Rekursion) |
x_0 | Anfangswert von x (einzelne Ziffer, ohne Klammern) |
x_{0} | Anfangswert (Schreibweise mit Klammern) |
Indizierte Größen (Verweise auf Elemente)
Eine Größe kann für viele Werte auf einmal stehen – etwa für die Oszillatoren einer Welle –, indem sie über einen Elementindex statt über die Zeit definiert wird. Der Index ist an die Zuweisung gebunden und wird deshalb nie zu einer Variablen des Modells:
y\left[i\right] = A\cdot\cos\left(k\cdot i - \omega\cdot t\right)
| Syntax | Bedeutung |
|---|---|
y\left[i\right] = … | Definiert y über Elementindizes; der Ausdruck wird für jedes abgefragte Element einmal ausgewertet |
y\left[3\right] | Element 3 von y |
y\left[i\right] | Element i, wobei i ein beliebiger Ausdruck ist |
s = y + z | Überlagerung: Auch s ist indiziert und wird elementweise addiert |
Das ist ein dritter Indexraum neben den beiden oben: y_3 liest y bei Iteration 3 und y\left(3\right) liest y beim Wert 3 der unabhängigen Variablen, während nur die eckigen Klammern ein Element lesen. Eine indizierte Größe hat keinen einzelnen Wert; sie wird deshalb über ihre Elemente gelesen und nicht als Zahl angezeigt.
Ein Oszilloskop-Objekt liest sie: Trage die indizierten Größen in seine Wellen ein, und jede wird über sein Raster gezeichnet, eine Spur pro Zeile. Zwei so addierte fortschreitende Wellen – eine mit -\omega\cdot t, eine mit +\omega\cdot t – ergeben eine stehende Welle mit festen Knoten. Ein Klavier stellt selbst eine bereit: den Akkord, den es gerade hält, ein Element pro Abtastwert.
Ein Objekt Mechanische Welle arbeitet stattdessen mit einer gewöhnlichen Größe. Trag in seine Zeile Welle eine Größe ein, die das Modell selbst berechnet – y=A\cdot\sin\left(\omega\cdot t\right) –, und die Kette wiederholt, was diese Größe getan hat: Bei jeder Iteration bekommt der erste Oszillator den Wert, den die Größe gerade angenommen hat, und gibt seinen bisherigen an den nächsten weiter. So hält die Kette die letzten Werte des Durchlaufs, die ältesten am fernen Ende, und die Bewegung wandert im Lauf der Simulation an ihr entlang. Sie hält einen Wert pro Oszillator, also bestimmt Abtastwerte auch, wie weit sie zurückreicht. Schreibst du einen Namen, den das Modell nicht definiert, geht das Objekt den umgekehrten Weg: Es berechnet seine Welle aus Amplitude, Frequenz, Ausbreitungsgeschwindigkeit und Phase und übergibt dem Modell unter diesem Namen, was sein Referenzoszillator gerade tut. Der Name wird zu einer Größe des Modells – er steht in jeder Liste der Größen, so wie ein Name, den das Modell zuweist –, also kannst du ihn über der Zeit darstellen, in einer Definition verwenden (z=2\cdot y) und zur Anzeige eines anderen Objekts addieren (s=forward+back). Ein Name, den das Modell definiert, gehört dem Modell – eine Zuweisung, über die Zeit oder über Elementindizes, wird gelesen und nicht überschrieben –, und ein Objekt, das du von der Tafel nimmst, nimmt seine Größe mit.
Einheiten angeben
Hänge an jede Anweisung Einheiten an, die nur angezeigt werden:
v = 10 \quad\textcolor{gray}{\mathrm{m/s}}
Einheiten dienen nur der Darstellung – die Rechenmaschine prüft und rechnet sie nicht um.
Namen mit Punkt (Verweise auf untergeordnete Formen)
Verweise auf Größen von Formen innerhalb eines Bezugssystems: body.x, particle.velocity.
Tastenkürzel
Das MathLive-Formelfeld kennt diese Tastenkürzel für eine schnelle Eingabe:
| Aktion | Tastenkürzel | Ergebnis |
|---|---|---|
| Vorlagenpalette öffnen | ⌘. (macOS) · Ctrl+. (Windows/Linux) | Wähle eine mathematische Vorlage aus der kompakten Palette |
| Potenz (Hochstellung) | ^ | |
| Tiefstellung (Index) | _ | |
| Vorzeichenwechsel | ~ | |
| Fakultät | ! | |
| Quadratwurzel | # | |
| Delta | % | |
| Betrag | | | |
| Ungleich | <> | |
| Größer oder gleich | >= | |
| Kleiner oder gleich | <= | |
| Bedingung (abschnittsweise) | \ | |
| Oder | ⌥v (macOS) · Alt+v (Windows) | |
| Und | ⌥^ (macOS) · Alt+^ (Windows) | |
| Vorlage Differential | ⌥/ (macOS) · Alt+/ (Windows) | |
| Abrunden | ⌥_ (macOS) · Alt+_ (Windows) | |
| Aufrunden | ⌘_ (nur macOS) | |
| Bruch | ⌘/ (macOS) · Ctrl+/ (Windows) | |
| Malpunkt | * | |
| Neue Zeile (neue Anweisung) | Enter | — |
| Hinausspringen / nächster Platzhalter | Tab | — |
Vorlagenauswahl
Drücke beim Bearbeiten ⌘. unter macOS oder Ctrl+. unter Windows/Linux, um die Vorlagenpalette zu öffnen. Du kannst sie auch über die Schaltfläche in der Werkzeugleiste öffnen.
- Differentialgleichungen (dx/dt = ..., Tastenkürzel: ⌥ + / unter macOS, Alt + / unter Windows)
- Rekursionen (x_n = x_{n-1} + ...)
- Abschnittsweise definierte Funktionen
- Vorlage für die Abrundungsfunktion
\lfloor x\rfloor - Vorlage für die Aufrundungsfunktion
\lceil x\rceil - Häufige Formeln der Physik
- Trigonometrische Identitäten
Schreibweise für Integrale
Integrale kannst du in LaTeX-Schreibweise eingeben, etwa \int_{a}^{b} f\left(x\right)\,\mathrm{d}x. Für den ganzzahligen Teil einer Zahl verwende die Hilfsfunktion int\left(x\right).
Eigenschaften
Wenn eine Ausdruck-Form ausgewählt ist, zeigt der Eigenschaftenbereich:
| Eigenschaft | Beschreibung |
|---|---|
| Unabhängige Variable | Die Variable, über die iteriert wird (Standard: t) |
| Schrittweite | Der Zuwachs pro Iteration (Δt) |
| Anfangswert / Endwert | Wertebereich der unabhängigen Variablen |
| Anfangswerte | Startwerte für Differentialgleichungen und Rekursionen |
| Szenarien | Mehrere Sätze von Anfangswerten, um Parameter zu variieren |
Beispiele
Einfache Kinematik
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
Bevölkerungswachstum (Rekursion)
r = 0.05
P_{n} = P_{n-1}·\left(1 + r\right)
Abschnittsweise definierte Geschwindigkeit
v = \begin{cases} 0 & t = 0 \\ a·t & 0 < t < 5 \\ a·5 & \text{otherwise} \end{cases}