このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
固有値および固有ベクトルのサブセット
行列一个= delsq (numgrid (' C ', 15))
は,区間(0 8)にほど良く配置された固有値をもつ対称正定値行列です。絶対値が最も大きい6個の固有値を計算します。
一个= delsq (numgrid (“C”、15));d = eigs (A)
d =6×17.8666 7.7324 7.6531 7.5213 7.4480 7.3517
2番目の入力を指定して,最も大きい特定数の固有値を計算します。
d = eigs (3)
d =3×17.8666 7.7324 7.6531
行列一个= delsq (numgrid (' C ', 15))
は,区間(0 8)にほど良く配置された固有値をもつ対称正定値行列です。最も小さい5個の固有値を計算します。
一个= delsq (numgrid (“C”、15));d = eigs (5“smallestabs”)
d =5×10.1334 0.2676 0.3469 0.4787 0.5520
非ゼロ要素の密度がの約25%,1500行1500列の乱数スパース行列を作成します。
n = 1500;一个= sprand (n, n, 0.25);
行列の陆分解を求め,:一个(p) = L * U
を満たす置換ベクトルp
を返します。
陆(L U p) = (,“向量”);
関数ハンドルAfun
を作成します。この関数ハンドルはベクトル入力x
を受け取り,陆分解の結果を使用して,実質的にx \
を返します。
@(x) U\(L\(x(p)));
eigs
と関数ハンドルAfun
を使用して,絶対値の最も小さい6個の固有値を計算します。2番目の入力は一个
のサイズです。
d = eigs (Afun 1500 6“smallestabs”)
d =6×1复杂0.1423 + 0.0000i 0.4859 + 0.0000i -0.3323 - 0.3881i -0.3323 + 0.3881i 0.1019 - 0.5381i 0.1019 + 0.5381i
west0479
は479行479列の実数値スパース行列であり,共役固有値の実数および複素数のペアをもちます。
west0479
行列を読み込み,eig
を使用してすべての固有値を計算してプロットします。固有値は複素数であるため,情节
は自動的に実数部をx座標,虚数部をy座標として使用します。
负载west0479一个= west0479;d = eig(完整的(A));情节(d,“+”)
固有値は,実数直線(x軸)に沿って,特に原点近くに集まっています。
eigs
には,各種の最大の固有値または最小の固有値を取り出すことができるσ
のオプションがいくつかあります。σ
で使用できるオプションごとに,いくつかの固有値を計算してプロットします。
图绘制(d,“+”)举行在la = eigs (6“largestabs”);情节(洛杉矶,“罗”A,6, A = eigs“smallestabs”);情节(sa),“去”)举行从传奇(所有特征值的,最大程度的,最小程度的)包含(“实轴”) ylabel (“虚轴”)
图绘制(d,“+”)举行在数量= eigs (4“bothendsreal”);情节(ber,“r ^”A,4, 4“bothendsimag”);情节(贝,“g ^”)举行从传奇(所有特征值的,“真实”的两端,“两端想象的”)包含(“实轴”) ylabel (“虚轴”)
图绘制(d,“+”)举行在lr = eigs (3“largestreal”);情节(lr,“罗”) sr = eigs(A,3,“smallestreal”);情节(sr,“去”i = eigs(A,3, 3)“largestimag”,“SubspaceDimension”, 45岁);情节(李“m ^”i = eigs(A,3,“smallestimag”,“SubspaceDimension”, 45岁);情节(si,“c ^”)举行从传奇(所有特征值的,最大的真实”,“最小的真实”,“最大的想象”,“最小的想象”)包含(“实轴”) ylabel (“虚轴”)
“smallestabs”
の固有値と“smallestreal”
の固有値の違い対称正定値スパース行列を作成します。
一个= delsq (numgrid (“C”, 150));
“smallestreal”
を使用して,最も小さい6個の実数固有値を計算します。この場合,一个
维多を使用して法が実行されます。
d = eigs(A, 6,“smallestreal”)
d =6×10.0013 0.0025 0.0033 0.0045 0.0052 0.0063
toc
运行时间为3.043174秒。
“smallestabs”
を使用して,同じ固有値を計算します。この場合,一个
维多の逆行列を使用して法が実行されます。
A, 6,“smallestabs”)
dsm =6×10.0013 0.0025 0.0033 0.0045 0.0052 0.0063
toc
运行时间为0.443565秒。
固有値はゼロの近くに集まります。一个
を使用する“smallestreal”
の計算は収束に時間がかかります。これは,固有値間のギャップが非常に小さいためです。反対に,“smallestabs”
オプションでは一个
の逆行列を使用するため,一个
の固有値の逆行列でギャップがはるかに大きくなり,結果として計算が容易になります。このパフォーマンスの改善は,“smallestreal”
では不要な一个
の因子分解を行うことで得られます。
固有値とほぼ等しい数値σ
の近傍の固有値を計算します。
行列一个= delsq (numgrid(“C”,30))
は,区間(0 8)にほど良く配置された固有値をもつサイズ632の対称正定値行列です。ただし,このうちの18個の固有値は,4.0の位置で反復があります高祖近傍の固有値をいくつか計算するには,関数呼び出し4.0 eigs (20)
を試みるのが妥当です。ただし,この呼び出しは- 4.0 *我
の逆行列の最大固有値を計算します。ここで,我
は単位行列です高祖は一个
の固有値であるため,この行列は特異であり,逆行列はありません。eigs
は失敗してエラーメッセージが出力されます。数値σ
は,固有値と厳密に等しい値にできません。これらの固有値を求めるには,代わりに4.0近傍(等しくない)のσ
値を使用しなければなりません。
eig
を使用してすべての固有値を計算し,eigs
を使用して4 - 1 e-6に最も近い20個の固有値を求めて,それらの結果を比較します。それぞれの方法で計算した固有値をプロットします。
一个= delsq (numgrid (“C”, 30));Sigma = 4 - 1e-6;d = eig(一个);D =排序(eigs(σ),20日);
情节(d (307:326),“ks”)举行在情节(D,k +的)举行从传奇(“eig (A)”,“eigs(σ),20日”)标题(18个重复的A特征值)
どちらも非ゼロ要素の密度の低い,乱数のスパース行列一个
およびB
を作成します。
B = sprandn(1e3,1e3,0.001) + speye(1e3);B = B * B;一个= sprandn (1 e3, e3, 0.005);= A + A”;
行列B
のコレスキー分解を求め,3つの出力を使用して置換ベクトル年代
およびテスト値p
を返します。
(R, p, s) =胆固醇(B,“向量”);p
p = 0
p
はゼロであるため,B
はB (s, s) = R ' * R
を満たす対称正定値行列です。
一个
およびR
に関する一般化固有値問題について,絶対値が最も大きい6個の固有値および固有ベクトルを計算します。R
はB
のコレスキー因子であるため,“IsCholesky”
を真正的
として指定します。さらに,B (s, s) = R ' * R
であり,したがってR =胆固醇(B (s, s))
であるため,置換ベクトル年代
を“CholeskyPermutation”
の値として使用します。
[V D标志]= eigs (R, 6日“largestabs”,“IsCholesky”,真的,“CholeskyPermutation”,年代);国旗
国旗= 0
国旗
はゼロであるため,すべての固有値が収束しています。
一个
- - - - - -入力行列入力行列。正方行列として指定します。一个
は通常(必ずではない),大きなスパース行列です。
一个
が対称である場合,eigs
はそうした場合専用のアルゴリズムを使用します。一个
が”ほぼ”対称である場合は,= (+) / 2
を使用して一个
を対称にしてからeigs
を呼び出すことを検討してください。これにより,eigs
は複素数固有値ではなく,実数固有値を確実に計算します。
データ型:双
複素数のサポート:あり
B
- - - - - -入力行列入力行列。一个
と同じサイズの正方行列として指定します。B
が指定された場合,eigs
は一般化固有値問題* V = B * * D
を求解します。
B
が対称正定値である場合,eigs
はそうした場合専用のアルゴリズムを使用します。B
が”ほぼ”対称正定値である場合は,B = (B + B) / 2
を使用してB
を対称にしてからeigs
を呼び出すことを検討してください。
一个
がスカラーの場合,B
を空行列eigs ([], k)
として指定して標準固有値問題を解くことで,B
とk
のあいまいさを解決できます。
データ型:双
複素数のサポート:あり
k
- - - - - -計算する固有値の数計算する固有値の数。正のスカラー整数として指定します。
例:eigs (2)
は一个
の最も大きい固有値を2つ返します。
σ
- - - - - -固有値のタイプ“largestabs”
(既定値) |“smallestabs”
|“largestreal”
|“smallestreal”
|“bothendsreal”
|“largestimag”
|“smallestimag”
|“bothendsimag”
|スカラー固有値のタイプ。次の表のいずれかの値として指定します。
σ |
説明 |
σ(R2017a以前) |
---|---|---|
标量(0を含む実数,複素数) |
数値 |
変更なし |
|
最大の絶対値。 |
“lm” |
|
最小固有値。 |
“sm” |
|
最大の実数値。 |
“lr” 、“拉” |
|
最小の実数値。 |
“老” 、“sa” |
|
それぞれ最大の実数部および最小の実数部をもつ,両端の |
“是” |
非対称問題では,σ
は次の値にすることもできます。
σ |
説明 |
σ(R2017a以前) |
---|---|---|
|
最大虚数部。 |
一个 が複素数の場合,“李” 。 |
|
最小虚数部。 |
一个 が複素数の場合,“如果” 。 |
|
それぞれ最大の虚数部および最小の虚数部をもつ,両端の |
一个 が実数の場合,“李” 。 |
例:eigs (k, 1)
は1に最も近いk
個の固有値を返します。
例:eigs (k ' smallestabs ')
は絶対値が最も小さいk
個の固有値を返します。
データ型:双
|字符
|字符串
选择
- - - - - -オプション構造体オプション構造体。第1次の表のつ以上のフィールドを含む構造体として指定します。
メモ
オプション構造体を使用したオプションの指定は推奨されません。代わりに名前と値のペアを使用してください。
オプションフィールド | 説明 | 名前と値のペア |
---|---|---|
issym |
|
“IsFunctionSymmetric” |
托尔 |
収束の許容誤差。 |
“宽容” |
麦克斯特 |
反復最大回数 |
“MaxIterations” |
p |
兰索斯基底ベクトルの数。 |
“SubspaceDimension” |
半 |
開始ベクトル |
“StartVector” |
disp |
診断情報の表示レベル。 |
“显示” |
失败 |
収束していない固有値の出力での処理。 | “FailureTreatment” |
上海浦东发展银行 |
B は対称正定値か。 |
“IsSymmetricDefinite” |
cholB |
|
“IsCholesky” |
permB |
スパース行列 |
“CholeskyPermutation” |
例:opts.issym= 1, opts.tol = 1e-10
は,フィールドissym
および托尔
に値が設定された構造体を作成します。
データ型:结构体
Afun
- - - - - -行列関数行列関数。関数ハンドルとして指定します。関数y = Afun (x)
は,σ
の入力に応じて適切な値を返さなければなりません。
* x
- - - - - -σ
が未指定,または“smallestabs”
以外のテキストオプションの場合。
x \
- - - - - -σ
が0
または“smallestabs”
の場合。
(我)一个σ* \ x
- - - - - -σ
が非ゼロのスカラーである場合(標準固有値問題)。
(一个σ* B) \ x
- - - - - -σ
が非ゼロのスカラーである場合(一般化固有値問題)。
たとえば,次のAfun
は,σ= ' smallestabs '
を指定してeigs
を呼び出すときに機能します。
陆(L U p) =(,“矢量”);@(x) U\(L\(x(p)));d = eigs (Afun 100 6“smallestabs”)
一般化固有値問題の場合は,行列B
を次のように追加します(B
は関数ハンドルで表すことができません)。
d = eigs (Afun, 100 B 6“smallestabs”)
一个
は,“IsFunctionSymmetric”
(またはopts.issym
)により対称であることが指定されている場合を除いて,非対称であると見なされます。“IsFunctionSymmetric”
を真正的
に設定すると,eigs
は複素数固有値ではなく,実数固有値を確実に計算します。
関数Afun
に追加パラメーターを指定する方法の詳細については,関数のパラメーター化を参照してください。
ヒント
Afun
から予測される出力を確認するには,“显示”
オプションをオンにしてeigs
を呼び出します。
n
- - - - - -Afun
で表される正方行列のサイズAfun
で表される正方行列一个
のサイズ。正のスカラー整数として指定します。
オプションの名称,值
の引数ペアをコンマ区切りで指定します。的名字
は引数名で,价值
は対応する値です。的名字
は引用符で囲まなければなりません。Name1, Value1,…,的家
のように,複数の名前と値のペアの引数を任意の順序で指定できます。
d = eigs (k,σ,“宽容”,1平台以及MaxIterations, 100)
は収束の許容誤差を緩和し,より少ない反復回数を使用します。
“宽容”
- - - - - -収束の許容誤差1 e-14
(既定値) |正の実数のスカラー収束の許容誤差。“宽容”
と正の実数値スカラーで構成されるコンマ区切りのペアとして指定します。
例:s = eigs (k,σ,“宽容”,1 e - 3)
“MaxIterations”
- - - - - -アルゴリズムの最大反復回数300
(既定値) |正の整数アルゴリズムの最大反復回数。“MaxIterations”
と正の整数で構成されるコンマ区切りのペアとして指定します。
例:d = eigs (k,σ,MaxIterations, 350)
“SubspaceDimension”
- - - - - -维多部分空間の最大サイズ马克斯(2 * k, 20)
(既定値) |非負の整数维多部分空間の最大サイズ。“SubspaceDimension”
と非負の整数で構成されるコンマ区切りのペアとして指定します。“SubspaceDimension”
値は,実対称問題の場合はk + 1
以上でなければならず,それ以外の場合はk + 2
です。ここでk
は固有値の数です。
推奨値はp > = 2 * k
で,実非対称問題ではp > = 2 * k + 1
です。“SubspaceDimension”
値が指定されない場合,既定のアルゴリズムにより,少なくとも20.
個の兰索斯ベクトルが使用されます。
eigs
が収束しない問題では,“SubspaceDimension”
の値を大きくすることで収束動作が改善される場合があります。ただし,値を大きくしすぎると,メモリの問題が発生することがあります。
例:d = eigs (k,σ,SubspaceDimension, 25)
“StartVector”
- - - - - -初期開始ベクトル初期開始ベクトル。“StartVector”
と数値ベクトルで構成されるコンマ区切りのペアとして指定します。
異なる乱数開始ベクトルを指定する主な理由は,ベクトルの生成に使用する乱数ストリームを制御するためです。
メモ
eigs
は,プライベート乱数ストリームを使用する再現可能な方法で開始ベクトルを選択します。乱数のシードを変更しても,開始ベクトルには影響”しません”。
例:d = eigs (k,σ,StartVector, randn (m, 1))
は,グローバル乱数ストリームから値を取り出す乱数開始ベクトルを使用します。
データ型:双
“FailureTreatment”
- - - - - -収束しない固有値の処理“replacenan”
(既定値) |“保持”
|“下降”
収束しない固有値の処理。“FailureTreatment”
と,“replacenan”
、“保持”
、“下降”
のいずれかのオプションで構成されるコンマ区切りのペアとして指定します。
“FailureTreatment”
の値は,eigs
が収束しない固有値を出力に表示する方法を決定します。
オプション |
出力への影響 |
---|---|
|
収束しない固有値を |
|
収束しない固有値を出力に含めます。 |
|
収束しない固有値を出力から削除します。このオプションを使用すると, |
例:d = eigs (k,σ,“FailureTreatment”、“下降”)
は収束していない固有値を出力から削除します。
データ型:字符
|字符串
“显示”
- - - - - -診断情報の表示の切り替え假
または0
(既定値) |真正的
または1
診断情報の表示の切り替え。“显示”
と,数値または逻辑の1
(真正的
)または0
(假
)で構成されるコンマ区切りのペアとして指定します。計算中に診断情報の表示をオンにするには,値真正的
または1
を指定します。
Afun
のオプション
“IsFunctionSymmetric”
- - - - - -Afun
行列の対称性真正的
または1
|假
または0
Afun
行列の対称性。“IsFunctionSymmetric”
と,数値または逻辑の1
(真正的
)または0
(假
)で構成されるコンマ区切りのペアとして指定します。
このオプションは,Afun
が入力ベクトルに適用する行列が対称であるかどうかを指定します。真正的
または1
の値を指定すると,eigs
が対称行列に専用のアルゴリズムを使用して,実数固有値を返さなければならないことを示します。
* V = B * * D
用のオプション
“IsCholesky”
- - - - - -B
のコレスキー分解の切り替え真正的
または1
|假
または0
B
のコレスキー分解の切り替え。“IsCholesky”
と,数値または逻辑の1
(真正的
)または0
(假
)で構成されるコンマ区切りのペアとして指定します。
このオプションは,呼び出しeigs (A, B, ___)
内の行列B
の入力がR =胆固醇(B)
で実際に生成されたコレスキー因子R
であるかどうかを指定します。
メモ
σ
が“smallestabs”
または数値スカラーの場合は,このオプションを使用しないでください。
“CholeskyPermutation”
- - - - - -コレスキー置換ベクトル1: n
(既定値) |ベクトルコレスキー置換ベクトル。“CholeskyPermutation”
と数値ベクトルで構成されるコンマ区切りのペアとして指定します。スパース行列B
を胆固醇(B (permB permB))
に従って因子分解前に並べ替える場合は,置換ベクトルpermB
を指定します。
また,スパース行列の胆固醇
の3出力の構文を使用して,[R p permB] =胆固醇(B,“矢量”)
でpermB
を直接得ることもできます。
メモ
σ
が“smallestabs”
または数値スカラーの場合は,このオプションを使用しないでください。
“IsSymmetricDefinite”
- - - - - -B
の対称正定性の切り替え真正的
または1
|假
または0
B
の対称正定性の切り替え。“IsSymmetricDefinite”
と,数値または逻辑の1
(真正的
)または0
(假
)で構成されるコンマ区切りのペアとして指定します。B
が対称正定値である,つまり,厳密に正の固有値をもつ対称行列だとわかっている場合は,真正的
または1
を指定します。
B
が対称半正定値(一部の固有値がゼロ)の場合に,“IsSymmetricDefinite”
を真正的
または1
に指定すると,eigs
は強制的に,B
が対称正定値である場合に使用するものと同じ専用のアルゴリズムを使用します。
メモ
このオプションを使用するには,σ
の値が数値または“smallestabs”
でなければなりません。
d
——固有値固有値。列ベクトルとして返されます。d
はσ
の値によって異なる方法で並べ替えられます。
|
出力の並べ替え |
---|---|
|
絶対値の降順 |
|
実数部の降順 |
|
虚数部の降順 |
|
絶対値の昇順 |
|
実数部の昇順 |
|
虚数部の昇順 |
|
虚数部の絶対値の降順 |
V
——固有ベクトル固有ベクトル。行列として返されます。V
の列は,D
の対角上の固有値に対応します。V
の形式と正規化は,入力引数の組み合わせによって異なります。
[V D] = eigs (A)
は,* V = V * D
となるような,一个
の右固有ベクトルを列にもつ行列V
を返します。V
の固有ベクトルは,個々の2ノルムが1となるように正規化されます。
一个
が対称の場合,固有ベクトルV
は正規直交です。
[V D] = eigs (A, B)
は,* V = B * * D
を満たす一般化右固有ベクトルを列にもつ行列としてV
を返します。各固有ベクトルの2ノルムは必ずしも1である必要はありません。
B
が対称正定値の場合,V
の固有ベクトルは,個々のB
ノルムが1になるように正規化されます。一个
も対称の場合,固有ベクトルはB
と正規直交になります。
マシン,MATLAB®のリリース,またはパラメーター(開始ベクトル,部分空間の次元など)が異なる場合,異なる固有ベクトルが出力されることがありますが,数値的にはいずれも正確です。
実数固有ベクトルでは,固有ベクトルの符号を変更できます。
複素数固有ベクトルでは,絶対値が1の任意の複素数を固有ベクトルに乗算できます。
重複固有値では,その固有ベクトルを線形結合によって再結合できます。たとえば,Ax =λxかつ唉=λyの場合,(x + y) =λ(x + y)であるため,x + yも一の固有ベクトルです。
D
——固有値の行列固有値の行列。主対角に固有値をもつ対角行列として返されます。
国旗
——収束フラグ0
|1
収束フラグ。0
または1
として返されます。0
の値はすべての固有値が収束したことを示します。それ以外の場合は,一部の固有値が収束していません。
この収束フラグ出力を使用すると,失敗した収束に関する警告が非表示になります。
eigs
は,複数の実行にわたって再現性を確保するために,プライベート乱数ストリームを使用して既定の開始ベクトルを生成します。eigs
を呼び出す前にrng
を使用して乱数発生器の状態を設定しても,出力に影響しません。
eigs
の使用は,小規模で密な行列でいくつかの固有値を求めるための方法として最も効率的ではありません。このような問題では,eig(全(A))
を使用する方が迅速な場合があります。たとえば,500 行 500 列の行列の固有値を 3 つ求める問題は比較的小規模なので、eig
で容易に処理できます。
指定した行列についてeigs
が収束しない場合は,“SubspaceDimension”
の値を増やすことによって兰索斯基底ベクトルの数を増加させます。補助的な選択肢として,反復の最大回数“MaxIterations”
と収束の許容誤差“宽容”
を調整することも,収束動作に役立つ場合があります。
R2017bでの動作変更
出力の並べ替え順序の変更
eigs
は,σ
の値に従って出力を並べ替えるようになりました。たとえば,eigs (k ' largestabs ')
コマンドは,k
固有値を大きな値から降順に並べて生成します。
以前は,eigs
によって生成される出力の順序は保証されませんでした。
再現性
eigs
を複数回続けて呼び出しても,同じ結果が生成されるようになりました。この動作を変更するには,“StartVector”
をランダムベクトルに設定します。
表示
2
の表示値は,タイミング情報を返さなくなりました。代わりに,eigs
は2
の値を1
の値と同様に扱います。また,“显示”
オプションによって表示されるメッセージも変更されました。新しいメッセージには,丽兹値ではなく,各反復の残差が表示されます。
[1]斯图尔特,G.W."求解大特征问题的Krylov-Schur算法"《矩阵分析与应用》杂志。第23卷,2001年第3期,第601-614页。
[2] Lehoucq, r.b., D.C. Sorenson和c.y ang。ARPACK用户指南。费城,PA: SIAM, 1998。
この関数は分散配列を完全にサポートしています。詳細については,分散配列を使用したMATLAB関数の実行(并行计算工具箱)を参照してください。
次のMATLABコマンドに対応するリンクがクリックされました。
コマンドをMATLABコマンドウィンドウに入力して実行してください。WebブラウザーはMATLABコマンドをサポートしていません。
您也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站表现。其他MathWorks国家网站不适合从您的位置访问。