Divide
MathDer Divide-Block führt eine algebraische Division zweier Eingangssignale durch: Zähler (Numerator) und Nenner (Denominator). Dieser Block verfügt über einen integrierten Schutz vor Division durch Null, sodass die Simulation auch bei mathematischen Singularitäten stabil und ohne Abstürze oder NaN-Fehler weiterläuft.
Der Block besitzt zwei separate Eingangsports: den oberen Port für den Zähler (num) und den unteren Port für den Nenner (den).
Mathematisches Modell
Der Divide-Block implementiert:
Wobei:
y(t)das Ausgangssignal zum Zeitpunkt t istnum(t)das Zählersignal istden(t)das Nennersignal ist
Schutz vor Division durch Null
Unterschreitet der Betrag des Nenners den Wert 2.22e-16 (Maschinengenauigkeit ), greift die Schutzlogik:
- Der Block gibt den benutzerdefinierten Wert
divByZeroValueaus (Standard:0.0). - Zeigt einen einmaligen visuellen Warnhinweis in der Benutzeroberfläche an.
- Protokolliert die Warnung in der Entwicklerkonsole des Browsers.
Ein- & Ausgänge
| Direction | ID | Label | Typ | Status |
|---|---|---|---|---|
| → In | num |
Num | number | Required |
| → In | den |
Den | number | Required |
| ← Out | out |
Result | number | Output |
Parameter
| Parameter | Label | Typ | Standardwert | Beschreibung |
|---|---|---|---|---|
divByZeroValue |
Zero-Div Value | number | 0 |
Value to return when denominator is zero |
reportWarning |
Report Warning | boolean | true |
Send alert to console on division by zero |
Anwendungsbeispiele
Signalnormalisierung
Skalierung eines Messsignals auf den normierten Bereich von 0 bis 1:
Messwert → Divide (num)
Maximalwert → Divide (den) → Normiertes Signal [0..1]
Widerstandsberechnung (Ohmsches Gesetz: R = U / I)
Berechnung des dynamischen Widerstands aus Spannung und Stromstärke:
Spannung U(t) → Divide (num)
Stromstärke I(t) → Divide (den) → Widerstand R(t)
_Tipp: Setzen Sie divByZeroValue auf einen sehr hohen Wert, um den unendlichen Leerlaufwiderstand bei abzubilden._
Hinweise & Best Practices
- Maschinen-Epsilon: Die Nullprüfung verwendet die Fließkommatoleranz (
f64::EPSILON), um Rundungsunsicherheiten abzufangen. - WASM-Performance: Die Schutzlogik ist nativ in Rust implementiert und verursacht im Normalbetrieb keinen spürbaren Rechenaufwand.
- Port-Reihenfolge: Achten Sie auf die Beschriftung:
num(oben) wird durchden(unten) dividiert.
Verwandte Blöcke
- Product: Multiplikation zweier kontinuierlicher Signale
- Gain: Skalierung um einen konstanten Faktor (Gain = )
- NumericDisplay: Zur Überprüfung der Rechenergebnisse
- Saturation: Begrenzung extrem hoher Amplitudenwerte