Я пытаюсь построить собственные значения матрицы как функцию параметра 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](https://i.stack.imgur.com/2UCoy.png)
Как вы можете видеть, что собственные значения, которые являются самыми большими, являются самыми большими по всему диапазону 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](https://i.stack.imgur.com/gOlBB.png)
Вы можете видеть, что линия вокруг значения 15 имеет два разных цвета, если вы аналитически решаете собственные значения,одно из собственных значений остается постоянным как функция x вокруг y = 15, которая должна давать прямую линию, а другие дают синюю v-линию и оранжевую форму ^ line.Но когда вы делаете это численно, функция linalg возвращает собственные значения в порядке возрастания, и именно поэтому вы получаете странно выглядящие оранжевые и зеленые функции.Кто-нибудь знает, как это исправить, и признает, что прямая линия должна принадлежать одному собственному значению, а линия в форме ^ должна принадлежать другому собственному значению?