Divide
MathEl 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).
Modelo Matemático
El bloque Divide implementa:
Donde:
y(t)es la señal de salida en el instante tnum(t)es la señal del numeradorden(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:
- Asigna a la salida el valor de seguridad configurable
divByZeroValue(por defecto0.0). - Muestra un aviso visual emergente en la interfaz de usuario.
- 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::EPSILONpara 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
numse divide entre el puerto inferiorden.
Bloques Relacionados
- Product: Multiplicación de dos señales
- Gain: División por una constante fija (con Gain = )
- NumericDisplay: Supervisión del resultado numérico
- Saturation: Limitación de valores extremos