いや、そこはバランスなんだ。大きな行列だと QR 法のほうが速いから、汎用の固有値ソルバーは QR 法が主流だよ。ただヤコビ法は実装が驚くほど単純で、数値的にとても高精度、しかも各回転がほぼ独立だから並列計算に向く。だから「小さい対称行列を高精度に解きたい」場面、たとえば3×3の応力テンソルから主応力を出すとか、慣性テンソルから主慣性モーメントを出すといった用途では、いまでもヤコビ法が現役なんだ。
よくある質問
ヤコビ法は実対称行列(A[i][j]=A[j][i])の固有値・固有ベクトルを求める手法です。対称行列の固有値は必ず実数になり、ヤコビ法はそれを平面回転の繰り返しだけで安定に取り出します。非対称な行列には基本的に使えず、その場合は QR 法やヘッセンベルグ化を経た一般固有値ソルバーを使います。本ツールは入力した3つの対角成分と3つの非対角成分から対称行列を組み立てるため、常に対称行列が対象になります。
QR 法は現在の標準的な固有値ソルバーで、大きな行列でもヤコビ法より高速です。一方ヤコビ法はアルゴリズムが極めて単純で、実装が容易、数値的に非常に高精度、しかも各回転が独立に近いため並列化しやすいという長所があります。収束は終盤で二次収束し、小・中規模の対称行列では十分実用的です。高精度が要求される場面や、構造が単純であることが重視される場面ではヤコビ法が選ばれます。
構造解析のモード解析:有限要素法で組み立てた剛性行列 K と質量行列 M から、一般固有値問題 Kφ=λMφ を解くと、構造物の固有振動数とモード形状が得られます。実機の縮約モデルでは行列サイズが小さくなることが多く、その小さな対称行列の固有値を高精度に取り出す段階でヤコビ法が使われます。橋・建物・機械部品の共振回避設計の出発点です。
まず多いのが、「ヤコビ法はどんな行列にも使える万能な固有値ソルバーだ」という誤解です。ヤコビ法が前提とするのは実対称行列です。非対称行列に適用しても、相似変換で非対角成分を一掃するという論理が成り立たず、複素固有値も扱えません。非対称行列の固有値が必要なら、ヘッセンベルグ化+シフト付き QR 法など、別のアルゴリズムを選びます。本ツールは入力から必ず対称行列を組み立てるため対象を外しませんが、自分でコードを書くときは「対称性のチェック」を必ず入れてください。
次に、「ヤコビ法は遅いから実用にならない」という思い込み。確かに大規模行列では QR 法のほうが速く、汎用ソルバーの主役は QR 法です。しかしヤコビ法は小・中規模の対称行列では十分速く、終盤は二次収束で一気に詰まります。さらに、ほかのアルゴリズムでは得にくいほどの高精度(特に微小な固有値を相対精度よく求める点)が長所で、並列化のしやすさもあります。「遅い=使えない」ではなく、「規模と要求精度で使い分ける」のが正しい理解です。