Eigensystem

Eigensystem[m]

正方行列 m の固有値と固有ベクトルのリスト{values,vectors}を与える.

Eigensystem[{m,a}]

a についての m の一般化された固有値と固有ベクトルを与える.

Eigensystem[m,k]

m の最初の k 個の固有値に対する固有値と固有ベクトルを与える.

Eigensystem[{m,a},k]

最初の k 個の一般化された固有値と固有ベクトルを与える.

詳細とオプション

  • 行列 m が近似実数または近似複素数を含むとき,Eigensystemは固有値と固有ベクトルを数値で求める.
  • 近似数値行列 m について,固有ベクトルは正規化される. »
  • 厳密行列あるいは記号行列 m については,固有ベクトルは正規化されない. »
  • 与えられるすべての非零の固有ベクトルは独立している.固有ベクトルの数が,非零の固有値の数に一致する場合,対応する固有値と固有ベクトルはそれぞれのリストで対応する位置に置かれる.固有値は固有ベクトル行列の行に対応する.
  • 独立した固有ベクトルの数を上まわる数の固有値がある場合,余った固有値はそれぞれゼロのベクトルとペアにされる. »
  • 固有値が数値のときは,その絶対値の降順でソートされる.
  • この固有値と固有ベクトルは,行列方程式m.Transpose[vectors]==Transpose[vectors].DiagonalMatrix[values]を満たす. »
  • 一般化された有限な固有値と固有ベクトルはm.Transpose[vectors]==a.Transpose[vectors].DiagonalMatrix[values]を満たす. »
  • 通常の固有値は常に有限である.一般化された固有値は無限のこともある.無限の一般化された固有値は である に相当する. »
  • 行列 m および a が次元が のヌル空間を共有するとき,それらの一般化された固有値の Indeterminateとなり,一般化された固有ベクトルのリスト中の0ベクトルと対になる. »
  • {vals,vecs}=Eigensystem[m]vals vecs がそれぞれ固有値と固有ベクトルになるように設定するために使うことができる. »
  • Eigensystem[m,k]は,数値の固有値については絶対値が最大で固有ベクトルに対応する k 個の固有値を与える.
  • Eigensystem[m,-k]は絶対値が最小で固有ベクトルに対応する k 個の固有値を与える.
  • Eigensystem[m,spec]は,Take[,spec]Eigensystem[m]の各要素に適用することに等しい.
  • Eigensystem[m,UpTo[k]]k 個の固有値と対応する固有ベクトルを,あるいはできるだけ多くのそれらを与える.
  • EigensystemSparseArrayオブジェクトおよび構造化配列を使うことができる.
  • Eigensystemのオプションと設定値
  • Cubics False三次方程式を解く際に累乗根を使うかどうか
    Method Automatic使用するメソッドを選択する
    Quartics False四次方程式を解く際に累乗根を使うかどうか
    ZeroTestAutomatic式がいつゼロになるかを調べる
  • ZeroTestオプションは,厳密行列および記号行列のみに使うことができる.
  • 近似数値行列についての明示的なMethod設定
  • "Arnoldi"いくつかの固有値を求めるためのArnoldi反復法
    "Banded"エルミート行列のための直接帯行列ソルバ
    "Direct"全固有値を求めるための直接法
    "FEAST"区間内の固有値を求めるためのFEAST反復法(エルミート行列のみに適用可)
  • "Arnoldi"法は,対称行列あるいはエルミート行列に適用された際には,Lanczos法としても知られている.
  • "Arnoldi"法および"FEAST"法はメソッドは,サブオプションMethod->{"name",opt1->val1,}を取る.これは,Methodのサブセクションで見ることができる.

例題

すべて開くすべて閉じる

  (5)

機械精度で計算された固有値と固有ベクトル:

任意精度行列の固有値と固有ベクトル:

厳密な固有値と固有ベクトル:

記号による固有値と固有ベクトル:

valsvecs を,それぞれ固有値と固有ベクトルに設定する:

スコープ  (19)

基本的な用法  (6)

機械精度行列の固有系を求める:

18桁精度の固有値と固有ベクトルを近似する:

複素行列の固有系:

厳密な固有系:

大きい数値行列の固有値と固有ベクトルは効率的に計算される:

CenteredInterval行列の固有系:

m のランダムな代表 mrep の固有系を求める:

