Построение собственных значений матрицы как функции параметра матрицы - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь построить собственные значения матрицы как функцию параметра x, как вы можете видеть здесь:

import matplotlib.pyplot as plt
xx = np.linspace(0,100,101)   # consider x values 0, 1, .., 100 
eigenvalues = np.array([np.sort(np.linalg.eigvals([[40,0,4],[5,5-x,4], [4,4,5+x]])) for x in xx])


plt.plot(xx, eigenvalues[:,2],label="largest")
plt.plot(xx, eigenvalues[:,1],label="medium")
plt.plot(xx, eigenvalues[:,0],label="smallest")
plt.legend()
plt.show()

дает enter image description here

Как вы можете видеть, что собственные значения, которые являются самыми большими, являются самыми большими по всему диапазону x и одинаковыми для среднего и наименьшего.

Однако, когда я строю графики собственных значений матрицы, когда эти собственные значения не остаются вэта иерархия:

import matplotlib.pyplot as plt

xx = np.linspace(0,100,101)   # consider x values 0, 1, .., 100
eigenvalues = np.array([np.sort(np.linalg.eigvals([[10,0,4],[0,54-x,4],[0,4,5+x]])) for x in xx]) 


plt.plot(xx, eigenvalues[:,2],label="largest")
plt.plot(xx, eigenvalues[:,1],label="medium")
plt.plot(xx, eigenvalues[:,0],label="smallest")
plt.legend()
plt.show()

enter image description here

Вы можете видеть, что линия вокруг значения 15 имеет два разных цвета, если вы аналитически решаете собственные значения,одно из собственных значений остается постоянным как функция x вокруг y = 15, которая должна давать прямую линию, а другие дают синюю v-линию и оранжевую форму ^ line.Но когда вы делаете это численно, функция linalg возвращает собственные значения в порядке возрастания, и именно поэтому вы получаете странно выглядящие оранжевые и зеленые функции.Кто-нибудь знает, как это исправить, и признает, что прямая линия должна принадлежать одному собственному значению, а линия в форме ^ должна принадлежать другому собственному значению?

...