cdf2rdf
複素対角型行列を実数対角ブロック型に変換
説明
[
は、実数行列 Vnew
,Dnew
] = cdf2rdf(V
,D
)X
の [V,D] = eig(X)
または [V,D] = eigs(X,___)
の出力を複素対角型から実数対角型に変換します。この操作により X
の固有値が D
で表されるように変換され、X*Vnew = Vnew*Dnew
となるように V
が変換されます。
"複素対角型" では、
D
は、主対角上の固有値の複素共役対を持つ対角行列です。対角上の固有値の一部は実数の場合がありますが、複素共役固有値の組は隣接していると仮定されます。
"実数対角型" では、
Dnew
は、対角要素に実固有値を持ち、複素固有値は主対角に沿った 2 行 2 列の実数のブロックとして表されます。
例
複素数対角行列を実数ブロック対角行列に変換
実数行列の固有値と固有ベクトルを計算し、複素共役固有値の組を実数ブロックに変換します。
実数行列の固有値と固有ベクトルを求めます。
X = [1 1 1 1 1 0 4 5 1 1 0 -5 4 1 1 0 0 2 3 1 0 0 -3 -2 1]; [V,D] = eig(X)
V = 5×5 complex
1.0000 + 0.0000i -0.0179 - 0.1351i -0.0179 + 0.1351i 0.1593 - 0.4031i 0.1593 + 0.4031i
0.0000 + 0.0000i 0.0130 - 0.6214i 0.0130 + 0.6214i 0.0704 - 0.0267i 0.0704 + 0.0267i
0.0000 + 0.0000i 0.6363 + 0.0000i 0.6363 + 0.0000i -0.1261 + 0.1032i -0.1261 - 0.1032i
0.0000 + 0.0000i 0.1045 - 0.2087i 0.1045 + 0.2087i -0.2279 - 0.4161i -0.2279 + 0.4161i
0.0000 + 0.0000i -0.1156 + 0.3497i -0.1156 - 0.3497i 0.7449 + 0.0000i 0.7449 + 0.0000i
D = 5×5 complex
1.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.0000 + 0.0000i 3.8801 + 5.1046i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.0000 + 0.0000i 0.0000 + 0.0000i 3.8801 - 5.1046i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 2.1199 + 0.7018i 0.0000 + 0.0000i
0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 2.1199 - 0.7018i
D
は 1 つの実数固有値と 2 組の複素共役固有値を含みます。
Dnew
を実数ブロック対角型にし、Vnew
が X*Vnew = Vnew*Dnew
を満たすように V
と D
を変換します。
[Vnew,Dnew] = cdf2rdf(V,D)
Vnew = 5×5
1.0000 -0.0253 -0.1911 0.2253 -0.5701
0 0.0184 -0.8789 0.0996 -0.0378
0 0.8999 0 -0.1784 0.1459
0 0.1478 -0.2951 -0.3222 -0.5885
0 -0.1634 0.4946 1.0534 0
Dnew = 5×5
1.0000 0 0 0 0
0 3.8801 5.1046 0 0
0 -5.1046 3.8801 0 0
0 0 0 2.1199 0.7018
0 0 0 -0.7018 2.1199
Dnew
にも実数固有値が含まれますが、複素共役固有値は、2 行 2 列のブロックで置き換えられます。
入力引数
V
— 右固有ベクトル行列
行列
右固有ベクトル行列。[V,D] = eig(X)
または [V,D] = eigs(X,___)
により返される行列として指定します。
データ型: single
| double
複素数のサポート: あり
D
— 対角固有値の行列
行列
対角固有値の行列。[V,D] = eig(X)
または [V,D] = eigs(X,___)
により返される行列として指定します。D
の対角上の固有値の一部は実数の場合がありますが、複素共役固有値の組は隣接していると仮定されます。
eigs
は固有値と固有ベクトルのサブセットを返し、要求された固有値の数には、複素共役対の半分が含まれる可能性があります。cdf2rdf
は、D
入力に不完全な複素共役対が含まれる場合エラーを返します。
データ型: single
| double
複素数のサポート: あり
出力引数
Vnew
— 変換された右固有ベクトル行列
行列
変換された右固有ベクトル行列。行列として返されます。V
の固有ベクトルは、X*Vnew = Vnew*Dnew
で保持されるように変換されます。入力固有ベクトル行列 V
がユニタリの場合、Vnew
も同じくユニタリです。Vnew
の個々の列は X
の固有ベクトルではなくなりますが、Dnew
の 2 行 2 列のブロックに関係付けられる Vnew
のベクトルの各組は、対応する不変ベクトルになります。
Dnew
— 変換された対角固有値の行列
行列
変換された対角固有値の行列。ブロック対角実数行列として返されます。D
の複素共役固有値の組は、Dnew
の対角に沿った 2 行 2 列の実数ブロックに置き換えらえます。
拡張機能
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
この関数は GPU 配列を完全にサポートしています。詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2006a より前に導入R2021a: アルゴリズムの改善により丸め誤差が減少
すべての入力行列のアルゴリズムが改善され、計算時の浮動小数点の丸め誤差が小さくなりました。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)