python求矩阵特征值和特征向量_特征值,特征向量,标准正交向量组与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.]]

你可能感兴趣的:(python求矩阵特征值和特征向量_特征值,特征向量,标准正交向量组与numpy)