ベクトルを並べ直しスケールし直した後で,valsrvals を,vecsrvecs を含んでいることを確認する:

固有系の部分集合  (5)

最も大きい3つの固有値と対応する固有ベクトルを計算する:

固有値をラベルに使って3つのベクトルを可視化する:

最も小さい3つの固有値に対応する固有系:

最も大きい4つの固有値(それより少ない場合はできるだけたくさん)の固有系を求める:

固有系の部分集合を抽出するときは,繰返された固有値が考慮される:

独立固有ベクトルより多くの固有値がある場合はゼロベクトルが使われる:

一般化された固有値  (4)

機械精度の一般化された固有値と固有ベクトルを計算する:

一般化された厳密な固有系:

結果を有限精度で計算する:

一般化された記号固有系を計算する:

最も小さい2つの一般化された固有値と対応する一般化された固有ベクトルを求める:

特殊行列  (4)

疎な行列の固有系:

構造化行列の固有系:

QuantityArrayオブジェクトの単位は固有値に含まれるので,固有ベクトルは無次元になる:

IdentityMatrixの固有ベクトルはベクトル空間の標準基底を形成する:

HilbertMatrixの固有ベクトル:

行列がまず数値化されると,固有ベクトルは大きく変わる(固有値は変わらない):

オプション  (10)

Cubics  (1)

3×3のヴァンデルモンド(Vandermonde)の行列:

一般に,厳密な3×3行列の場合,結果はRootオブジェクトで与えられる:

結果を累乗根の形で得たいのであれば,Cubicsオプションを使うとよい:

Rootオブジェクトによる結果の方が,続く数値評価には適している:

Method  (8)

"Arnoldi"  (5)

Arnoldi法は,機械精度および任意精度の行列に使うことができる.Arnoldi法の実装は,"ARPACK"ライブラリに基づいている.これは,大規模な疎行列に最もに有効である.

