Я хочу сделать цветной график разности двух первых собственных значений этой матрицы. Для этого сначала я определил символическую матрицу с двумя параметрами «x» и «y». Тогда я получаю собственные векторы и собственные значения (закороченные) и вычисляю пробел между двумя первыми собственными значениями. Наконец (и я думаю, что вот проблема ...) Я делаю сетку точек X и Y, чтобы оценить ее с помощью функции «energy_gap (x, y)», сохраняющей результат в Z, а затем используя это в порядке делать сюжет, но он не работает ... Любая идея, почему?как сделать график плотности собственных значений символьной матрицы в python
import numpy as np
import numpy
import matplotlib.pyplot as plt
from sympy.utilities.lambdify import lambdify
from sympy import symbols
x = symbols("x")
y = symbols("y")
matrix = [[x+2, x,y],[y**2,x,3],[y+4,2,1]]
simbolic_matrix = lambdify((x,y), matrix,'numpy')
def eigen_system(x,y):
values, vectors = numpy.linalg.eig(np.array(simbolic_matrix(x,y)))
values_short = np.sort(values)
vectors_short = vectors[:,values.argsort()]
return values_short , vectors_short
def energy_gap(x,y):
values , vectors = eigen_system(x,y)
gap = abs(values[1])-abs(values[0])
return gap
def plot_energy_gap():
x = np.arange(1.1, 3.0, 0.1)
y = np.arange(1.1, 3.0, 0.1)
X, Y = np.meshgrid(x, y)
Z = energy_gap(X,Y)
im = plt.imshow(Z, cmap=plt.cm.RdBu,extent=(1.1,3,1.1,3))
plt.colorbar(im)
plt.show()
plot_energy_gap()
О! Благодаря! Теперь работает очень хорошо. – Joe