Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
simulation:benutzerdefinierte_funktionen [2026/01/10 21:16] neelestsimulation:benutzerdefinierte_funktionen [2026/01/10 21:29] (aktuell) neelest
Zeile 1: Zeile 1:
 ====== Benutzerdefinierte Funktionen ====== ====== Benutzerdefinierte Funktionen ======
- 
-  *[[Simulation:Benutzerdefinierte Funktionen: Benutzerdefinierte Funktion]] 
-  *[[Simulation:Benutzerdefinierte Funktionen: Bearbeiten benutzerdefinierter Funktionen]] 
-  *[[Simulation:Benutzerdefinierte Funktionen:Definition benutzerdefinierter 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. 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.
Zeile 19: Zeile 13:
  
 {{ :simulation:benutzerdefinierte_funktionen:de_sigma150_dlg_simulation_015.png?nolink |}} {{ :simulation:benutzerdefinierte_funktionen:de_sigma150_dlg_simulation_015.png?nolink |}}
-**Abbildung:** Bearbeiten der benutzerdefinierten Funktionen 
  
 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 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.
Zeile 64: Zeile 57:
 ===== Logische Ausdrücke ===== ===== 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.+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 ==== ==== Beispiele ====
Zeile 82: Zeile 75:
 ''<Bezeichner> = <Mathematischer Ausdruck>'' ''<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.+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 | | $\pi = 3.1415$ | Gültige Zuweisung |
Zeile 123: Zeile 118:
 end end
 </code> </code>
 +
 +=====  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.