当前位置: 首页 > news >正文

实对称矩阵的正交相似对角化

在这里插入图片描述

一、知识点分析

实对称矩阵具有以下性质:

  • 实对称矩阵的特征值都是实数
  • 不同特征值对应的特征向量正交
  • 可以找到正交矩阵 QQQ,使得QTAQQ^{\mathrm{T}}AQQTAQ为对角阵(对角线上的元素是 AAA 的特征值)。

解题过程为:

  1. 求矩阵AAA特征值(解特征方程∣λE−A∣=0|\lambda E - A| = 0λEA=0);
  2. 对每个特征值,求对应的特征向量(解齐次线性方程组 (λE−A)x=0(\lambda E - A)\mathbf{x} = \mathbf{0}(λEA)x=0);
  3. 将特征向量正交化、单位化(若同一特征值的特征向量不正交,需用施密特正交化;最后单位化得到单位正交向量组);
  4. 由单位正交向量组构成正交矩阵 QQQ,此时QTAQQ^{\mathrm{T}}AQQTAQ 为对角阵(对角元为特征值)。

二、具体求解过程

步骤1:计算特征值

矩阵 A=[22−225−4−2−45]A = \begin{bmatrix} 2 & 2 & -2 \\ 2 & 5 & -4 \\ -2 & -4 & 5 \end{bmatrix}A=222254245,特征方程∣λE−A∣=0|\lambda E - A| = 0λEA=0

∣λE−A∣=∣λ−2−22−2λ−5424λ−5∣=(λ−1)2(λ−10) \begin{align*} |\lambda E - A| &= \begin{vmatrix} \lambda - 2 & -2 & 2 \\ -2 & \lambda - 5 & 4 \\ 2 & 4 & \lambda - 5 \end{vmatrix} \\ &= (\lambda - 1)^2 (\lambda - 10) \end{align*} λEA=λ2222λ5424λ5=(λ1)2(λ10)

因此,特征值为:λ1=λ2=1\lambda_1 = \lambda_2 = 1λ1=λ2=1(二重特征值),λ3=10\lambda_3 = 10λ3=10(单特征值)

步骤2:求特征向量

  • 对于二重特征值 λ=1\lambda = 1λ=1
    解方程组(E−A)x=0(E - A)\mathbf{x} = \mathbf{0}(EA)x=0,计算 E−AE - AEA
    E−A=[1−2−22−21−54241−5]=[−1−22−2−4424−4] E - A = \begin{bmatrix} 1 - 2 & -2 & 2 \\ -2 & 1 - 5 & 4 \\ 2 & 4 & 1 - 5 \end{bmatrix} = \begin{bmatrix} -1 & -2 & 2 \\ -2 & -4 & 4 \\ 2 & 4 & -4 \end{bmatrix} EA=122221542415=122244244
    行化简(第二行 - 2×第一行,第三行 + 2×第一行):
    [12−2000000] \begin{bmatrix} 1 & 2 & -2 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \end{bmatrix} 100200200
    同解方程:x1=−2x2+2x3x_1 = -2x_2 + 2x_3x1=2x2+2x3x2,x3x_2, x_3x2,x3 为自由变量)

    取自由变量组合:

    • x2=1,x3=0x_2 = 1, x_3 = 0x2=1,x3=0,得 α1=[−210]\mathbf{\alpha}_1 = \begin{bmatrix} -2 \\ 1 \\ 0 \end{bmatrix}α1=210
    • x2=0,x3=1x_2 = 0, x_3 = 1x2=0,x3=1,得α2=[201]\mathbf{\alpha}_2 = \begin{bmatrix} 2 \\ 0 \\ 1 \end{bmatrix}α2=201

    因此,λ=1\lambda = 1λ=1的线性无关特征向量为α1,α2\mathbf{\alpha}_1, \mathbf{\alpha}_2α1,α2

  • 对于单特征值 λ=10\lambda = 10λ=10
    解方程组(10E−A)x=0(10E - A)\mathbf{x} = \mathbf{0}(10EA)x=0,计算 10E−A10E - A10EA
    10E−A=[10−2−22−210−542410−5]=[8−22−254245] 10E - A = \begin{bmatrix} 10 - 2 & -2 & 2 \\ -2 & 10 - 5 & 4 \\ 2 & 4 & 10 - 5 \end{bmatrix} = \begin{bmatrix} 8 & -2 & 2 \\ -2 & 5 & 4 \\ 2 & 4 & 5 \end{bmatrix} 10EA=102222105424105=822254245
    行化简(第一行 ÷ 2,第二行 + 第一行,第三行 - 第一行):
    [4−11099099]→[4−11011000]→[100.5011000] \begin{bmatrix} 4 & -1 & 1 \\ 0 & 9 & 9 \\ 0 & 9 & 9 \end{bmatrix} \to \begin{bmatrix} 4 & -1 & 1 \\ 0 & 1 & 1 \\ 0 & 0 & 0 \end{bmatrix} \to \begin{bmatrix} 1 & 0 & 0.5 \\ 0 & 1 & 1 \\ 0 & 0 & 0 \end{bmatrix} 4001991994001101101000100.510
    同解方程:x1=−0.5x3x_1 = -0.5x_3x1=0.5x3x2=−x3x_2 = -x_3x2=x3x3x_3x3 为自由变量)

    x3=2x_3 = 2x3=2(消去小数),得 α3=[−1−22]\mathbf{\alpha}_3 = \begin{bmatrix} -1 \\ -2 \\ 2 \end{bmatrix}α3=122

