本文共 1854 字,大约阅读时间需要 6 分钟。
在探索矩阵的线性代数性质时,特征值和特征向量扮演着至关重要的角色。NumPy 为计算特征值和特征向量提供了强大的工具——eig()函数。本节将详细介绍该函数的用法及应用场景。
eig() 函数主要接收矩阵 A 作为输入参数,其目标是计算矩阵的特征值和对应的单位化特征向量。函数的核心步骤如下:
输入参数:唯一的参数为矩阵 A,必须是方阵型。只有方阵矩阵才适合计算特征值和特征向量。
输出结果:函数返回两个 NumPy 序列:
w:特征值数组,大小与矩阵的维度相同。v:特征向量矩阵,同样维度为矩阵的维数。特征值:返回的 w 数组中包含矩阵的所有特征值。请注意,特征值的顺序不一定按照从大到小或从小到大排序。
特征向量:v 矩阵中的每一列对应特征值 w 中的对应项。每列向量经过单位化处理,确保模长为 1。
以下示例将帮助我们理解 eig() 函数的使用方法及结果解读。
import numpy as npa = np.array([[1, -2], [1, 4]])w, v = np.linalg.eig(a)print(w) # 输出:[2. 3.]print(v) # 输出:# [[-0.89442719, 0.70710678],# [ 0.4472136 , -0.70710678]]
其中,矩阵 A 是 2×2 的实对称矩阵,其特征值为 2 和 3。对应的特征向量分别为 [-0.89442719, 0.4472136] 和 [0.70710678, -0.70710678]。值得注意的是,随着特征向量对应的特征值不同,各向量的方向也发生了变化。
考虑复数矩阵的特征值计算,例如矩阵 B:
B = np.array([[1 + 1j, 1], [-1j, 1]])w, v = np.linalg.eig(B)print(w) # 输出:[2. 0.]print(v) # 输出:# [[0.70710678+0.1j, 0.70710678-0.1j],# [0. 0. -0.1j]]
这里,矩阵 B 的两个特征值分别为 2 和 0。由于矩阵 B 是 Hermitian 的,所以其特征向量在复数域中表现出共轭对应关系。
在实际应用中,对称矩阵的对角化是最常见的场景。对于实对称矩阵 A,可以通过 eig() 函数将其对角化,实现如下:
diag, p = np.linalg.eig(A)
这样得到了矩阵的对角化表示:
inv(P) @ A @ P = diag
其中,diag 是对角矩阵,P 是由特征向量构成的正交矩阵。
对于非正交矩阵的情形,eig() 函数还能处理非对称矩阵的特征值计算,这在数值分析中具有重要意义。例如,当矩阵 C 为近对角矩阵时:
C = np.array([[1 + 1e-9, 0], [0, 1 - 1e-9]])w, v = np.linalg.eig(C)print(w) # 输出:[1. 1.]print(v) # 输出:# [[1., 0.], [0., 1.]]
尽管理论上特征值接近 1 和 1,但由于数值精度问题,实际计算结果可能因舍入误差产生微小差异。
eig() 函数的官方文档描述:
w:特征值数组。v:单位化特征向量矩阵。通过本节的学习,我们掌握了如何使用 NumPy 的 eig() 函数来计算矩阵的特征值与特征向量。理解这些基础知识对于深入应用线性代数成果至关重要。在实际工作中,选择合适的特征值计算方法并注意数值精度问题,是避免混淆的关键。继续练习和探索,熟练掌握这些工具将成为您线性代数学习中不可或缺的一部分。
转载地址:http://ocqsz.baihongyu.com/