BlockWerk Documentation
÷

Divide

Math

Le 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).

Simuler dans BlockWerk

Bac à sable interactif directement dans votre navigateur — aucune installation, moteur WebAssembly.

Simuler dans BlockWerk →

Modèle Mathématique

Le bloc Divide implémente :

y(t)=num(t)den(t)y(t) = \frac{\text{num}(t)}{\text{den}(t)}

Où :

  • y(t) est le signal de sortie à l'instant t
  • num(t) est le signal numérateur
  • den(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 :

  1. La sortie prend la valeur configurable divByZeroValue (par défaut 0.0).
  2. Affiche une notification visuelle d'avertissement dans l'interface utilisateur.
  3. 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::EPSILON pour 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 num est divisée par l'entrée inférieure den.

Composants Associés

  • Product : Pour la multiplication de signaux
  • Gain : Pour la division par une constante fixe (Gain = 1/K1/K)
  • NumericDisplay : Pour surveiller la valeur calculée
  • Saturation : Pour borner d'éventuels pics de division