步骤3:特征向量的正交化与单位化

实对称矩阵中,不同特征值的特征向量已正交λ=1\lambda=1λ=1 的特征向量与 λ=10\lambda=10λ=10α3\mathbf{\alpha}_3α3正交,可验证:α1⋅α3=(−2)(−1)+1×(−2)+0×2=2−2+0=0\mathbf{\alpha}_1 \cdot \mathbf{\alpha}_3 = (-2)(-1) + 1×(-2) + 0×2 = 2 -2 +0=0α1α3=(2)(1)+1×(2)+0×2=22+0=0),因此仅需对同一特征值的α1,α2\mathbf{\alpha}_1, \mathbf{\alpha}_2α1,α2 施密特正交化。

  • 第一步:施密特正交化(针对 α1,α2\mathbf{\alpha}_1, \mathbf{\alpha}_2α1,α2
    β1=α1=[−210]\mathbf{\beta}_1 = \mathbf{\alpha}_1 = \begin{bmatrix} -2 \\ 1 \\ 0 \end{bmatrix}β1=α1=210
    计算 β2=α2−(α2,β1)(β1,β1)β1\mathbf{\beta}_2 = \mathbf{\alpha}_2 - \frac{(\mathbf{\alpha}_2, \mathbf{\beta}_1)}{(\mathbf{\beta}_1, \mathbf{\beta}_1)} \mathbf{\beta}_1β2=α2(β1,β1)(α2,β1)β1

    • 内积(α2,β1)=2×(−2)+0×1+1×0=−4(\mathbf{\alpha}_2, \mathbf{\beta}_1) = 2×(-2) + 0×1 + 1×0 = -4(α2,β1)=2×(2)+0×1+1×0=4
    • 内积 (β1,β1)=(−2)2+12+02=5(\mathbf{\beta}_1, \mathbf{\beta}_1) = (-2)^2 + 1^2 + 0^2 = 5(β1,β1)=(2)2+12+02=5
    • 代入得:
      β2=[201]−−45[−210]=[2−850+451+0]=[25451] \mathbf{\beta}_2 = \begin{bmatrix} 2 \\ 0 \\ 1 \end{bmatrix} - \frac{-4}{5} \begin{bmatrix} -2 \\ 1 \\ 0 \end{bmatrix} = \begin{bmatrix} 2 - \frac{8}{5} \\ 0 + \frac{4}{5} \\ 1 + 0 \end{bmatrix} = \begin{bmatrix} \frac{2}{5} \\ \frac{4}{5} \\ 1 \end{bmatrix} β2=20154210=2580+541+0=52541
      此时β1,β2\mathbf{\beta}_1, \mathbf{\beta}_2β1,β2正交,且与 α3\mathbf{\alpha}_3α3正交
  • 第二步:单位化(所有正交特征向量)
    单位化公式:q=β∥β∥\mathbf{q} = \frac{\mathbf{\beta}}{\|\mathbf{\beta}\|}q=ββ

    1. β1\mathbf{\beta}_1β1
      ∥β1∥=(−2)2+12+02=5  ⟹  q1=15[−210]=[−255550] \|\mathbf{\beta}_1\| = \sqrt{(-2)^2 + 1^2 + 0^2} = \sqrt{5} \implies \mathbf{q}_1 = \frac{1}{\sqrt{5}} \begin{bmatrix} -2 \\ 1 \\ 0 \end{bmatrix} = \begin{bmatrix} -\frac{2\sqrt{5}}{5} \\ \frac{\sqrt{5}}{5} \\ 0 \end{bmatrix} β1=(2)2+12+02=5q1=51210=525550
    2. β2\mathbf{\beta}_2β2
      ∥β2∥=(25)2+(45)2+12=4+16+2525=4525=355 \|\mathbf{\beta}_2\| = \sqrt{\left( \frac{2}{5} \right)^2 + \left( \frac{4}{5} \right)^2 + 1^2} = \sqrt{\frac{4 + 16 + 25}{25}} = \sqrt{\frac{45}{25}} = \frac{3\sqrt{5}}{5} β2=(52)2+(54)2+12=254+16+25=2545=535
      q2=535[25451]=[2515451553] \mathbf{q}_2 = \frac{5}{3\sqrt{5}} \begin{bmatrix} \frac{2}{5} \\ \frac{4}{5} \\ 1 \end{bmatrix} = \begin{bmatrix} \frac{2\sqrt{5}}{15} \\ \frac{4\sqrt{5}}{15} \\ \frac{\sqrt{5}}{3} \end{bmatrix} q2=35552541=1525154535
    3. α3\mathbf{\alpha}_3α3(已正交,直接单位化):
      ∥α3∥=(−1)2+(−2)2+22=1+4+4=3 \|\mathbf{\alpha}_3\| = \sqrt{(-1)^2 + (-2)^2 + 2^2} = \sqrt{1 + 4 + 4} = 3 α3=(1)2+(2)2+22=1+4+4=3
      q3=13[−1−22]=[−13−2323] \mathbf{q}_3 = \frac{1}{3} \begin{bmatrix} -1 \\ -2 \\ 2 \end{bmatrix} = \begin{bmatrix} -\frac{1}{3} \\ -\frac{2}{3} \\ \frac{2}{3} \end{bmatrix} q3=31122=313232

步骤4:构造正交矩阵 QQQ与对角阵Λ\LambdaΛ

将单位正交特征向量q1,q2,q3\mathbf{q}_1, \mathbf{q}_2, \mathbf{q}_3q1,q2,q3 按列排列,得到正交矩阵 QQQ;对角阵Λ\LambdaΛ 的对角元为特征值(与 QQQ 的列向量一一对应)。

Q=[−2552515−13554515−2305323],Λ=[1000100010] Q = \begin{bmatrix} -\frac{2\sqrt{5}}{5} & \frac{2\sqrt{5}}{15} & -\frac{1}{3} \\ \frac{\sqrt{5}}{5} & \frac{4\sqrt{5}}{15} & -\frac{2}{3} \\ 0 & \frac{\sqrt{5}}{3} & \frac{2}{3} \end{bmatrix}, \quad \Lambda = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 10 \end{bmatrix} Q=5255501525154535313232,Λ=1000100010

验证QTAQ=ΛQ^T A Q = \LambdaQTAQ=Λ(实对称矩阵正交相似对角化的核心结果)

三、手写实现

在这里插入图片描述

四、代码实现

使用 Python 和 NumPy 计算特征值和特征向量,构造 QQQ

# 使用numpy.linalg.eigh 
import numpy as np# 定义矩阵 A
A = np.array([[2, 2, -2],[2, 5, -4],[-2, -4, 5]])# 计算特征值和特征向量
# numpy.linalg.eig 通用函数求解特征值和特征向量
# numpy.linalg.eigh:专门用于厄米特矩阵,返回:特征值(升序)、特征向量(按列排列)
eigenvalues, eigenvectors = np.linalg.eigh(A)
print(f"特征值为:{eigenvalues}")# eigh返回的特征向量已单位化且正交,直接作为 Q
Q = eigenvectors
print(f"Q =\n{Q}")result = Q.T @ A @ Q
print(f"Q^T A Q =\n{result}")tolerance = 1e-10
result_cleaned = np.where(np.abs(result) < tolerance, 0, result)
print(f"控制误差后的 Q^T A Q =\n{result_cleaned}")# 使用numpy.linalg.eig
# import numpy as np
# 
# # 定义矩阵 A
# A = np.array([[2, 2, -2],
#               [2, 5, -4],
#               [-2, -4, 5]])
# 
# # 使用 eig 计算特征值和特征向量
# eigenvalues, eigenvectors = np.linalg.eig(A)
# print(f"原始特征值为: {eigenvalues}")
# 
# # 对特征值和特征向量进行排序
# idx = np.argsort(eigenvalues)
# eigenvalues_sorted = eigenvalues[idx]
# eigenvectors_sorted = eigenvectors[:, idx]
# print(f"排序后的特征值: {eigenvalues_sorted}")
# 
# # 识别二重特征值
# tolerance = 1e-10
# if abs(eigenvalues_sorted[0] - eigenvalues_sorted[1]) < tolerance:
#     #二重特征值,对前两个特征向量进行施密特正交化
#     v1 = eigenvectors_sorted[:, 0]
#     v2 = eigenvectors_sorted[:, 1]
#     v3 = eigenvectors_sorted[:, 2]
# 
#     # 施密特正交化
#     beta1 = v1
#     beta2 = v2 - (np.dot(v2, beta1) / np.dot(beta1, beta1)) * beta1
# 
#     # 单位化所有向量
#     q1 = beta1 / np.linalg.norm(beta1)
#     q2 = beta2 / np.linalg.norm(beta2)
#     q3 = v3 / np.linalg.norm(v3)
# 
#     # 构建 Q 矩阵
#     Q = np.column_stack([q1, q2, q3])
# else:
#     # 如果没有重特征值,直接单位化
#     Q = eigenvectors_sorted / np.linalg.norm(eigenvectors_sorted, axis=0)
# 
# print(f"Q =\n{Q}")
# 
# # 验证 Q^T A Q 是否为对角阵
# result = Q.T @ A @ Q
# print(f"Q^T A Q =\n{result}")
# 
# tolerance = 1e-10
# result_cleaned = np.where(np.abs(result) < tolerance, 0, result)
# print(f"控制误差后的 Q^T A Q =\n{result_cleaned}")

补充知识点

1.区分用于矩阵特征值分解的函数:numpy.linalg.eig 和 numpy.linalg.eigh

对比维度numpy.linalg.eignumpy.linalg.eigh
适用矩阵类型任意方阵专门用于厄米特矩阵(复域):满足 ( A = A^H )(共轭转置等于自身);
实域特例:实对称矩阵(满足 ( A = A^T ))
算法与性能采用通用算法(如QR算法),无结构优化;
计算复杂度高,速度较慢;
数值稳定性一般
采用对称/厄米特矩阵专用优化算法(如分治QR、Jacobi算法);
充分利用矩阵对称性,速度更快;
数值稳定性更优,内存效率更高
特征值排序无固定排序规则,输出顺序随机(与矩阵结构、数值计算过程相关)特征值严格按升序排列(从最小到最大),结果具有规范性
特征向量正交性保证不保证特征向量正交
- 不同特征值的特征向量仅线性无关(非对称矩阵);
- 实对称矩阵中不同特征值的特征向量天然正交,但同一特征值的特征向量仅线性无关(不正交);
- 所有特征向量均不保证单位性(模长≠1)
强制保证特征向量单位正交
- 不同特征值的特征向量天然正交(矩阵固有性质);
- 同一特征值的特征向量自动做施密特正交化;
- 所有特征向量均自动单位化(模长=1)
特征值/特征向量性质可能返回复数特征值/特征向量(即使输入是实矩阵,非对称时可能出现)特征值必为实数(厄米特矩阵固有性质);
特征向量为实向量(实对称矩阵)或复向量(复厄米特矩阵),但始终满足单位正交

2.对于厄米特矩阵

  • eigh 会自动对同一特征值的特征向量做施密特正交化,再对所有特征向量单位化,最终返回 “单位正交” 的结果
  • eig 不会做这些额外处理,仅返回 “满足特征方程的原始特征向量”
函数实对称/厄米特矩阵的特征向量性质
np.linalg.eig1. 不同特征值:正交(固有性质);
2. 同一特征值:仅线性无关,不一定正交;
3. 所有特征向量:不保证单位性(模长≠1)。
np.linalg.eigh1. 不同特征值:正交(固有性质);
2. 同一特征值:自动正交化;
3. 所有特征向量:自动单位化(模长=1);
最终结果:单位正交。

因此,用eig得到特征向量后,想得到单位正交向量,需要完成:

  • 对同一特征值的线性无关特征向量做施密特正交化
  • 对所有正交后的特征向量做单位化
http://www.dtcms.com/a/578067.html

相关文章:

  • 印度外贸网站有哪些专注网站建设怎么样
  • Kustomize实战:PV/PVC多环境管理
  • 成都网站平面设计吴桥网站
  • Adobe Photoshop CS6 Lite:PS极端简化版,压缩后大小仅50M,Photoshop精简版
  • 做新闻类网站还有市场吗莱芜最好的网站建设公司
  • 电力变压器绕组变形多物理场耦合建模与在线监测技术
  • WLAN_频段配置
  • 网站策划书的撰写流程是什么福州网站建设 网站设计 网站制作
  • 进程控制核心(含进程地址空间)
  • 【OpenGL学习】第2课:用OpenGL创建第一个窗口
  • Redis单线程还是多线程?
  • 做网站现在用什么语言网站做优化的好处
  • 做网站需要什么知识wdcp 快速迁移网站
  • 《uni-app 长列表优化:虚拟列表(vue-virtual-scroller)解决 1000+ 数据渲染卡顿》(附虚拟列表封装与多端适配)
  • uniapp在app中如何将json以文件格式存到本地(vue3)
  • uniapp开源ERP多仓库管理系统
  • Qt GUI 程序中进度条的完整指南
  • 网站添加广告源码wordpress和druid
  • 推出 JxBrowser MCP 服务器
  • Etcd详解(raft算法保证强一致性)
  • 东莞网站建设对比建筑模板有几种
  • AIShareTxt入门:快速准确高效的为金融决策智能体提供股票技术指标上下文
  • 赋能智慧监管:视频汇聚平台EasyCVR助力智慧电梯监控智能化监管
  • 【银行测试】对公渠道转账+网银转账+对私转账功能测试点(汇总)
  • 2013年建设工程发布网站字形分析网站
  • 高端网站制作系统百度指数怎么看城市
  • 网站搜索排名查询余姚物流做网站
  • langchain agent的中间件
  • Mysql中隔离级别可重复读解决不可重复读的底层原理是什么?
  • MySQL的DATE_FORMAT函数介绍