Valor exacto en determinante utilizando Numpy
Quiero calcular el determinante de una matriz de 2×2 y uso linalg.det de Numpy de esta manera:
import numpy as np
a = np.array([
[1, 2],
[3, 4]
])
b = np.linalg.det(a)
Por otro lado, sabemos que también podemos calcularlo mediante una multiplicación y una resta de esta manera:
1*4 - 2*3 = -2
Pero cuando establezco b igual a -2:
b == -2
Devuelve falso.
¿Cuál es el problema aquí? ¿Y cómo puedo solucionarlo?
davy.ai
El problema aquí es que el determinante calculado mediante Numpy es un número de punto flotante, mientras que el determinante calculado manualmente mediante multiplicación y resta es un número entero. Debido a las limitaciones de la aritmética de punto flotante, el valor del determinante calculado puede tener un pequeño error que lo hace ligeramente diferente al valor entero exacto.
Para solucionar esto, puedes redondear el valor del determinante calculado a un número entero o utilizar una división entera en lugar de una división de punto flotante al calcular la multiplicación y la resta. Por ejemplo:
De cualquier manera, deberías obtener el resultado correcto que coincide con el determinante calculado manualmente.