特征值,特征向量,标准正交向量组与numpy

使用python的数值计算库numpy来计算矩阵的特征值,特征向量与标准正交向量组

import numpy as np

1.求矩阵的特征值和各特征值所对应的特征向量

x = np.array([[-1,0,1],[1,2,0],[-4,0,3]])
a,b=np.linalg.eig(x) ##特征值赋值给a,对应特征向量赋值给b 
for i in range(len(a)):
    print('特征值',a[i],'对应特征向量为',b[:,i])
特征值 2.0 对应特征向量为 [0. 1. 0.]
特征值 1.0 对应特征向量为 [ 0.40824829 -0.40824829  0.81649658]
特征值 1.0 对应特征向量为 [-0.40824829  0.40824829 -0.81649658]

2.求矩阵的特征值和各特征值所对应的特征向量

x = np.array([[1,-2,2],[-2,-2,4],[2,4,-2]])
a,b=np.linalg.eig(x) ##特征值赋值给a,对应特征向量赋值给b 
for i in range(len(a)):
    print('特征值',a[i],'对应特征向量为',b[:,i])
特征值 2.000000000000001 对应特征向量为 [ 0.94280904 -0.23570226  0.23570226]
特征值 -6.999999999999997 对应特征向量为 [-0.33333333 -0.66666667  0.66666667]
特征值 1.9999999999999993 对应特征向量为 [-0.0232036  0.7126935  0.7010917]

3.由向量组构造一组标准正交向量组

print('循环')
a = np.array([[0,1,0],[0,-1,1],[1,-1,2]])
b = np.zeros(a.shape)
#正交化
for i in range(len(a)):
    b[i] = a[i]
    for j in range(0,i):
        b[i] -= np.dot(a[i],b[j])/np.dot(b[j],b[j])*b[j]
#归一化
for i in range(len(b)):
    b[i] = b[i]/np.sqrt(np.dot(b[i],b[i]))
print(b)
循环
[[0. 1. 0.]
 [0. 0. 1.]
 [1. 0. 0.]]

你可能感兴趣的:(特征值,特征向量,标准正交向量组与numpy)