重要な注意:この課題は正方行列にのみ適用されるため、「行列」という用語を使用するときは常に、正方行列を参照していると想定されます。簡潔にするために、「正方形」の説明は省略します。
バックグラウンド
行列式の計算、線形システムの解決、スカラー値関数のマトリックスへの拡張など、マトリックスに関連する多くの操作は、同様の対角マトリックス(主対角上にない要素が0であるマトリックス)を使用することで簡単になります元の行列(つまり、入力行列A
と対角行列の場合D
、; P
などの可逆行列が存在し、固有値、行列式、トレースなどの重要なプロパティを共有します)。(解くことによって与えられた行列の特性多項式の根の異なる固有値を持つ行列のため、同じ寸法の単位行列である)、対角化は単純です。D = P^(-1) * A * P
D
A
det(A-λI) = 0
λ
I
A
D
は、主対角線上に固有値を持つ行列であり、P
それらの固有値に対応する固有ベクトルから形成された行列です(同じ順序で)。このプロセスはeigendecompositionと呼ばれます。
ただし、固有値が繰り返される行列は、この方法では対角化できません。幸いなことに、任意の行列のヨルダン正規形はかなり簡単に計算でき、通常の対角行列よりも作業するのはそれほど難しくありません。また、固有値が一意である場合、Jordan分解は固有分解と同一であるという優れた特性を備えています。
ヨルダン分解の説明
A
固有値の幾何学的多重度がすべて1である正方行列の場合、ジョーダン分解のプロセスは次のように記述できます。
- みましょう
λ = {λ_1, λ_2, ... λ_n}
の固有値のリストでA
連続して登場する繰り返し固有値で、多様で、。 J
要素がの要素である対角行列をλ
同じ順序で作成します。- 多重度が1より大きい各固有値について、最後を除いて
1
、の主対角の固有値の繰り返しのそれぞれの右側にa を配置しJ
ます。
結果の行列J
は、のジョーダン正規形ですA
(固有値の順序に応じて、特定の行列に対して複数のジョーダン正規形が存在する可能性があります)。
実例
ましょうはA
、次の行列です:
の固有値はA
、多重度で、ですλ = {1, 2, 4, 4}
。これらを対角行列に入れると、次の結果が得られます。
次に、1
繰り返し固有値のそれぞれのうち1つを除くすべての右側にs を配置します。以来4
唯一の繰り返し固有値は、我々は、単一の配置1
最初の4の次に:
これは、Jordanの正規形ですA
(単一のマトリックスに複数の有効なJordan正規形が含まれる可能性がありますが、説明のためにその詳細を詳しく説明します)。
タスク
A
入力として正方行列を指定し、の有効なヨルダン正規形を出力しますA
。
- 入力および出力は、任意の妥当な形式(2D配列/リスト/任意、リスト/配列/列または行ベクトルの任意、組み込み行列データ型など)になります。
- の要素と固有値は、
A
常に範囲内の整数になります[-200, 200]
。 - 簡単にするために、すべての固有値の幾何学的多重度は1になります(したがって、上記のプロセスが成り立ちます)。
A
せいぜい10x10マトリックスと少なくとも2x2マトリックスになります。- 固有値や固有ベクトルを計算したり、固有分解、ヨルダン分解、その他の種類の分解/対角化を実行する組み込み関数は許可されていません。行列演算、行列反転、およびその他の行列組み込みが許可されています。
テストケース
[[1, 0], [0, 1]] -> [[1, 1], [0, 1]]
[[3, 0], [0, 3]] -> [[1, 1], [0, 1]]
[[4, 2, 2], [1, 2, 2],[0, 3, 3]] -> [[6, 0, 0], [0, 3, 0], [0, 0, 0]]
[[42, 48, 40, 64, 64], [41, 47, 31, 58, 42], [-55, -47, -27, -74, -46], [-46, -58, -46, -70, -68], [30, 20, 12, 34, 18]] -> [[10, 0, 0, 0, 0], [0, -18, 0, 0, 0], [0, 0, 6, 1, 0], [0, 0, 0, 6, 1], [0, 0, 0, 0, 6]]
Last@JordanDecomposition@#&
?それとも不正行為ですか?