Divide
MathLe bloc Divide effectue la division algébrique de deux signaux d'entrée : le numérateur et le dénominateur. Ce bloc intègre un mécanisme de protection contre la division par zéro, permettant aux simulations de rester stables et d'éviter les arrêts inopinés ou les erreurs de type NaN (Not a Number).
Le bloc comporte deux ports d'entrée distincts : le port supérieur pour le numérateur (num) et le port inférieur pour le dénominateur (den).
Modèle Mathématique
Le bloc Divide implémente :
Où :
y(t)est le signal de sortie à l'instant tnum(t)est le signal numérateurden(t)est le signal dénominateur
Protection contre la Division par Zéro
Si la valeur absolue du dénominateur est inférieure à 2.22e-16 (l'epsilon machine), la logique de sécurité intervient :
- La sortie prend la valeur configurable
divByZeroValue(par défaut0.0). - Affiche une notification visuelle d'avertissement dans l'interface utilisateur.
- Consigne un message d'avertissement détaillé dans la console de développement du navigateur.
Entrées & Sorties
| Direction | ID | Label | Type | Status |
|---|---|---|---|---|
| → In | num |
Num | number | Required |
| → In | den |
Den | number | Required |
| ← Out | out |
Result | number | Output |
Paramètres
| Paramètres | Label | Type | Défaut | Description |
|---|---|---|---|---|
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 |
Exemples d'Utilisation
Normalisation de Signal
Ramener une mesure dans la plage standard de 0 à 1 :
Mesure → Divide (num)
ValeurMax → Divide (den) → Signal normalisé [0..1]
Calcul de Résistance (Loi d'Ohm : R = U / I)
Déterminer la résistance dynamique à partir de la tension et du courant :
Tension U(t) → Divide (num)
Courant I(t) → Divide (den) → Résistance R(t)
_Astuce : Réglez divByZeroValue sur une valeur très élevée pour représenter la résistance infinie d'un circuit ouvert lorsque le courant est nul._
Remarques & Bonnes Pratiques
- Epsilon Machine : La détection de zéro utilise
f64::EPSILONpour traiter de façon robuste les imprécisions de virgule flottante. - Performance WASM : La protection est compilée nativement en Rust, assurant un débit de calcul maximal sans surcoût d'exécution.
- Ordre des Ports : Attention au raccordement : l'entrée supérieure
numest divisée par l'entrée inférieureden.
Composants Associés
- Product : Pour la multiplication de signaux
- Gain : Pour la division par une constante fixe (Gain = )
- NumericDisplay : Pour surveiller la valeur calculée
- Saturation : Pour borner d'éventuels pics de division