numpy求矩阵的特征值与特征向量(np.linalg.eig函数用法)

  • Post category:Python

Numpy求矩阵的特征值与特征向量

在线性代数中,矩阵的特征值和特征向量是非常重要的概念。Numpy提供了np.linalg.eig()函数来计算矩阵的特征值和特征向量。本攻略将详细介绍Numpy求矩阵的特征值与特征向量的方法和示例。

np.linalg.eig()函数的用法

np.linalg.eig()函数用于计算矩阵的特征值和特征向量。该函数的语法如下:

numpy.linalg.eig(a)

其中,a是一个二维数组,表示要计算特征值和特征向量的矩阵。该函数返回一个元组(w, v),其中w是一个一维数组,表示矩阵的特征值,v是一个二维数组,表示矩阵的特征向量。

示例一:求解矩阵的特征值和特征向量

下面是一个求解矩阵的特征值和特征向量的示例:

import numpy as np

# 创建一个二维数组
a = np.array([[1, 2], [2, 1]])

# 计算矩阵的特征值和特征向量
w, v = np.linalg.eig(a)

# 打印结果
print("特征值:", w)
print("特征向量:", v)

在上面的示例中,我们首先导入了Numpy模块,然后使用np.array()函数创建了一个二维数组a。接着,使用np.linalg.eig()函数计算了矩阵a的特征值和特征向量,并将结果保存在变量wv中。最后,使用print()函数打印出了结果。

输出结果为:

特征值: [ 3. -1.]
特征向量: [[ 0.70710678 -0.70710678]
 [ 0.70710678  0.70710678]]

示例二:使用特征值和特征向量对矩阵进行对角化

下面是一个使用特征值和特征向量对矩阵进行对角化的示例:

import numpy as np

# 创建一个二维数组
a = np.array([[1, 2], [2, 1]])

# 计算矩阵的特征值和特征向量
w, v = np.linalg.eig(a)

# 对矩阵进行对角化
d = np.diag(w)
v_inv = np.linalg.inv(v)
a_diag = np.dot(np.dot(v, d), v_inv)

# 打印结果
print("原矩阵:", a)
print("对角化后的矩阵:", a_diag)

在上面的示例中,我们首先导入了Numpy模块,然后使用np.array()函数创建了一个二维数组a。接着,使用np.linalg.eig()函数计算了矩阵a的特征值和特征向量,并将结果保存在变量wv中。然后,使用特征值和特征向量对矩阵进行对角化,并将结果保存在变量a_diag中。最后,使用print()函数打印出了结果。

输出结果为:

原矩阵: [[1 2]
 [2 1]]
对角化后的矩阵: [[ 3. -0.]
 [-0. -1.]]

结语

本攻略详细介绍了Numpy求矩阵的特征值与特征向量的方法和示例。掌握这些知识可以帮助我们更好地理解和应用线性代数中的概念。