Factoriza una vez, resuelve muchas
Cholesky cuesta n³/3 una vez; cada resolución posterior son dos sustituciones triangulares a O(n²). Así que m lados derechos cuestan O(n³ + mn²), no O(mn³).
np.linalg.inv(A) @ B es a la vez más lento y menos preciso que factorizar, y nunca es la decisión correcta.
Medido sobre la matriz kernel real de dígitos con 200 lados derechos:
- factorizar una vez con
cho_factor/cho_solve— 1× - inversa explícita — unas 5× más lenta y unas 7× menos precisa en el residuo
- un
np.linalg.solvepor columna — unas 340× más lenta
La opción más rápida es también la más precisa. Eso no pasa a menudo, y vale la pena recordarlo cuando pasa.