Sie befinden sich hier: SIGMA 15 » Simulation » Benutzerdefinierte Funktionen

Benutzerdefinierte Funktionen

Benutzerdefinierte Funktionen

Für die Definition benutzerdefinierter Funktionen wurde eine eigene, minimale (Programmier-)Sprache entwickelt. In dieser Sprache können beliebig komplexe, mathematische Ausdrücke formuliert werden. Außerdem bietet sie die Möglichkeit der bedingten Ausführung anhand logischer Ausdrücke. Im Folgenden wird näher auf die Eigenschaften dieser Sprache eingegangen.

Bearbeiten benutzerdefinierter Funktionen

Steuerpfad: Hauptmenu: Simulation > Benutzerdefinierte Funktionen…



Es können benutzerdefinierte Funktionen zur Bearbeitung ausgewählt werden. Die Bearbeitung der jeweiligen Funktion ermöglicht das in der Abbildung dargestellten Dialogfenster Benutzerdefinierte Funktionen verwalten.

Der obere Teil dient zur Festlegung des Namens und der Einheit eines Funktionswertes dieser Funktion. Ist der Name einmal bestimmt, so kann er nicht mehr geändert werden.

Der mittlere Teil umfasst ein großes Textfeld, in dem die Funktion als solche definiert werden kann. Der Text in diesem Feld wird farbig dargestellt, wobei verschiedenen Aspekten der Funktion verschiedene Farben zugeordnet werden (Syntaxhervorhebung). Schlüsselwörter werden beispielsweise blau dargestellt.

Im unteren Teil können vordefinierte Variablen, die z. B. Berechnungsergebnisse oder einfache Geometriedaten enthalten, oder mathematische Funktionen an der Stelle des Cursors in das Textfeld eingefügt werden. Da es 144 solcher vordefinierten Variablen gibt, stellt dies eine enorme Vereinfachung dar.

Im linken Teil des Dialoges können die benutzerdefinierten Funktionen verwaltet (erstellen, löschen) werden.

Beim Drücken auf Ok wird geprüft, ob die definierte Funktion ausgewertet werden kann. Sind syntaktische Fehler in der Funktion enthalten, so werden diese ausgegeben und die Fehlerstelle im Textfeld farblich markiert.

Mathematische Ausdrücke

Mathematische Ausdrücke repräsentieren einen (noch zu bestimmenden) Wert. In einem solchen Ausdruck können Variablen, mathematische Operatoren, vordefinierte Funktionen und Klammern beliebig verwendet werden. Die folgende Auflistung führt auf, welche Elemente in einem mathematischen Ausdruck verwendet werden kann, damit dieser den Anforderungen der benutzerdefinierten Funktionen genügt:

  • Binäre Operatoren: In mathematischen Ausdrücken können fünf Operatoren für die Grundrechenarten Potenzieren (^), Multiplizieren (*), Dividieren (/), Addieren (+) und Subtrahieren (-) verwendet werden.
  • Unäre Operatoren: Es ist nur das unäre Minus(-) als Operator definiert.
  • Klammern: Mathematische Ausdrücke können beliebig geklammert werden.
  • Variablen: In einem mathematischen Ausdruck können Variablen benutzt werden. Es gibt 144 vordefinierte Variablen und der Nutzer kann beliebige weitere Variablen anlegen und in einer Funktion benutzen.
  • Vordefinierte Funktionen: Es können 13 grundlegende mathematische Funktionen wie die Sinus- oder Logarithmus-Funktion benutzt werden.
  • Benutzerdefinierte Funktionen: Bereits definierte benutzerdefinierte Funktionen können ebenfalls verwendet werden.

Des Weiteren gibt es einige Rechenregeln, die dem Benutzer bekannt sein sollten, wenn er benutzerdefinierte Funktionen definieren möchte:

