@spiritnotes
2016-02-28T15:56:01.000000Z
字数 1648
阅读 1937
数学
特征值是线性代数中的一个领域。通过数据的一般格式来揭示数据的“真实”结构,即我们说的特征向量和特征值。
矩阵乘法的物理意思是变换
A = np.matrix([[0,0],[1,0],[1,1],[0,1],[0,0]])plt.plot(A[:,0],A[:,1])plt.scatter(A[:,0],A[:,1])
对应于主对角线上的值
B = np.matrix([[0.5,0],[0,3]])C = A*Bplt.plot(A[:,0],A[:,1])plt.scatter(A[:,0],A[:,1],color="red", label='A')plt.plot(C[:,0],C[:,1])plt.scatter(C[:,0],C[:,1],color="gray", label='A*B')plt.legend()
从图中可以看到x轴变为之前的0.5倍,而y轴变成了之前的3倍。
而如果在矩阵B的某一列中除了主对角线外还有其他值,则相当于将所有点的该维度值发生一定变换。
B = np.matrix([[1,0],[1,1]])C = A*Bplt.figure(figsize=(6,6))plt.plot(A[:,0],A[:,1])plt.scatter(A[:,0],A[:,1],color="red", label='A')plt.plot(C[:,0],C[:,1])plt.scatter(C[:,0],C[:,1],color="gray", label='A*B')plt.xlim(-0.5,1.5)plt.ylim(-0.5,1.5)plt.legend()

如果需要实现旋转,则需要准确计算矩阵
alpha = np.pi/6B = np.matrix([[sp.cos(alpha),sp.sin(alpha)],[-sp.sin(alpha),sp.cos(alpha)]])C = A*Bplt.figure(figsize=(6,6))plt.plot(A[:,0],A[:,1])plt.scatter(A[:,0],A[:,1],color="red", label='A')plt.plot(C[:,0],C[:,1])plt.scatter(C[:,0],C[:,1],color="gray", label='A*B')plt.xlim(-0.5,1.5)plt.ylim(-0.5,1.5)plt.legend()

N 维非零向量v是 N×N 的矩阵A的特征向量,当且仅当下式成立
对于矩阵乘以向量,可以看着向量v为原坐标,而矩阵A为变化矩阵,则针对上面的三种变换为
v = np.matrix([[1],[1]])A = np.matrix([[0.5,0],[0,3]])B = np.matrix([[1,0],[1,1]])C = np.matrix([[sp.cos(alpha),-sp.sin(alpha)],[sp.sin(alpha),sp.cos(alpha)]])plt.figure(figsize=(6,6))plt.scatter(v.T[:,0],v.T[:,1],color="red", label='v')plt.scatter((A*v).T[:,0],(A*v).T[:,1],color="green", label='Av')plt.scatter((B*v).T[:,0],(B*v).T[:,1],color="gray", label='Bv')plt.scatter((C*v).T[:,0],(C*v).T[:,1],color="blue", label='Cv')plt.xlim(0,3.5)plt.ylim(0,3.5)plt.legend()
