ruby - punto - error de coma flotante en el cálculo de la matriz de rubí
punto flotante normalizado (1)
Por lo que puedo ver, las matrices de Ruby deben contener números reales, no las partes reales de números complejos. Referencias:
Estoy escribiendo un código que implica encontrar los vectores propios de una matriz dada, y me sorprendió que Ruby produzca algunos resultados irrazonables en casos simples.
Por ejemplo, la siguiente matriz tiene un vector propio asociado con el valor propio 1:
> m = Matrix[[0r, 1/2r, 1/2r, 1/3r],
[0r, 0r, 1/4r, 1/3r],
[0r, 1/4r, 0r, 1/3r],
[1r, 1/4r, 1/4r, 0r]]
Ruby encuentra los valores propios lo suficientemente bien, pero el vector propio explota:
> m.eigen.eigenvalues[2]
=> 1.0000000000000009
m.eigen.eigenvectors[2]
=> Vector[5.957702309312754e+15, 5.957702309312748e+15, 5.957702309312743e+15, 5.957702309312753e+15]
El vector propio debe ser (7, 4, 4, 9).
¿No es esto preocupante? Si Ruby no puede manejar matrices diminutas, ¿cómo podemos confiar en ello? ¿O estoy haciendo algo mal?