ラプラス展開

線型代数においてピエール・シモン・ラプラスにちなんで名付けられたラプラス展開は、コファクター展開も呼ばれ、 n × n行列B行列式を、Bのいくつかの( n − 1) × ( n − 1)部分行列の行列式である小行列式の重み付き和として表したものです。具体的には、すべてのiについて、i行目のラプラス展開は次の等式となります。ここで、 はBのi目とj列目の要素であり、 はBのi行目とj列目を削除することによって得られる部分行列の行列式です。同様に、j列目のラプラス展開は次の等式となります(行列とその転置の行列式は同じなので、それぞれの恒等式は他方を意味します)。

上記の合計における係数は、 Bにおける余因子と呼ばれます。

ラプラス展開は、例えば行列の大きさに関する再帰的な計算を可能にするなど、証明においてしばしば有用です。また、その単純さ、そして行列式を考察し計算する複数の方法の一つとして、教育的にも興味深いものです。大きな行列の場合、ガウス消去法と比較すると、計算効率が急速に低下します

マトリックスを考えてみましょう

この行列の行列式は、任意の行または列に沿ったラプラス展開を用いて計算できます。例えば、最初の行に沿った展開は次のようになります。

2列目に沿ったラプラス展開でも同じ結果が得られます。

結果が正しいことは簡単に確認できます。行列は、第 1 列と第 3 列の合計が第 2 列の 2 倍であるため特異であり、したがって行列式はゼロです。

証拠

n × n行列であり、わかりやすくするために、その小行列を構成する要素を次のように ラベル付けする。

のために

因数とする展開式の項を考えてみましょう。それぞれの項は次のようになります。

となるような何らかの順列 τS nに対してτと同じマイナーエントリを選択する一意かつ明らかに関連のある順列が与えられる。同様に、 σの各選択は対応するτ を決定する。すなわち、対応はの間の一対一対応である。コーシーの2行記法を用いると、の間の明示的な関係は次のように書ける。

ここで、はサイクルの一時的な略記法です。この演算は、jより大きいすべてのインデックスをデクリメントし、すべてのインデックスが集合{1,2,...,n-1}に収まるようにします。

順列τはσから以下のように導出できるおよびについてで定義する。すると は以下のように表される 。

さて、最初に適用してから適用する操作は(AをBの前に適用することは、2行表記でAの逆をBの上行に適用することと同じであることに注意してください)

ここで、 は の一時的な省略表記です

最初に適用され、次に適用される操作

上記の2つは等しいので、

ここでは の逆数であり、は です

したがって

2つのサイクルはそれぞれ転置書き表すことができるので

そして、写像は単射なので、

そこから結果が導かれる。同様に、外側の和の添え字を に置き換えても結果は成り立つ[1]

補小行列式による行列式のラプラス展開

ラプラスの余因子展開は次のように一般化できます。

マトリックスを考えてみましょう

この行列の行列式は、最初の2行に沿ってラプラスの余因子展開を用いることで、以下のように計算できます。まず、{1, 2, 3, 4}には2つの異なる数の集合が6つあることに注意してください。つまり、{1, 2, 3, 4}を前述の集合とします。

相補的補因子を次のように定義することにより

そしてそれらの順列の符号は

Aの行列式は次のように表される。

ここでは の補集合です

明示的な例では、

上記のように、結果が正しいことは簡単に確認できます。行列は、第 1 列と第 3 列の合計が第 2 列の 2 倍であるため特異であり、したがって行列式はゼロです。

一般的な声明

n × n行列と、{ 1, 2, ... , n }のk要素部分集合の集合をその要素とする。すると、 の行列式は、によって識別されるk行に沿って次のように展開できる

ここで、 はによって決定される置換の符号であり、 に等しくの行と列から を削除することによって得られるの平方小数点であり( の補集合と呼ばれる)は と定義されそれぞれと の補集合です

これは、 のときの上記の定理と一致します。任意の固定されたk列に対しても同じことが当てはまります

計算コスト

ラプラス展開は高次元行列に対しては計算効率が悪く、大文字小文字表記では計算時間がO ( n !)となります。一方、 LU分解のように三角行列への分解を用いると、計算時間がO ( n 3 )の行列式を得ることができます[2]以下のPythonコードはラプラス展開を実装しています。

def determinant ( M ): # 再帰関数の基本ケース: 1x1行列if len ( M ) == 1 : return M [ 0 ][ 0 ]         total  =  0  for  column ,  element  in  enumerate ( M [ 0 ]):  # 最初の行と現在の列を除外します。 K  =  [ x [: column ]  +  x [ column  +  1  :]  for  x  in  M [ 1 :]]  s  =  1  if  column  %  2  ==  0  else  - 1  total  +=  s  *  element  *  determinant ( K )  return  total

参照

参考文献

  1. ^ ウォルター, ダン; タイタン, アレックス (1949). 「初等問題834」.アメリカ数学月刊. 56 (6). アメリカ数学会誌: 409. doi :10.2307/2306289. JSTOR  2306289.
  2. ^ Stoer Bulirsch: 数値数学入門
  • デイヴィッド・プール:線形代数 現代入門 センゲージ・ラーニング 2005年ISBN 0-534-99845-3、pp. 265–267(オンライン限定コピー、p. 265、Google Books
  • ハーヴェイ・E・ローズ『線形代数:純粋数学的アプローチ』Springer 2002年、ISBN 3-7643-6905-1、pp. 57–60(限定オンラインコピー、p. 57、Googleブックス
Retrieved from "https://en.wikipedia.org/w/index.php?title=Laplace_expansion&oldid=1325325296"