¿Cómo obtener los eigenvectores numéricos de una matriz simbólica, siempre y cuando se conozcan los rangos de los elementos de la matriz, utilizando Python?
Tengo una matriz simbólica de 2 por 2 M = Matrix([[a, b],[c, d]]) donde se conocen los rangos numéricos de sus elementos {a, b, c, d}. ¿Hay métodos numéricos conocidos en Python que devuelvan los rangos de los valores propios y vectores propios de M?
Soy nuevo en Python, así que intenté usar el método sympy.diagonalize() P, D = M.diagonalize()
pero parece que sólo funciona si los elementos están fijos (no en rangos).
Aquí hay un código de ejemplo:
from sympy import *
a, b, c, d = symbols('a b c d')
M = Matrix([[a, b],[c, d]])
#Rangos de los elementos
a_min = 1
a_max = 4
b_min = 0.5
b_max = 7
c_min = -1
c_max = 1
d_min = -1
d_max = 1
for a in linspace(a_min,a_max,5):
for b in linspace(b_min,b_max,5):
for c in linspace(c_min,c_max,5):
for d in linspace(d_min,d_max,5):
P, D = M.diagonalize()
print(P)
print(D)
¿Existe alguna forma de obtener P y D con rangos numéricos para cada elemento?
Muchas gracias.
Saludos cordiales.
davy.ai
Desafortunadamente, el método sympy.diagonalize() solo funciona para valores fijos de los elementos de la matriz y no puede manejar rangos de valores.
Sin embargo, existen métodos numéricos disponibles en Python que pueden devolver los rangos de autovalores y autovectores para una matriz dada con rangos dados de los elementos. Uno de esos métodos es el método de Aritmética de Intervalos, que se puede implementar utilizando la biblioteca Interval en Python.
Aquí tienes un ejemplo de código que utiliza la biblioteca Interval para obtener los rangos de autovalores y autovectores para una matriz 2×2 con rangos de valores dados:
Ten en cuenta que el código anterior utiliza el método
eigen()
de la biblioteca Interval para calcular los autovalores y autovectores para cada fila de la matriz, y luego devuelve los rangos de estos valores.Espero que esto te ayude a obtener los resultados deseados. Hazme saber si tienes alguna pregunta adicional.