Präzedenz von Operatoren und Klammerung

  • Die Rechenzeichen * und / binden stärker als + und -.
  • Potenzen werden vorrangig ausgerechnet.
  • Vordefinierte Funktionen binden stärker als der Potenzoperator.
  • Inhalte, der in Klammern steht, wird zuerst ausgerechnet.

Assoziativität

Alle definierten binären Operatoren sind links-assoziativ. Das heißt, falls in einem Term mehrere Operatoren gleicher Präzedenz hintereinander stehen, so wird der Term von links nach rechts ausgewertet.

Beispiele

$a^3+b^2+0.815$ Gültiger Ausdruck
$42+(-7)$ Gültiger Ausdruck (unäres Minus)
$\frac{a}{b}/3$ Gültiger Ausdruck, er wird als $\frac{a/b}{3}$ ausgewertet!
$\sin(2) \cdot 3.1415$ Gültiger Ausdruck, er entspricht $(\sin 2) \cdot 3.1415$
$\sin(2 \cdot 3.1415)$ Gültiger Ausdruck
$x^{1/2}$ oder $\sqrt{x}$ Gültiger Ausdruck, Quadratwurzel von x

Logische Ausdrücke

Logische Ausdrücke repräsentieren einen Wahrheitswert. In einem solchen Ausdruck können Vergleichsoperatoren sowie logische Operatoren verwendet werden. Die sechs binären Vergleichsoperatoren Kleiner (<), Kleiner-oder-gleich ( < = ), Gleich ( == ), Größer-oder-gleich ( >= ), Größer (>) und Ungleich ( != ) vergleichen jeweils zwei mathematische Ausdrücke miteinander. Ihre Rückgabewerte sind Wahrheitswerte und können mit den zwei logischen Operatoren and und or weiter verknüpft werden. Dabei gilt, dass and stärker bindet als or. Logische Ausdrücke können nicht geklammert werden. Der Einsatz von logischen Ausdrücken ist auf bedingte Anweisungen beschränkt, die im nächsten Abschnitt näher erläutert werden.

Beispiele

$a < 0$ Gültiger Ausdruck, wahr, wenn $a$ negativ ist
$0.5 < a \land a \leq 1$ Gültiger Ausdruck, wahr, wenn $a \in (0.5, 1]$ ist
$a \lor b$ Kein gültiger Ausdruck, Wahrheitswerte können nicht in Variablen gespeichert werden
$|0-a| < \varepsilon$ Gültiger Ausdruck, linke und rechte Seite sind jeweils mathematische Ausdrücke

Anweisungen

Die oben beschriebenen Ausdrücke können nicht für sich stehen, sondern können immer nur in Verbindung mit Anweisungen genutzt werden. Für die benutzerdefinierten Funktionen werden dabei vier Anweisungen unterschieden. Jede Anweisung beginnt in einer neuen Zeile und muss am Ende einer Zeile abgeschlossen sein.

Zuweisungen

Eine Zuweisung bindet den Wert eines mathematischen Ausdrucks an eine Variable. Dabei steht auf der linken Seite des Zuweisungszeichens ( = ) der Variablenname und auf der rechten Seite ein gültiger mathematischer Ausdruck. Die Syntax ist wie folgt:

<Bezeichner> = <Mathematischer Ausdruck>

Durch Verwenden einer Zuweisungsanweisung wird die entsprechende Variable, sofern noch nicht bekannt, angelegt und mit dem Wert des Ausdrucks belegt. Existiert bereits eine Variable mit diesem Namen, so wird der alte Wert überschrieben. So angelegte Variablen können anschließend wieder in mathematischen Ausdrücken verwendet werden. Variablennamen müssen immer mit einem Buchstaben beginnen, dürfen aber Ziffern enthalten. Der Wert von logischen Ausdrücken kann nicht an Variablen gebunden werden!

Nachfolgend sind einige Beispiele für Zuweisungen aufgeführt.

