雅可比法固有值计算模拟器 返回
数值分析

雅可比法固有值计算模拟器

通过雅可比法(平面旋转的重复)求解3×3对称矩阵的固有值的工具。改变对角元素和非对角元素,即可实时看到需要多少次旋转进行对角化,非对角元素如何消失,对角元素如何收敛到固有值。

参数设置
设置对称矩阵A的3个对角元素和3个非对角元素。对称性自动保证,即A[i][j]=A[j][i]。
对角元素 a₁₁
对角元素 a₂₂
对角元素 a₃₃
非对角元素 a₁₂ = a₂₁
非对角元素 a₁₃ = a₃₁
非对角元素 a₂₃ = a₃₂
将所有非对角元素设为0时,矩阵从一开始就是对角矩阵,旋转次数为0。
计算结果
固有值 λ₁
固有值 λ₂
固有值 λ₃
迭代(旋转)次数
最终非对角范数
收敛判定
矩阵对角化动画

根据元素大小用颜色标记3×3矩阵的各单元。重放记录的旋转序列,显示非对角单元如何淡化至零,对角单元如何逐渐稳定到固有值的过程,并循环播放。每步都用黄色强调当前消除的非对角元素。

非对角范数收敛
对角元素收敛
理论和关键公式

$$\theta=\tfrac12\arctan\!\frac{2a_{pq}}{a_{qq}-a_{pp}}$$

旋转角θ的选择使得最大的非对角元素a_pq(p<q)恰好为零。a_pp、a_qq是对应的两个对角元素。

$$A\leftarrow J^{\mathsf T} A\,J$$

每次旋转都是通过正交矩阵J(包含c=cosθ、s=sinθ的平面旋转)进行相似变换。这种变换在保持固有值不变的同时,将选定的非对角元素置为零。

$$\mathrm{off}(A)=\sqrt{\sum_{i\neq j}a_{ij}^2}\;\longrightarrow\;0$$

非对角Frobenius范数off(A)在每次旋转后单调递减,当其足够小时,对角元素即为固有值。

雅可比法(固有值计算)简介

🙋
听说过"用雅可比法求固有值",但固有值真的需要通过旋转矩阵来求解吗?
🎓
说得对。固有值本质上就是"把矩阵变成对角矩阵后的对角元素"。雅可比法的思想非常直接——通过逐步旋转对称矩阵,把非对角元素都归零。完全对角化后,三个对角数字就是固有值。你可以在左边改变a₁₂或a₂₃的值,看看需要多少次旋转才能完成对角化。
🙋
旋转会改变矩阵里的数字,这样求出的固有值真的对吗?
🎓
这是个很好的问题,也是雅可比法的核心!每一步我们做的是"相似变换"A←JᵀAJ。因为J是旋转矩阵(正交矩阵),相似变换有个重要性质:固有值完全不变。所以,虽然矩阵里的数字在不断改变,固有值却始终被保存着。旋转消除非对角元素的过程中,对角元素逐渐逼近"真正的固有值",这就是它的巧妙之处。
🙋
是从哪个非对角元素开始消除的?消除的顺序有规律吗?
🎓
古典雅可比法采用"瞄准最大的非对角元素"的策略。每一步都找到绝对值最大的非对角元素a_pq,然后选择合适的角度θ=½arctan(2a_pq/(a_qq−a_pp))让它恰好变成零。从最"麻烦"的元素开始消除,这样非对角的"权重"减少得最快。看下面的"非对角范数收敛"图,你会看到在对数坐标下几乎是直线下降,到了最后阶段更是二次收敛——掉得飞快。
🙋
这样的话,消掉一个非对角元素后,旋转会不会把别的非对角元素又搞大了?
🎓
你观察得很敏锐。确实,一次旋转消掉的元素,在后续旋转中可能会有所反弹。但关键在于"非对角元素的平方和"在每次旋转后必然减少。消掉的那一份完全转移到对角上,反弹的部分又比消掉的少。这样,整体的非对角范数off(A)就单调递减,必定趋向零。看对角元素的收敛图,三条线就这样逐渐稳定在各自的固有值上。
🙋
这么简洁的话,现在的分析软件不是都用雅可比法来算固有值吗?
🎓
这里就要讲到权衡了。对于大矩阵,QR法通常更快,所以通用固有值求解器主要采用QR法。但雅可比法有自己的优势:算法极其简洁易懂,实现容易,数值精度格外高,而且每次旋转几乎独立,天然适合并行计算。收敛也很快,后期呈二次收敛。所以在"要求高精度、矩阵较小"的场景——比如从3×3应力张量提取主应力,从3×3惯性张量提取主惯性矩的时候,雅可比法仍然是现役选手。

常见问题

