A3.4 Rango numérico

A3 · Descomposición en valores singulares

Con aritmética de precisión finita y datos con ruido, el rango «matemático» no existe: una matriz casi nunca tiene valores singulares exactamente nulos. El rango numérico es el número de valores singulares por encima de un umbral, y el umbral hay que justificarlo.

Ver el código
Random.seed!(1)
s_ruido = 0.5
E = s_ruido .* randn(2000, 50)
(medido = opnorm(E), teoria = s_ruido * (sqrt(2000) + sqrt(50)))
(medido = 25.78282090995925, teoria = 25.896213680930636)

Para una matriz de \(2000\times50\) con ruido de desviación \(0{,}5\), el mayor valor singular medido es 25,78 y la regla \(s(\sqrt m+\sqrt n)\) da 25,90.

Laboratorio: aproximación de rango y ruido

Simulación 1. Aproximación de rango \(r\) de una matriz con ruido. La matriz es una «película» de 40 instantes por 12 sensores, que combina tres formas espaciales con tres frecuencias diferentes y se contamina con ruido blanco de desviación \(s\) (semilla fija). Elige el rango \(r\) y el nivel de ruido: se muestran los valores singulares frente al nivel de ruido esperado \(s(\sqrt m+\sqrt n)\), la matriz reconstruida y el error, que se compara con el valor singular \(\sigma_{r+1}\) del teorema de Eckart–Young–Mirsky.

Hipótesis y límites de la simulación 1

  • Datos: la señal limpia tiene rango 3 exacto (tres componentes, cada una el producto de una historia temporal sinusoidal por una forma espacial); el ruido es gaussiano, blanco y de la misma desviación en todos los sensores. En datos reales el ruido puede estar correlacionado y el espectro de \(\sigma_i\) no tiene un salto tan limpio.
  • Resultado a observar: con \(r\) igual al número de componentes de señal, la aproximación está más cerca de la señal limpia que la propia señal ruidosa: eliminar los \(\sigma_i\) de ruido filtra. Con \(r\) demasiado grande se reincorpora ruido; con \(r\) pequeño se pierde señal.
  • Nivel de ruido teórico: la línea naranja es una cota aproximada del mayor valor singular del ruido, no una frontera exacta.
  • Cálculo: SVD de Hestenes (Jacobi unilateral) en JavaScript, válida para matrices pequeñas y contrastada con Julia en las pruebas del proyecto.
  • Qué no se puede concluir: que \(r\) óptimo sea el «número de modos». Aquí vale 3 porque la señal se construyó así; una onda viajera, por ejemplo, necesitaría rango 2 por componente.