概要
「はじめに」から引用する。
本書は「線形代数は有限個のデータを扱う数学である」という視点に立脚して, 線形代数の入門的な事柄からはじめ,いくつかの有用な応用例あるいは応用の原理が書いてある.
本書に関する著者の Web ページ(www.araiweb.matrix.jp)がある。
厚い本
この本は厚い。552 ページもある(本文+さくいんは 537 ページ)。線形代数の厚い本というと、 邦書では 424 ページある長谷川浩司の「線型代数」(日本評論社) が思い浮かぶが、それより 100 ページ以上多い。これよりページ数で上回るのは 448 ページの加藤文元監修「チャート式シリーズ 大学教養 線形代数」(数研出版)や 458 ページの松坂和夫 「線型代数入門」(岩波書店)などがあるが、内容はわたしにはわからない。 ちなみに、線形代数の教科書としてよく引用される佐武一郎の「線型代数学」(裳華房)は 354 ページ、 齋藤正彦の「線型代数入門」(東京大学出版会)は 292 ページである。 もっというと、サージ・ラングの「線形代数学」の邦訳は(文庫本で)上巻 288 ページ + 下巻272 ページ、 ギルバート・ストラングの「線形代数イントロダクション」の邦訳は 640 ページある。
これだけのページ数で 4000 円はお買い得だと思うのだが、今は手に入れるのが難しいようだ。
なお、2026-03-27 現在は、Kindle 版がある(評者未見)。
厚いということは内容が豊富だということだ。第16章の「特異値分解とその応用」などは、現在その重要性がとみに増していると思う。
本書に基づいて特異値分解を見てみよう。pp.298-299 に基づき説明する。
`A` を `(M, N) ` 行列 とし `M ge N` とする。また、`A^**` を `A` の共役、 `r = "rank"(A)` とする。 `A^**A` の重複度まで込めた 0 でない固有値を `lambda_1, cdots, lambda_r` とする。ここで、次の値を導入する。
この `sigma_1, cdots, sigma_r` を `A` の特異値という。
また、`sigma_1, cdots, sigma_N` を `A` の特異値とする。このとき、 `M` 次ユニタリ行列 `U` と `N` 次ユニタリ行列 `V` が存在し、次の形に書ける。
この等式を `A` の特異値標準化といい、右辺を `A` の特異値標準形という。特異値標準形を与えるユニタリ行列 `U, V` は一意ではない。
以上は `M ge N` の場合だが、`N ge M` の場合も同様の結果が得られる。`M ge N` の場合は、次の等式が特異値標準化であり、右辺が特異値標準形である。
`U` と `V` の定義は同じである。
`A` を `(M, N)` 行列とし、`L = min(M, N)` とする。また `sigma_1, cdots, sigma_r` を `A` の特異値とする。このとき、`bbbK^M` の正規直交基底 `{bbu_1, cdots, bbu_N}` と `bbbK^N` の正規直交基底 `{bbv_1, cdots, bbv_M}` が存在し、次が成り立つ。この等式を特異値分解という。
本書では、行列 `A` が正方行列の場合はもちろん、矩形行列であっても、また縦長か横長かにかかわらず、特異値分解が定義されている。これはありがたい。他の文献では、 `A` が正方行列の場合のみ書かれていたり `A` が正方行列か縦長の矩形行列である場合のみ言及されていることがある。またそもそも行列の縦横について全く触れていないものもあったりする。
なお、ここでの特異値分解の形式は `U` や `V` をユニタリ行列にとっているので、いわゆる Full SVD と呼ばれる形式である。
次の問題をやってみよう。p.303 にある次の問題である。
問題 16.2 次の行列の特異値標準形と特異値分解を求めよ.
(1) `((1,0,0,1),(1,0,0,1),(0,1,1,0),(1,0,0,1),(1,0,0,1))` (2) `((4,11,14),(8,7,-2))` (3) `((1,-1),(-2,2),(2,-2))`
まず、(1) からやってみよう。問題の行列を `A` とおく。
`A^**A = ((1,1,0,1,1),(0,0,1,0,0),(0,0,1,0,0),(1,1,0,1,1))((1,0,0,1),(1,0,0,1),(0,1,1,0),(1,0,0,1),(1,0,0,1)) = ((4,0,0,4),(0,1,1,0),(0,1,1,0),(4,0,0,4))`
私はまずこの計算で、2行めと3行目を `(0, 4, 4, 0)` としてしまった。バカだねえ。
さてこの行列の固有値を求めよう。固有方程式を `Delta_(A^**A)` とし、この固有方程式を解く。そのためには、第1列に関して余因子展開する。
`Delta_(A^**A) =|(x-4,0,0,-4),(0,x-1,-1,0),(0,-1,x-1,0),(-4,0,0,x-4)| = (x-4)|(x-1,-1,0),(-1,x-1,0),(0,0,x-4)| + 4|(0,0,-4),(x-1,-1,0),(-1,x-1,0)|`
右辺をさらに計算する。
`Delta_(A^**A) = (x-4)^2((x-1)^2-1) -16((x-1)^2-1)= x^2(x-2)(x-8)`
故に、固有値は大きい方から重複を込めて、8, 2, 0, 0 である。したがって、特異値は大きい方から重複を込めて `2sqrt(2)`, `sqrt(2)`, 0, 0 である。
固有値 8 に関する固有空間
固有値 8 に関する固有空間 `V_8` の正規直交基底を求める。このために、行の階差変形を行なう。最初は第1行 * 1/4 を第1行に置き換え、と第4行に(置き換え前の)第1行を加える。
`((4,0,0,-4),(0,7,-1,0),(0,-1,7,0),(-4,0,0,4)) rarr ((1,0,0,-1),(0,7,-1,0),(0,-1,7,0),(0,0,0,0))`
次に第2行 * 1/7 を第2行に置き換え、と第3行に(置き換え後の)第2行 * 7を加える。
`((1,0,0,-1),(0,7,-1,0),(0,-1,7,0),(0,0,0,0)) rarr ((1,0,0,-1),(0,1,-1//7,0),(0,0,48//7,0),(0,0,0,0))`
これから、基底は1つあり、たとえば、`u` を任意の実数として `x_1 = u, x_2 = 0, x_3 = 0, x_4 = u` とできる。したがって正規直交ベクトルを `bbv_1` とすると、次がいえる。
`bbv_1 = 1/sqrt(2)((1),(0),(0),(1))`
固有値 2 に関する固有空間
固有値 2 に関する固有空間 `V_2` の正規直交基底を求める。このために、行の階差変形を行なう。最初は第1行 * -1/2 で第1行を置き換え、第4行に(置き換え後の)第1行*4を加える。
`((-2,0,0,-4),(0,1,-1,0),(0,-1,1,0),(-4,0,0,-2)) rarr ((1,0,0,2),(0,1,-1,0),(0,-1,1,0),(0,0,0,6))`
次に第3行に第2行に加え、第3行に置き換える。
`((1,0,0,2),(0,1,-1,0),(0,-1,1,0),(0,0,0,6)) rarr ((1,0,0,2),(0,1,-1,0),(0,0,0,0),(0,0,0,6))`
これから、基底は1つあり、たとえば、`u` を任意の実数として `x_1 = 0, x_2 = u, x_3 = u, x_4 = 0` とできる。したがって正規直交ベクトルを `bbv_2` とすると、次がいえる。
`bbv_2 = 1/sqrt(2)((0),(1),(1),(0))`
固有値 0 に関する固有空間
固有値 2 に関する固有空間 `V_0` の正規直交基底を求める。このために、行の階差変形を行なう。最初は第1行 * -1/4 で第1行を置き換え、第4行に(置き換え後の)第1行*4を加える。
`((-4,0,0,-4),(0,-1,-1,0),(0,-1,-1,0),(-4,0,0,-4)) rarr ((1,0,0,1),(0,-1,-1,0),(0,-1,-1,0),(0,0,0,0))`
次に第2行 * -1/2 で第2行を置き換え、第3行に(置き換え後の)第2行を加え置き換える。
`((1,0,0,1),(0,-1,-1,0),(0,-1,-1,0),(0,0,0,0)) rarr ((1,0,0,1),(0,1,1,0),(0,0,0,0),(0,0,0,0))`
これから、基底は2つあり、たとえば、`u, v` を任意の実数として `x_1 = u, x_2 = v, x_3 = -v, x_4 = u` とできる。したがって正規直交ベクトルを `bbv_3, bbv_4` とすると、次がいえる。
`bbv_3 = 1/sqrt(2)((1),(0),(0),(-1)), quad bbv_4 = 1/sqrt(2)((0),(1),(-1),(0))`
以上で `bbv_i` の計算ができた。次に、`bbu_1, bbu_2` を計算する。
`bbu_1 = 1/sqrt(8) A bbv_1 = 1/sqrt(8) ((1,0,0,1),(1,0,0,1),(0,1,1,0),(1,0,0,1),(1,0,0,1)) 1/sqrt(2)((1),(0),(0),(1)) = 1/4 ((2),(2),(0),(2),(2)) = 1/2 ((1),(1),(0),(1),(1))`
`bbu_2 = 1/sqrt(2) A bbv_2 = 1/sqrt(2) ((1,0,0,1),(1,0,0,1),(0,1,1,0),(1,0,0,1),(1,0,0,1)) 1/sqrt(2)((0),(1),(1),(0))= 1/2 ((0),(0),(2),(0),(0)) = ((0),(0),(1),(0),(0))`
のこりの `bbu_3, bbu_4,bbu_5` は、`bbu_j` が正規ベクトルで互いに直交するように選ぶ。たとえば、`bbu_3` として、`bbu_1` と `x_1` と `x_2` が、`x_4` と `x_5` が打ち消すように選んでみる。 `bbu_4, bbu_5` は次のようにしたらいいだろうか。
`bbu_3 = 1/2 ((1),(-1),(0),(1),(-1)), bbu_4 = 1/sqrt(2) ((1),(0),(0),(-1),(0)), bbu_5 = 1/sqrt(2) ((0),(1),(0),(0),(-1)),`
では、`U =1/2((1,0,1,sqrt(2),0),(1,0,-1,0,sqrt(2)),(0,2,0,0,0),(1,0,1,-sqrt(2),0),(1,0,-1,0,-sqrt(2))), V = 1/sqrt(2)((1,0,1,0),(0,1,0,1),(0,1,0,-1),(1,0,-1,0))` として、 `U^**AV` を作ってみる。
`U^**AV=1/2((1,1,0,1,1),(0,0,2,0,0),(1,-1,0,1,-1),(sqrt(2),0,0,-sqrt(2),0),(0,sqrt(2),0,0,-sqrt(2))) ((1,0,0,1),(1,0,0,1),(0,1,1,0),(1,0,0,1),(1,0,0,1)) V = 1/2 ((4,0,0,4),(0,2,2,0),(0,0,0,0),(0,0,0,0),(0,0,0,0)) 1/sqrt(2)((1,0,1,0),(0,1,0,1),(0,1,0,-1),(1,0,-1,0))`
さらに計算する。
`U^**AV= 1/sqrt(2)((2,0,0,2),(0,1,1,0),(0,0,0,0),(0,0,0,0),(0,0,0,0))((1,0,1,0),(0,1,0,1),(0,1,0,-1),(1,0,-1,0)) = ((2sqrt(2),0,0,0),(0,sqrt(2),0,0),(0,0,0,0),(0,0,0,0),(0,0,0,0))`
たしかに、左辺を計算した結果が右辺の特異値標準形になっている。凄い。
これに気をよくして、特異値分解もやってみた。この場合は `L = 4` だが、`sigma_3=sigma_4 = 0` なので、実質的には次のとおりだ。
`A = sigma_1 bbu_1 bbv_1^** + sigma_2 bbu_2 bbv_2^**`
ではこの右辺を計算してみよう。
`sigma_1 bbu_1 bbv_1^** + sigma_2 bbu_2 bbv_2^** = 2sqrt(2) * 1/2 ((1),(1),(0),(1),(1)) * 1/sqrt(2)((1, 0, 0, 1)) + sqrt(2) * ((0),(0),(1),(0),(0)) *1/sqrt(2)((0,1,1,0))`
これを計算すればいい。
`((1,0,0,1),(1,0,0,1),(0,0,0,0),(1,0,0,1),(1,0,0,1)) + ((0,0,0,0),(0,0,0,0),(0,1,1,0),(0,0,0,0),(0,0,0,0)) = ((1,0,0,1),(1,0,0,1),(0,1,1,0),(1,0,0,1),(1,0,0,1))`
見事に `A` になっている。恐れ入った。
なお、本書の解答 p.510 を見ると、`bbu_4 = ((-1/sqrt(2)),(1/sqrt(2)),(0),(0),(0)), quad bbu_5=((0),(0),(0),(-1/sqrt(2)),(1/sqrt(2)))` となっているが、 これでは、`bbu_1, bbu_2,bbu_3,bbu_4,bbu_5` は `bbbK^5` の正規直交基底にはならないのではないか。具体的には、`(bbu_3, bbu_4) = -1/sqrt(2), (bbu_3, bbu_5) = -1/sqrt(2)` であり、 これは `bbu_3` と `bbu_4` は直交しないこと、`bbu_3` と `bbu_5` は直交しないことを表している。
次に (2) をやってみよう。問題の行列を `A` とおく。
`A^**A = ((4,8),(11,7),(14,-2))((4,11,14),(8,7,-2)) = ((80,100,40),(100,170,140),(40,140,200))`
この `A^**A` の固有値を求めてみよう。固有方程式を導くために次の行列式を計算する。
`|(x-80,-100,-40),(-100,x-170,-140),(-40,-140,x-200)| = (x-80)|(x-170,-140),(-140,x-200)| + 100 |(-100,-40),(-140,x-200)| - 40|(-100,-40),(x-170,-140)|`
`=(x-80){(x-170)(x-200) - 140*140} + 100{-100(x-200) - 5600} -40{14000 +40(x-170)}`
`=(x-80)(x^2 - 370x + 14400) + 100(-100x + 14400) -40(40x-7200)`
`=x^3 - 450x^2 +32400 x`
固有値を計算するために、この右辺を計算した結果が 0 に等しいとおく。
`x(x-90)(x-360)=0` よって、固有値は `x=360, 90, 0` となる。それぞれに対応する固有ベクトルを計算する。
固有値 360 に関する固有ベクトル
基本変形をする
`((280,-100,-40),(-100,190,-140),(-40,-140,160)) rarr ((0,-1080,1080),(0,540,-540),(-40,-140,160)) rarr ((0,0,0),(0,540,-540),(-40,-140,160))`
これによって、固有ベクトルの一つは、`((1),(2),(2))` で与えられることがわかる。
固有値 90 に関する固有ベクトル
基本変形をする
`((10,-100,-40),(-100,-80,-140),(-40,-140,-110)) rarr ((10,-100,-40),(0,-1080,-540),(0,-540,270)) rarr ((10,-100,-40),(0,-1080,-540),(0,0,0))`
これによって、固有ベクトルの一つは、`((2),(1),(-2))` で与えられることがわかる。
固有値 0 に関する固有ベクトル
基本変形をする
`((-80,-100,-40),(-100,-170,-140),(-40,-140,-200)) rarr ((0,180,360),(0,180,360),(-40,-140,-200)) rarr ((0,0,0),(0,180,360),(-40,-140,-200))`
これによって、固有ベクトルの一つは、`((2),(-2),(1))` で与えられることがわかる。
(続く)
最後に (3) をやってみよう。問題の行列を `A` とおく。
`A^**A = ((1,-2,2),(-1,2,-2))((1,-1),(-2,2),(2,-2)) = ((9,-9),(-9,9))`
この `A^**A` の固有値を求めてみよう。固有方程式を導くために次の行列式を計算する。
`|(x-9,9),(9,x-9)| = (x-9)^2-81 = x(x-18)`
この式が 0 に等しくなる `x` の値が固有値だ。`x = 18, 0` である。
固有値 `18` に関する固有ベクトルは `1/sqrt(2) ((1),(-1))` であり、固有値 `0` に関する固有ベクトルは `1/sqrt(2) ((1),(1))` となる。 (続く)
索引
内容が多いのは評価できるが、残念ながら索引が弱いと思う。たとえば、「転置」、「共役」、「クラメルの公式」が索引にはないが、前2者は、本文 p.26 に、「クラメルの公式」は本文 p.104 にはある。
書誌情報
| 書名 | 線形代数 基礎と応用 |
| 著者 | 新井 仁之 |
| 発行日 | 2006 年 5 月 25 日 第1刷発行 |
| 発行元 | 日本評論社 |
| 定価 | 4000 円(本体) |
| サイズ | A5 判 552 ページ |
| ISBN | 4-535-78519-8 |
| 備考 | 草加市立図書館で借りて読む |