なお、
の逆行列は
上の例は簡単であるが、 一般の場合に基本操作として使うことが出来る。 それを説明しよう。
とする (つまり掃き出しの過程で対角成分が 0 のブロックが出て来た場合を考える)。
とすると、 であるから、 で、
ピボットが見つからないという障害物を突破できた。
すなわち
( ) |
であることを注意しておく。
( ) の形になれば、 2段階の掃き出しが出来て
少し脇道にそれるが、後のために注意しておくと
である。
より一般の場合、すなわち
で、 の対角成分はすべて 0 であるが、 非対角成分に 0 でないものがある場合を考える。 まずは となる を探す。
found = 0; for (i=k; i<=n; i++) { for (j=k; j<=n; j++) { // j=i+1 からで良いのかな? if (a[i][j] != 0) { found = 1; break; } } } |
の形になる。 ここで は左からかけると、 行と 行を交換することになる置換行列とする。