BlockWerk Documentación
÷

Divide

Math

El bloque Divide realiza la división algebraica de dos señales de entrada: el numerador y el denominador. Incorpora protección integrada contra la división por cero, lo que garantiza la estabilidad numérica de la simulación frente a singularidades matemáticas, evitando bloqueos o errores de tipo NaN (Not a Number).

El bloque dispone de dos puertos de entrada diferenciados: el terminal superior para el numerador (num) y el inferior para el denominador (den).

Simular en BlockWerk

Simulador interactivo en tu navegador — sin instalación, motor WebAssembly.

Simular en BlockWerk →

Modelo Matemático

El bloque Divide implementa:

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

Donde:

  • y(t) es la señal de salida en el instante t
  • num(t) es la señal del numerador
  • den(t) es la señal del denominador

Protección contra División por Cero

Si el valor absoluto del denominador resulta menor que 2.22e-16 (épsilon de máquina), se activa la lógica de protección:

  1. Asigna a la salida el valor de seguridad configurable divByZeroValue (por defecto 0.0).
  2. Muestra un aviso visual emergente en la interfaz de usuario.
  3. Registra una advertencia detallada en la consola de depuración del navegador.

Entradas y Salidas

Direction ID Label Tipo Status
→ In num Num number Required
→ In den Den number Required
← Out out Result number Output

Parámetros

Parámetros Label Tipo Por defecto Descripción
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

Ejemplos de Uso

Normalización de Señal

Escalar una medición a un rango normalizado de 0 a 1:

Medición → Divide (num)
ValorMáximo → Divide (den) → Señal normalizada [0..1]

Cálculo de Resistencia Eléctrica (Ley de Ohm: R = U / I)

Cálculo de la resistencia dinámica a partir de tensión e intensidad:

Tensión U(t) → Divide (num)
Corriente I(t) → Divide (den) → Resistencia R(t)

_Consejo: Configure divByZeroValue en un valor sumamente elevado para representar la resistencia infinita de un circuito abierto cuando la corriente es nula._

Observaciones y Buenas Prácticas

  • Épsilon de Máquina: La verificación de cero se basa en f64::EPSILON para solventar imprecisiones de coma flotante.
  • Rendimiento WASM: La protección se ejecuta nativamente en Rust, garantizando alta velocidad sin penalización durante el cálculo habitual.
  • Asignación de Puertos: Recuerde que el puerto superior num se divide entre el puerto inferior den.

Bloques Relacionados

  • Product: Multiplicación de dos señales
  • Gain: División por una constante fija (con Gain = 1/K1/K)
  • NumericDisplay: Supervisión del resultado numérico
  • Saturation: Limitación de valores extremos