"Arnoldi"法では,以下のサブオプションを指定することができる.

  • "BasisSize"Arnoldi基底の大きさ
    "Criteria"使用する基準
    "MaxIterations"反復の最大数
    "Shift"Arnoldiシフト
    "StartingVector"反復を始める最初のベクトル
    "Tolerance"反復の終了に使用される許容度
  • 次は,"Criteria"の可能な設定値である.

  • "Magnitude"Absに基づく
    "RealPart"Reに基づく
    "ImaginaryPart"Imに基づく
    "BothEnds"実数値対称行列スペクトルの両端からのいくつかの固有値
  • さまざまな"Criteria"設定を使って,最大固有ペアを計算する.行列 m は,固有値を持つ:

    デフォルトで,"Criteria"->"Magnitude"は最大規模の固有ペアを選ぶ:

    最大の実部固有ペアを求める:

    最大の虚部固有ペアを求める:

    対称行列スペクトルの両端から2つの固有値を求める:

    "StartingVector"を使って偶然性を避ける:

    初期ベクトルを変えると異なる固有ペアに収束することがある:

    "Shift"->μ を使い,行列 に変換することで固有値をシフトさせる.これで固有ベクトルが保存されるが,固有値は-μ 変化する.このメソッドは,変化した固有値を相殺する."Shift"は,一般に,最大あるいは最小規模といった選択基準なしで固有ペアを求める際に使われる:

    行列を手動でシフトさせ,結果の固有値を調整する:

    自動的にシフトさせ,結果の固有値を調整する:

    "Banded"  (1)

    帯行列法は,実数対称または複素数の機械精度エルミート行列に使うことができる.この方法はすべての固有ペアを求めるのに最適である.

    帯行列についての2つの最大固有ペアを計算する:

    解を確かめる:

    "FEAST"  (2)

    FEAST法は,実対称機械精度行列あるいは複素エルミート機械精度行列に使うことができる.これは,指定された区間における固有値を求める際に最も有効である.

    "FEAST"法では,次のサブオプションを指定することができる,

  • "ContourPoints"輪郭点数を選ぶ
    "Interval"固有値を求めるための区間
    "MaxIterations"微調整ループの最大数
    "NumberOfRestarts"再開の最大数
    "SubspaceSize"部分空間の初期サイズ
    "Tolerance"微調整を停止する許容度
    "UseBandedSolver"帯状ソルバを使うかどうか
  • 区間で固有ペアを計算する:

    "Interval"を使って区間を指定する:

    区間の端点はFEASTが固有値を求めた区間には含まれていない.

    解を確かめる:

    Quartics  (1)

    4×4行列:

    一般に,4×4行列の場合,結果はRootオブジェクトで与えられる:

    CubicsオプションとQuarticsオプションを使って,結果を累乗根で得ることもできる:

    アプリケーション  (16)

    固有系の幾何学  (3)

    正の固有値を持つ固有ベクトルは,行列の作用を受けたときに同じ方向を指す:

    負の固有値を持つ固有ベクトルは,行列の作用を受けたときに逆の方向を指す:

    次の行列 と関連する二次形式 q=TemplateBox[{x}, Transpose].a.x について考える:

    固有ベクトルは によって定義される双曲線の軸である:

    固有値の符号は双曲線方程式の右辺の符号に対応する:

    次は3Dにおける正定値二次形式である:

    曲面 をプロットする:

    CoefficientArraysを使って二次形式の対称行列を得る:

    その固有値と固有ベクトルを数値的に計算する:

    楕円の主軸を示す:

    対角化  (5)

    次の行列を m=p.d.TemplateBox[{p}, Inverse]として対角化する.まず, の固有値と固有ベクトルを計算する:

    固有値と列が固有ベクトルである行列 から対角行列 を構築する:

    恒等式 m=p.d.TemplateBox[{p}, Inverse]を確認する:

    これで,行列の任意の関数が f(m)=p.f(d).TemplateBox[{p}, Inverse]として計算できるようになった.例えばMatrixPower

    同様に,MatrixExpが自明となって の対角要素を累乗することしか必要としなくなった:

    を,その標準行列が行列 で与えられる線形変換とする.基底 における の表現が対角であるという特性を持つTemplateBox[{}, Reals]^4の基底 を求める:

    の固有値と固有ベクトルを求める:

    が固有ベクトルからなり, が列が の要素である行列であるとする:

    の座標から標準座標に変換する.この逆変換は逆方向に変換する:

    したがって,TemplateBox[{b}, Inverse].a.b で与えられるが,これは対角である:

    これは,単に要素が固有値の対角行列である:

    実対称行列は,s=o.d.TemplateBox[{o}, Transpose]のように直交対角化可能である.ただし, は実対角行列であり, は直交行列である.次の行列が対象であることを確認し,次にこれを対角化する:

    固有値と固有ベクトルを計算する:

    行列 は対角上に固有値を持つ:

    直交行列については,固有ベクトルを列に置く前に正規化する必要がある:

    s=o.d.TemplateBox[{o}, Transpose]であることを確認する:

    TemplateBox[{n}, ConjugateTranspose].n=n.TemplateBox[{n}, ConjugateTranspose]のとき,その行列は正規行列と呼ばれる.正規行列はユニタリ変換で対角化できる最も一般的な行列である.実対称行列 は,方程式の両辺が なので,すべて正規行列である:

    次の行列が正規行列であることを示し,次にこれを対角化する:

    NormalMatrixQを使って確認する:

    固有値と固有ベクトルを求める:

    対角行列は実対称行列とは異なって複素数値である:

    固有ベクトルを正規化してそれを列に置くとユニタリ行列になる:

    対角化 n=u.d.TemplateBox[{u}, ConjugateTranspose]を確認する:

    対角化不可能な行列の固有系:

    すべての固有ベクトルのスパンの次元は固有値の数より低い:

    1と0のランダムな4×4行列は対角化不可能である:

    微分方程式と動的な系  (4)

    常微分方程式の系 , , を解く.まず,右辺のために係数行列 を構築する:

    固有値と固有ベクトルを求める:

    各項が の指数関数である対角行列を構築する:

    列が対応する固有ベクトルである行列を構築する:

    3つの任意の初期値についての一般解は p.d.TemplateBox[{p}, Inverse].{TemplateBox[{1}, CTraditional],TemplateBox[{2}, CTraditional],TemplateBox[{3}, CTraditional]}である:

    DSolveValueを使って解を確かめる:

    粒子が平面の力場で動いており,その位置ベクトル を満足するとする.ただし,は以下であるとする.のときのこの初期問題を解く:

    まず, 固有値と対応する固有ベクトルを計算する:

    系の一般解は である.LinearSolveを使って係数を決定する:

    固有ベクトルの適切な線形結合を構築する:

    DSolveValueを使って解を確かめる:

    が以下の確率行列であるときの動的な系 の一般解を生成する:

    固有値と固有ベクトルを求め,Chopを使って小さい数値誤差を切り捨てる:

    一般解は項のの形の任意の線形結合である:

    が数値の丸めまで動的方程式を満足することを確認する:

    ローレンツ(Lorenz)方程式:

    方程式の右辺のヤコビ(Jacobi)行列を求める:

    均衡点を求める:

    第1象限の1つでヤコビ行列の固有値と固有ベクトルを求める:

    dir の方向にある pt の小さい摂動から逆方向に積分する関数:

    右側の均衡点についての安定した曲線を示す:

    左側の均衡点についての安定した曲線を求める:

    安定した曲線をローレンツの方程式の解とともに示す:

    物理  (4)

    量子力学では,状態はエルミート線形演算子による複素単位ベクトルと物理量で表される.固有値は可能な観測値を表,固有ベクトルに関する成分の二乗係数をはそれらの観測値の確率を表す.与えられたスピン演算子 と状態 について,可能な観測値とその確率を求める:

    固有系を計算する,可能な観測値はである:

    適切な射影を計算するために固有ベクトルを正規化する:

    相対確率はについてについてはである:

    量子力学では,エネルギー演算子はハミルトニアン と呼ばれ,エネルギーが の状態はシュレーディンガー方程式 に従って進化する.一定磁場で 方向にスピン1粒子に対するハミルトニアンが与えられたとして,初期状態が を表す状態であった粒子の時点 における状態を求める:

    固有系を計算する.エネルギーレベルはである:

    固有ベクトルを正規化する:

    時点 における状態はシュレーディンガー方程式に従って進化する各固有状態の和である:

    慣性モーメントはさまざまな方向への回転に対する剛体の抵抗を表す実対称行列である.この行列の固有値は主慣性モーメントと呼ばれ,対応する固有ベクトル(必然的の直交ベクトル)は主軸である.以下の四面体の主慣性モーメントと主軸を求める:

    まず,慣性モーメントを計算する:

    主モーメントと軸を計算する:

    軸が直交することを確認する:

    四面体の重心は原点にある:

    四面体とその主軸を可視化する:

    一般化された固有系を使って項を分離するための練成振動の正規モードを求めることができる.以下の図に示した系について考える:

    フックの法則によると,これはに従う.一般解の を代入すると,以下のように,剛性行列 ,質量行列 の行列方程式 が与えられる:

    , , , のときの固有周波数と正規モードを求める:

    一般化された固有値問題を解く:

    固有周波数 は固有値の平方根である:

    正規モードの解を一般化された固有ベクトル掛ける対応する指数関数として構築する:

    どちらもこの系についての微分方程式を満足することを確認する:

    特性と関係  (17)

    数値行列に対して返された固有ベクトルは単位ベクトルである:

    厳密行列および記号行列に対して返された固有ベクトルは,単位ベクトルではないことが多い:

    Eigensystem[m]は,事実上,{Eigenvalues[m],Eigenvectors[m]}に等しい:

    固有ベクトルと固有値の両方が必要な場合はEigensystemを呼び出した方が効率的なことが多い:

    どのような正方行列でも,それ自体の類似性関係を満足する:

    正方行列の任意のペアは,有限固有値について一般化された類似性関係を満足する:

    の無限一般化固有値は のカーネルに含まれる の固有ベクトルに対応する:

    ベクトルは固有値が の固有ベクトルである:

    また, のヌル空間でもある:

    行列 m は,DiagonalizableMatrixQ[m]Trueのときかつそのときに限って固有ベクトルの完全集合を持つ:

    次の行列には,で表される空間 についての固有ベクトルが欠けている:

    対角化可能行列について,Eigensystemは関数適用を固有ベクトルへの適用に簡約する:

    対角化を使って行列指数関数を計算する:

    MatrixExpを使って行列指数関数を計算する:

    これは各項の指数関数に過ぎない訳ではない点に注意のこと:

    可逆行列 について,TemplateBox[{m}, Inverse]は同じ固有ベクトルを持ちその固有値は互いに互いの逆数である:

    固有値は絶対値でソートされるので,以下は同じ値を与えるが順序は逆である:

    解析関数 については, の固有値は常に固有値が の固有ベクトルでもある:

    例えば, は固有値が二乗された同じ固有ベクトルを持つ:

    同様に,の固有値はである:

    実対称行列の固有値は実数でその固有ベクトルは直交ベクトルである:

    この行列は対称行列である:

    調べてみると,固有値は実数である:

    固有ベクトルが互いに直交することを確認する:

    実反対称行列は虚数行列でその固有ベクトルは直交ベクトルである:

    この行列は反対称行列である:

    調べてみると,固有値は虚数である:

    固有ベクトルが互いに直交することを確認する:

    ユニタリ行列の固有値は単位円上にあり,その固有ベクトルは直交ベクトルである:

    固有値と固有ベクトルを計算する:

    固有値が単位円上にあることを確認する:

    固有ベクトルが互いに直交することを確認する:

    任意の正規行列の固有ベクトルは直交ベクトルである:

    固有値は任意のものでよい:

    しかし固有ベクトルは直交ベクトルである:

    SingularValueDecomposition[m]m.TemplateBox[{m}, ConjugateTranspose]および TemplateBox[{m}, ConjugateTranspose].mの固有系から構築される:

    m.TemplateBox[{m}, ConjugateTranspose]の固有系を計算する:

    の列は固有ベクトルである:

    TemplateBox[{m}, ConjugateTranspose].m の固有系を計算する:

    の列は固有ベクトルである:

    の行は列より少ないので, の対角項はである:

    完全な固有ベクトル集合を持つ行列 m について考える:

    JordanDecomposition[m]は固有値と固有ベクトルから構築された行列{s,j}を返す:

    j 行列は固有値の項と対角にあり,おそらくEigensystemとは次数が異なる:

    s 行列は対応する固有ベクトルを列として持つ:

    数値正規行列 nSchurDecomposition[n,RealBlockDiagonalFormFalse]

    行列{q,t}は固有値と固有ベクトルから構築される:

    t 行列は対角行列で固有値の項を持ち,おそらくEigensystemとは次数が異なる:

    q が固有ベクトルを列として持つことを確認するために,各ベクトルの最初の項を1.に設定して qv の位相差を消去する:

    行列が次元 のヌル空間を共有するなら,それらの一般化された固有値の Indeterminateで固有ベクトルのリストは0で充填される:

    の一般化された二つの固有値はIndeterminateで0ベクトルが生成される:

    行列 は一次元のヌル空間を持つ:

    それは のヌル空間にある:

    したがって,の一般化された一つの固有値はIndeterminateであり,0ベクトルが生成される:

    考えられる問題  (5)

    一般的な記号による場合は非常に速く非常に複雑になる:

    式のサイズは指数関数を上回る速さで大きくなる:

    すべての行列が固有ベクトルの完全なセットを持つ訳ではない:

    JordanDecompositionを使って厳密に計算する:

    SchurDecompositionを使って数値的に計算する:

    10,000×10,000疎行列を構築する:

    固有ベクトル行列は密行列で,表示するのには大きすぎる:

    最も大きい,あるいは最も小さい固有値をいくつか計算するのは大抵の場合可能である:

    固有値が密接にグループ化されている場合は,疎行列に対する反復的な方法が収束しないことがある:

    1000回反復しても反復が収束していない:

    期待値付近でアルゴリズムにシフトを与え,収束を加速することができる:

    FEASTメソッドで指定された区間に与えられた端点は含まれていない.

    3と9における固有値で行列を設定し,区間内の固有値と固有ベクトルを求める:

    FEASTが固有値3と9および対応する固有ベクトルを求められるように区間を拡張する:

    Wolfram Research (1988), Eigensystem, Wolfram言語関数, https://reference.wolfram.com/language/ref/Eigensystem.html (2024年に更新).

    テキスト

    Wolfram Research (1988), Eigensystem, Wolfram言語関数, https://reference.wolfram.com/language/ref/Eigensystem.html (2024年に更新).

    CMS

    Wolfram Language. 1988. "Eigensystem." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/Eigensystem.html.

    APA

    Wolfram Language. (1988). Eigensystem. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Eigensystem.html

    BibTeX

    @misc{reference.wolfram_2024_eigensystem, author="Wolfram Research", title="{Eigensystem}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/Eigensystem.html}", note=[Accessed: 24-November-2024 ]}

    BibLaTeX

    @online{reference.wolfram_2024_eigensystem, organization={Wolfram Research}, title={Eigensystem}, year={2024}, url={https://reference.wolfram.com/language/ref/Eigensystem.html}, note=[Accessed: 24-November-2024 ]}