日記です。
(以下、行列の成分はある固定された体の元であるとします。「体」を知らない場合は特に気にしなくても大丈夫です。)
とあるテキストに、以下のような行列式を求める問題がありました(数値を若干変えています)。
$$ \vmatcc{100}{101}{99}{101}{99}{101}{99}{100}{101}$$
定義通りに計算するのは面倒ですが、基本変形により数値を小さくすることができるという、よくある演習問題ですね。
ただ、この「全ての成分がほぼ$100$」という性質がなんだか気になりまして、この性質を用いて何かしら面白い計算ができないだろうかと考えました。
状況を一般化します。全ての成分が$1$である$n \times n$行列を$U_n$と書くことにします。例えば
$$ U_3 = \matcc 111111111$$
です(
英語版 wikipedia
によると Matrix of ones とか all-ones matrix とか言うらしいです)。考えたい問題は以下のように表せます。
$A$を$n \times n$行列、$k$をスカラーとしたとき、行列式
$$ |A + kU_n|$$
を良い感じに計算せよ。
上で例として挙げた行列式は、
$$ \left| \matcc{0}{1}{-1}{1}{-1}{1}{-1}{0}{1} + 100U_3 \right|$$
と表せますね。
$A$や$k$は任意ですが、イメージとしては$A$は比較的成分が小さい行列、$k$は比較的大きい数です。なので、$A$の成分についてはある程度計算量があってもよく、$k$についての計算量が少なければ"良い感じ"ということにしましょう。
さて、早速結果を述べてしまいましょう。以下では、全ての成分が$1$である$n$次元列ベクトルを$\bm u_n$で表すことにします。例えば
$$ \bm u_3 = \matca 111$$
です。
$A$を$n \times n$行列とし、$A$の第$i$列を$\bm a_i$で表す。$k$をスカラーとするとき、
$$ |A + kU_n| = |A| + k\sum_{i=1}^n \begin{vmatrix}
\bm a_1 & \cdots & \bm a_{i-1} & \bm u_n & \bm a_{i+1} & \cdots & \bm a_n
\end{vmatrix} $$
が成り立つ。
$\Sigma$の中に現れている行列は、$A$の第$i$列を$\bm u_n$に変えた行列です。
まず
$$ |A + kU_n| = \begin{vmatrix}
\bm a_1+k\bm u_n & \cdots & \bm a_u + k\bm u_n
\end{vmatrix}$$
である。これを多重線形性を用いて分解することを考える。すなわち$\bm a_1$と$k \bm u_n$, $\bm a_2$と$k \bm u_n$, ..., $\bm a_n$と$k \bm u_n$からそれぞれ1つずつベクトルを選んで並べてできる行列の行列式を求め、それらを足し合わせればよい。ここで、$k \bm u_n$を2回以上選んだ場合は行列式は$0$となるので、そのような場合を除けば
$$ |A + kU_n| = |A| + \sum_{i=1}^n \begin{vmatrix}
\bm a_1 & \cdots & \bm a_{i-1} & k\bm u_n & \bm a_{i+1} & \cdots & \bm a_n
\end{vmatrix}$$
となり、$k$をくくり出せば
$$ |A + kU_n| = |A| + k\sum_{i=1}^n \begin{vmatrix}
\bm a_1 & \cdots & \bm a_{i-1} & \bm u_n & \bm a_{i+1} & \cdots & \bm a_n
\end{vmatrix}$$
を得る。
$k$に関する計算が1回で済むような形になりましたね。これは"良い感じ"と言ってよいでしょう。
これを用いて冒頭の行列式を計算してみます。
$$ \begin{aligned} \vmatcc{100}{101}{99}{101}{99}{101}{99}{100}{101} &= \vmatcc{0}{1}{-1}{1}{-1}{1}{-1}{0}{1} + 100 \left( \vmatcc{1}{1}{-1}{1}{-1}{1}{1}{0}{1} + \vmatcc{0}{1}{-1}{1}{1}{1}{-1}{1}{1} + \vmatcc{0}{1}{1}{1}{-1}{1}{-1}{0}{1} \right)\\ &= -1 + 100 \cdot (-2-4-3)\\ &= -901 \end{aligned}$$
定義通りに計算しようとすると $100 \times 99 \times 101$ といった大きい数が現れてしまいますが、上の計算ではそれを回避できています。とはいえ、$3 \times 3$ 行列式を4つも計算する必要があるのでそこまで楽ではありませんね。やはり基本変形で計算したほうが効率が良さそうです。
もう1つ例を見てみます。行列式の演習問題としてたまに見かけるやつです。
$n \times n$行列
$$ A = \begin{pmatrix}
b & a & a & \cdots & a \\
a & b & a & \cdots & a \\
a & a & b & \cdots & a \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
a & a & a & \cdots & b
\end{pmatrix}$$
に対し、$|A|$を求める。まず
$$ A = (b-a) E_n + a U_n$$
と表せる。ここで、$E_n$は$n$次の単位行列である。$|(b-a) E_n| = (b-a)^n$ である。また、$(b-a) E_n$の1つの列を$\bm u_n$に変えてできる行列の行列式は $(b-a)^{n-1}$ であることが計算できる。したがって、命題1より
$$ |A| = (b-a)^n + na(b-a)^{n-1} = (b+(n-1)a)(b-a)^{n-1}$$
となる。
あまり悩まず計算できていい感じですね。
他の表し方を考えてみます。まず、列を行に変えても当然成り立ちます。
$A$を$n \times n$行列とし、$A$の第$j$行を$\bm b_j$で表す。$k$をスカラーとするとき、
$$ |A + kU_n| = |A| + k\sum_{i=1}^n \begin{vmatrix}
\bm b_1 \\ \vdots \\ \bm b_{i-1} \\ {}^t\bm u_n \\ \bm b_{i+1} \\ \vdots \\ \bm b_n
\end{vmatrix} $$
が成り立つ。
うーん、見栄えがいまいち。
ここで、$A$の$(i,j)$余因子を$\widetilde{a_{ij}}$とおきます。なお、この記事では余因子を
$$ \widetilde{a_{ij}} = (-1)^{i+j} \cdot (\text{$A$ から第 $i$ 行、第 $j$ 列を除いて得られる行列の行列式})$$
によって定義するとします。命題1において $\begin{vmatrix}
\bm a_1 & \cdots & \bm a_{i-1} & \bm u_n & \bm a_{i+1} & \cdots & \bm a_n
\end{vmatrix}$ を第$i$列で余因子展開することにより、以下が得られます。
$A$を$n \times n$行列、$k$をスカラーとするとき、
$$ |A + kU_n| = |A| + k\sum_{i=1}^n\sum_{j=1}^n \widetilde{a_{ij}} $$
が成り立つ。
すなわち、$|A + kU_n| = |A| + k \cdot (\text{$A$ の全ての余因子の和})$ となります。これはなかなか綺麗な表示ですね。ただ、実際の計算ではやはり実用性はあまりなさそうです。
具体的な計算以外の応用を考えてみます。例えば $A + kU_n$ がいつ正則になるかを考えると、命題3から以下が得られます。
$A$を$n \times n$行列、$k$をスカラーとする。
(1) $A$の余因子の総和が$0$でないとき、$A + kU_n$ が非正則になるような$k$がただ1つ存在する。その$k$とは
$$ k = - \frac{|A|}{\text{$A$ の余因子の総和}}$$
である。
(2) $A$の余因子の総和が$0$であるとき、$A$が正則なら $A+kU_n$ はいつでも正則、$A$が非正則なら $A+kU_n$ はいつでも非正則となる。
正則かつ余因子の総和が$0$であるような行列としては、例えば $A = \matcc 100010301$ があります。余因子の総和が$0$なので、任意の$k$に対して $|A + kU_3| = |A|$ となります。したがって例えば
$$ \vmatcc{101}{100}{100}{100}{101}{100}{103}{100}{101} = 1$$
が得られます。
今のところ単なる遊びという感じですが、何かの役に立つのでしょうか。例えばコンピューターでの計算量が抑えられたり?
ではまた