雅可比法是求解实对称矩阵(A[i][j]=A[j][i])的固有值和特征向量的方法。对称矩阵的固有值必定为实数,雅可比法只通过平面旋转的重复就可以稳定地求出它们。基本上不能用于非对称矩阵,那种情况下应使用QR法或Hessenberg化后的一般固有值求解器。本工具从输入的3个对角元素和3个非对角元素组成对称矩阵,因此总是针对对称矩阵。
雅可比法的每一步都是相似变换A←JᵀAJ。由于J是正交矩阵(旋转矩阵),相似变换完全不改变固有值。每次旋转都选择合适的角度θ,使得最大的非对角元素恰好为零。反复旋转时,非对角元素平方和(非对角范数)单调减少,矩阵逐渐接近对角矩阵。因为固有值在相似变换下保持不变,所以当对角化完成时,对角元素恰好就是固有值。
QR法是当前标准的固有值求解器,即使对于大矩阵也比雅可比法快。而雅可比法的优点是算法极其简单易懂、实现容易、数值精度非常高,而且每次旋转几乎独立,易于并行化。收敛过程中后期呈二次收敛,对于小型和中型对称矩阵十分实用。在要求高精度或重视算法简洁性的场景中,雅可比法仍被广泛采用。
固有值计算出现在工程的各个领域。结构分析中,从刚度矩阵和质量矩阵求固有振动频率(模态分析);应力分析中,从应力张量求主应力和主方向。从惯性张量得到主惯性矩,从协方差矩阵进行主成分分析(PCA)。这些应用都涉及小型对称矩阵,因此高精度的雅可比法非常适合。3×3的应力张量和惯性张量是雅可比法的典型应用对象。

实际应用案例

结构分析的模态分析:有限元法组建的刚度矩阵K和质量矩阵M,求解广义固有值问题Kφ=λMφ,可得到结构的固有振动频率和振型。实际模型的缩减模型中,矩阵规模常常很小,在这个小对称矩阵的对角化阶段,雅可比法因其高精度而备受欢迎。桥梁、建筑、机械部件的共振规避设计都从这里开始。

应力张量的主应力分析:3×3应力张量是对称矩阵。用雅可比法对它对角化后,对角元素就是主应力σ₁、σ₂、σ₃,特征向量是主方向。找到没有剪切分量的坐标系,本质上就是解固有值问题,而3×3的规模正是雅可比法最擅长的。这是强度判定和疲劳评估的前置步骤,日常工程计算中广泛应用。

刚体力学的惯性张量:物体的惯性张量也是对称的3×3矩阵。用雅可比法对角化,得到主惯性矩和主轴,旋转运动方程就会大大简化。人工卫星姿态控制、机械臂动力学、车辆动力学等涉及刚体转动的场景,都需要这一步计算。

主成分分析(PCA)和统计:数据的协方差矩阵是对称半正定矩阵。其固有值和特征向量给出方差最大的方向(主成分),用于降维和特征提取。当变量不多时,协方差矩阵较小,稳定精确的雅可比法就成了首选。图像处理、传感器数据分析、质量管理等领域广泛应用。

常见误区和注意事项

最常见的误解是"雅可比法是万能的固有值求解器,什么矩阵都能用"。雅可比法的前提是实对称矩阵。应用到非对称矩阵,从非对角元素逐个消除的逻辑就不成立,也无法处理复固有值。需要非对称矩阵的固有值时,应该用Hessenberg化+QR法等别的方法。本工具从输入就保证了对称性,但自己编程时一定要加上"对称性检验"。

另一个常见的想法是"雅可比法太慢,实用性不强"。确实,对大矩阵QR法更快,通用求解器主要用QR法。但雅可比法在小型对称矩阵上速度足够快,后期二次收敛时尤其迅速。相比其他算法,它能达到超高的精度(特别是对微小固有值的相对精度),还天然适合并列化。"慢=没用"是误解,应该理解为"按问题规模和精度要求选择"。

最后,"消掉一个非对角元素后,它就永久消失了"也是个误区。实际上,这个元素在随后的旋转中可能会小幅反弹。重要的不是某一个单独元素的行为,而是整体的非对角范数——非对角元素平方和——必然单调递减。判断收敛时千万不能只看某一个元素,必须看整个off(A)范数是否低于阈值。本工具的收敛判定就是这样做的。

使用指南

  1. 输入对称矩阵的对角元素a₁₁、a₂₂、a₃₃,设定非对角元素a₁₂(可将a₁₃、a₂₃设为0)
  2. 点击模拟开始按钮,实时显示雅可比法重复进行平面旋转的过程
  3. 每次迭代时识别最大非对角元素的位置,计算旋转角θ并更新矩阵
  4. 当非对角范数低于收敛阈值(通常10⁻¹⁰)时停止,显示λ₁、λ₂、λ₃

具体计算案例

从钢材应力分析得到的应力张量(单位:MPa):a₁₁=250、a₂₂=180、a₃₃=120、a₁₂=45。初始非对角范数≈63.6。经过雅可比法8次平面旋转,收敛得到主应力λ₁≈287.4 MPa、λ₂≈198.1 MPa、λ₃≈144.5 MPa。最终非对角范数达到5.2×10⁻¹¹。每次旋转角度从45度左右逐渐细调,确保数值稳定

工程应用注意事项