$\pi = 3.1415$ Gültige Zuweisung
$ab2 = a^2 + 2ab + b^2$ Gültige Zuweisung
$soNicht = (a < 0)$ Keine gültige Zuweisung, Wahrheitswerte können nicht an Variablen gebunden werden
$a = b = 0.0$ Ungültig, nur eine Zuweisung erlaubt
$2Pi = 2 + \pi$ Ungültig, „2Pi“ ist kein gültiger Variablenname

Return

Eine return-Anweisung legt den Funktionswert der benutzerdefinierten Funktion fest und beendet die weitere Auswertung der Funktion. Der Wert des hinter dem Schlüsselwort (return) stehenden mathematischen Ausdrucks ist dabei der Funktionswert. Dabei gilt folgende Syntax:

return <Mathematischer Ausdruck>

Bedingte Ausführung

Eine if-then-else Anweisung führt eine Anweisung abhängig von einer gegebenen Bedingung aus. Diese Bedingung wird durch einen logischen Ausdruck definiert. Ist der Ausdruck wahr, so wird die auf das then-Schlüsselwort folgende Anweisung ausgeführt, andernfalls die auf das else-Schlüsselwort folgende Anweisung. Der else-Fall ist optional.

if <Logischer Ausdruck> then <Anweisung> [else <Anweisung>]

Als einfachstes Beispiel kann man die Bestimmung des Maximums zweier Werte betrachten:

if a < b        # Wenn a kleiner als b ist
then           # Dann
  max= b       # Ist b das Maximum
else           # Sonst
  max= a       # Ist a das Maximum

Gruppierung

Die Schlüsselwörter begin und end klammern eine Folge von Anweisungen so, dass die zwischen begin und end aufgeführten Anweisungen als eine Anweisung behandelt werden können. Auf diese Weise können auch mehrere Anweisungen zusammen bedingt ausgeführt werden.

begin
  <Anweisung 1>
  ...
  <Anweisung n>
end

Weitere Hinweise für den Gebrauch benutzerdefinierter Funktionen

Die Bedeutung von Zeilen

In den benutzerdefinierten Funktionen bildet eine Zeile jeweils eine der oben beschriebenen Anweisungen. Da es kein spezielles Endkennzeichen (wie „;“) für eine Anweisung gibt, wird eine Anweisung durch ein Zeilenende beendet. Ausnahmen sind bedingte Anweisungen, die sich über mehrere Zeilen erstrecken. In einer Anweisung verwendete mathematische und logische Ausdrücke können sich demnach ebenfalls nicht über mehrere Zeilen erstrecken, da sie ein Bestandteil der Anweisung sind.

Variablen

Es gibt nur Variablen für mathematische Ausdrücke. Eine Variable speichert also immer den Wert eines mathematischen Ausdrucks. Eine neue Variable wird durch Benutzen eines bisher unbekannten Bezeichners deklariert. Wird der neue Bezeichner innerhalb eines mathematischen Ausdrucks verwendet, so wird zwar die Variable deklariert, ihr Wert jedoch ungültig.

Vordefinierte Variablen

Eine benutzerdefinierte Funktion wird im Berechnungskern von SIGMA für jede Stützstelle einzeln ausgewertet. Für an der Stützstelle bekannte Daten, wie Geometrie- oder Materialdaten, gibt es vordefinierte Variablen. Deren Werte werden von SIGMA gesetzt und können in den benutzerdefinierten Funktionen verwendet, aber nicht geändert werden. Insgesamt gibt es 144 dieser vordefinierten Variablen, die an geeigneter Stelle in eine benutzerdefinierte Funktion eingefügt werden können.

Operatoren

In der folgenden Tabelle sind alle benutzbaren Operatoren angegeben. Operatoren mit höherer Präzedenz stehen weiter oben.

