entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Problema calculando determinante en Python

Hola, estoy intentando calcular el determinante de una matriz esta [[7,4,-1],[-3,12,5],[6,-8,-22]], debo calcular los eigen valores de
T = inversa(D)(L+U) y D = [[7,0,0],[0,12,0],[0,0,-22]], L = [[0,0,0],[3,0,0],[-6,8,0]] y U = [[0,-4,1],[0,0,-5],[0,0,0]],(L y U los cambie de signo). Haciendo inversa(D)(L+U) me da [[0,-4/7,1/7],[1/4,0,-5/12],[3/11,-4/11,0]] si le saco los valores me da -1 y 1

Estoy utilizando numpy y scipy para comprobar si lo estoy haciendo bien, pero haciendolo de esta manera no me funciona me da como resultado una matriz de ceros

import numpy as np
from scipy import linalg

D = np.array([[7,0,0],[0,12,0],[0,0,-22]])
L = np.array([[0,0,0],[3,0,0],[-6,8,0]])
U = np.array([[0,-4,1],[0,0,-5],[0,0,0]])
A = linalg.inv(D)*(L+U)
la, v = linalg.eig(A)
l1,l2,l3 = la
print(l1, l2, l3)

pero si lo hago de esta manera si me da como resultado -1 y 1

import numpy as np
from scipy import linalg

A = np.array([[0,-4/7,1/7],[1/4,0,-5/12],[3/11,-4/11,0]])
la, v = linalg.eig(A)
l1,l2,l3 = la
print(l1, l2, l3)

Alguien sabe por que la primera forma no me funciona.
Gracias

1 Respuesta

1voto

carlossevi Puntos63580

Tienes un error en la sintáxis del operador para multiplicar matrices. En esta lección he encontrado lo siguiente: Warning, array multiplication is not matrix multiplication.

c * c  # NOT matrix multiplication!

El operador correcto se utiliza mediante el método dot() (ejemplo: c.dot(c)).
En tu código:

# A = linalg.inv(D)*(L+U)
A = linalg.inv(D).dot(L+U)

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta