我正在尝试将矩阵的特征值绘制为参数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()
如您所见,最大的特征值在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()
您会看到值15周围的线有两种不同的颜色, 如果您解析地求解特征值,则其中一个特征值将随x的变化而保持不变,y = 15附近应给出一条直线,而其他特征值将给出蓝色的v线和橙色的^线。但是,当您进行数字化处理时,linalg函数会以升序返回特征值,这就是为什么您会得到这个看起来很奇怪的橙色和绿色函数的原因。有谁知道如何解决这个问题,并认识到直线应属于一个特征值,而^形线应属于另一特征值?