python — numpy计算矩阵特征值,特征向量

目录

python — numpy计算矩阵特征值,特征向量

一、特征值与特征向量

二、数学演算

三、numpy实现

一、特征值与特征向量

       假设我们有一个n阶的矩阵A以及一个实数λ,使得我们可以找到一个非零向量x,满足:

Ax=λx

如果能够找到的话,就称λ是矩阵A的特征值,非零向量x是矩阵A的特征向量。

将上式变形为 (A-λE)x=0,这是一个齐次线性方程组。由于x 是非零向量,该方程组有非零解的充要条件是系数矩阵的行列式为 0,即:|A - λ E| = 0

二、数学演算

​​​​​​示例:矩阵的特征值和特征向量的解题过程及结果。

单位化方式:

三、linalg 模块介绍

       numpy.linalg 模块提供了一组用于线性代数的基础函数。这些函数涵盖了矩阵分解、矩阵特征值与特征向量、求解线性系统等操作。线性代数是科学计算中一个重要的部分,NumPy通过numpy.linalg模块为用户提供高效且功能齐全的线性代数工具。

常用的 numpy.linalg 函数概述:

  • linalg.inv: 计算矩阵的逆矩阵。
  • linalg.det: 计算矩阵的行列式。
  • linalg.eig: 计算矩阵的特征值与特征向量。
  • linalg.solve: 解决线性方程组。
  • linalg.norm: 计算矩阵或向量的范数。

四、代码讲解

1、计算方阵的特征值与右特征向量,使用 NumPy 的线性代数模块 np.linalg.eig

​
import numpy as np

# 定义目标方阵
x = np.array([
    [1, -3, 3],
    [3, -5, 3],
    [6, -6, 4]
])

# 计算特征值(e)和右特征向量(v)
eigenvalues, eigenvectors = np.linalg.eig(x)

# 打印结果
print("特征值(eigenvalues):")
print(eigenvalues)
print("\n右特征向量(eigenvectors,每一列对应一个特征值的特征向量):")
print(eigenvectors)

​

计算特征值与特征向量:np.linalg.eig(x) 会返回两个结果:

第一个结果 eigenvalues 是特征值数组(按特定顺序排列);
第二个结果 eigenvectors 是右特征向量矩阵(每一列对应一个特征值的单位特征向量)。

2、计算一般矩阵的特征值,使用 Python 的 NumPy 库 np linalg eigvals(x)函数。

import numpy as np

# 定义一个一般矩阵(这里以 3×3 方阵为例,可替换为任意方阵)
x = np.array([
    [1, -3, 3],
    [3, -5, 3],
    [6, -6, 4]
])

# 计算矩阵的特征值
eigenvalues = np.linalg.eigvals(x)

# 打印特征值结果
print("矩阵的特征值为:")
print(eigenvalues)

计算特征值np.linalg.eigvals(matrix) 会直接返回矩阵的所有特征值(包括实数、复数特征值)。

3、计算复埃尔米特矩阵实对称矩阵的特征值和特征向量,可使用 NumPy的 np.linalg.eigh 函数

    
    import numpy as np
    
    # 构造复埃尔米特矩阵(2×2 示例)
    a_hermitian = np.array([
        [3 + 0j, 1 - 2j],
        [1 + 2j, 2 + 0j]
    ], dtype=complex)
    
    # 计算特征值和特征向量
    w_herm, v_herm = np.linalg.eigh(a_hermitian)
    
    # 打印结果
    print("\n=== 复埃尔米特矩阵的特征值 ===")
    print(w_herm)
    print("\n=== 复埃尔米特矩阵的特征向量(列向量为单位特征向量) ===")
    print(v_herm)
    
    # 验证特征关系:A·v ≈ λ·v
    is_valid_herm = np.allclose(np.dot(a_hermitian, v_herm), w_herm * v_herm)
    print("\n验证 A·v ≈ λ·v 的结果:", is_valid_herm)  # 应输出 True
    • np.linalg.eigh(matrix) 返回两个结果:
      • 第一个是特征值数组(按从小到大排序);
      • 第二个是特征向量矩阵(每一列对应一个特征值的单位特征向量)。
    • 验证步骤利用了特征值的定义:若 λ是 A 的特征值,x是对应特征向量,则 Ax=λx
    Logo

    DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

    更多推荐