# Name Zeichen Beschreibung Kategorie
7 Potenz ^ Potenziert den linken Operanden mit dem rechten Operanden mathematisch
6 Negation - Negiert den linken Operanden mathematisch
5 Multiplikation * Multipliziert die beiden Operanden mathematisch
5 Division / Dividiert den linken Operanden durch den rechten Operanden mathematisch
4 Addition + Addiert die beiden Operanden mathematisch
4 Subtraktion - Subtrahiert den rechten Operanden von dem linken Operanden mathematisch
3 Kleiner < Prüft ob der linke Operand kleiner als der rechte Operand ist mathematisch → logisch
3 Kleiner-oder-gleich <= Prüft ob linker Operand kleiner oder gleich dem rechten Operanden ist mathematisch → logisch
3 Gleich == Prüft ob die beiden Operanden gleich sind mathematisch → logisch
3 Größer-oder-gleich >= Prüft ob der linke Operand größer oder gleich dem rechten Operanden ist mathematisch → logisch
3 Größer > Prüft ob linker Operand größer als der rechte Operand ist mathematisch → logisch
3 Ungleich != Prüft ob die beiden Operanden ungleich sind mathematisch → logisch
2 Logisches Und and Verknüpft die beiden Operanden mit der logischen Operation Und logisch
1 Logisches Oder or Verknüpft die beiden Operanden mit der logischen Operation Oder logisch

Mathematische Funktionen

Innerhalb der mathematischen Ausdrücke können 14 vordefinierte mathematische Funktionen verwendet werden, die in der folgenden Tabelle aufgeführt sind. Jede dieser Funktionen besitzt genau einen Parameter, der, als mathematischer Ausdruck, direkt auf den Bezeichner folgt. Funktionen binden stärker als der Potenzoperator.

Name Zeichen Beschreibung
Sinus sin Berechnet den Sinus, Parameter in rad
Cosinus cos Berechnet den Cosinus, Parameter in rad
Tangens tan Berechnet den Tangens, Parameter in rad
Arcus Sinus asin Berechnet den Arcus Sinus in rad
Arcus Cosinus acos Berechnet den Arcus Cosinus in rad
Arcus Tangens atan Berechnet den Arcus Tangens in rad
Sinus Hyperbolicus sinh Berechnet sinh in rad
Cosinus Hyperbolicus cosh Berechnet cosh in rad
Tangens Hyperbolicus tanh Berechnet tanh in rad
Dekadischer Logarithmus log Berechnet den Logarithmus zur Basis 10
Logarithmus Naturalis ln Berechnet den Logarithmus zur Basis $e$
Betrag abs Liefert den Absolutbetrag des Parameters
Quadratwurzel sqrt Berechnet die Quadratwurzel

Auswertung benutzerdefinierter Funktionen

Eine benutzerdefinierte Funktion wird für jeweils eine Stützstelle ausgewertet, eine benutzerdefinierte Funktion liefert also genau einen Funktionswert für jede Stützstelle. Die Gesamtheit dieser Werte kann anschließend in einem benutzerdefinierten Diagramm grafisch dargestellt werden. In der Funktion können, wie oben beschrieben, vordefinierte Variablen benutzt werden, die bestimmte Werte für diese Stützstelle repräsentieren. Die benutzerdefinierten Funktionen werden erst nach den Standardberechnungen ausgeführt und haben keinen Einfluss auf diese.

Ungültige Werte

Da nicht alle vordefinierten Variablen für jede Stützstelle einen gültigen Wert aufweisen und manche mathematischen Operationen nicht für alle Werte definiert sind (z. B. Division durch Null), gibt es einen speziellen Wert, der ungültige Werte repräsentiert. Als vordefinierte Variable heißt dieser Wert invalid. Als besondere Rechenregel gilt, dass alle Operationen mit einem ungültigen Wert als Operand auch einen ungültigen Wert als Resultat liefern. Der Wert invalid kann auch als Rückgabewert der benutzerdefinierten Funktion dienen. In diesem Fall wird für die entsprechende Stützstelle kein Wert angezeigt.

simulation/benutzerdefinierte_funktionen.txt · Zuletzt geändert: 2026/01/10 21:29