Descomposición de Cholesky con matrices dinámicas: de VBA a LAMBDA+REDUCE

Juan Pablo lanza un reto al grupo: tiene una descomposición de Cholesky resuelta con VBA y quiere saber si se puede hacer con matrices dinámicas. Miki acepta el desafío y entrega una fórmula nombrada que reemplaza completamente la macro.

La solución usa LAMBDA recursiva con REDUCE, SECUENCIA, INDICE y APILARH para construir la matriz triangular inferior paso a paso. Se define como nombre ("CHOLESKY") en el administrador de nombres:

``
=LAMBDA(Rng;
LET(
n; FILAS(Rng);
REDUCE(0; SECUENCIA(n); LAMBDA(acc; j;
LET(
prev; SI(j = 1; 0; INDICE(acc;; SECUENCIA(; j - 1)));
col; SECUENCIA(n);
vals; SI(col < j; 0;
SI(col = j;
RAIZ(INDICE(Rng; j; j) - SUMAPRODUCTO(prev * prev));
(INDICE(Rng; col; j) -
MMULT(
SI(j = 1; 0; INDICE(acc; col; SECUENCIA(; j - 1)));
TRANSPONER(prev)
)
) / INDICE(acc; j; j)
)
);
APILARH(SI(j = 1; vals; acc); SI(j = 1; 0; vals))
)
))
)
)
`

Para usarla: =CHOLESKY(A1:C3) donde A1:C3 es la matriz simétrica definida positiva.

Un caso que demuestra el poder de REDUCE + LAMBDA` para implementar algoritmos matemáticos complejos que antes requerían VBA obligatoriamente.

Más contenido de Excel en InflueXcel