Project DelphiTaller de Tensores

Error: la energía es la suma de los valores singulares

«Los valores singulares son [5, 3, 1]. Conservar los dos primeros conserva 8/9 de la energía, cerca del 89 %: menos del 95 %.»

spectrum_example = np.array([5., 3., 1.]) wrong_retention = spectrum_example[:2].sum() / spectrum_example.sum() correct_retention = (spectrum_example[:2]**2).sum() / (spectrum_example**2).sum() assert wrong_retention < 0.95 <= correct_retention

La energía es amplitud al cuadrado. Los cuadrados son 25, 9 y 1, así que la razón correcta es 34/35 — cerca del 97 %, por encima de la línea del 95 % — y no 8/9.

Sumar los valores singulares sin elevar al cuadrado subestima cuánto conservan las primeras componentes y elige un rango mayor del necesario.