『楽しもう!数学を』

遠山啓の古典的名著『数学入門(上下二二冊)』を読んで,実は最近数学がマイブームである。社会人は学生と違い読書はお気楽この上ない。そこで河添健・林邦彦共著の『楽しもう!数学を』という本も読んでみた。私は数学ができたわけではないし,昔の高等学校教程『数学ⅡB』までしかきちんと履修していないが,好きである。また待ち行列計算やら信頼性計算やら回帰分析やらを仕事のなかで叩き込まれていて,少しは数字にも親しんでいるのだ。専門的な数学書にはちょっと手がでないけれど,この類いの通俗数学本は読んで面白い。

『楽しもう!数学を』は,生活のなかで出くわしそうな問題が章のはじめに提示され,それを数学的に解く過程で三角関数や微積分,確率・統計の基本を解説するという流れになっている。「斜度 10° なら直滑降で滑れる太郎君は,30° の斜面に遭遇したとき斜度 10° で滑り降りるには,さて何度斜めに行けばよいでしょう?」ここから三角関数が語られるという寸法。湯の冷める 1 時間の様子の観察から,微分方程式をたてて 2 時間後の湯の温度を求めるなど,数理バリバリのひとにはアホらしいかもしれないけれど,私はなるほどと感心してしまった。

なかでもとりわけ「へぇー」と感嘆してしまった行列の問題を紹介しておく。式が勝手に考えてくれるという数学のすごさを思い知る。

【問題】
4 つの島からなる村には,航路がA島→B島 1,A島→C島 1,A島→A島(遊覧して戻ってくる?) 1,B島→C島 1,B島→D島 1,D島→C島 1,C島→A島 1,の計 7 つある。予算がついたので 1 航路を新設することになったが,さて次の 3 つのうちどれが理にかなった選択でしょう?(1)A島→D島,(2)C島→B島,(3)D島→B島。
【答え】
(2)C島→B島。

答えのきちんとした解説は本書を読んでいただくこととする。ここではせっかくなので,インストールしたばかりの数値計算ソフトウェア Octave を使って計算した様子を貼付しておく。Octave をコマンドラインから起動する。"beatrice" というのは私の FreeBSD マシンのホスト名である。入力する内容には下線を付してある。

beatrice:/home/isao[1001] % octave
GNU Octave, version 2.1.71 (i386-portbld-freebsd5.4).
Copyright (C) 2005 John W. Eaton.
This is free software; see the source code for copying conditions.
There is ABSOLUTELY NO WARRANTY; not even for MERCHANTIBILITY or
FITNESS FOR A PARTICULAR PURPOSE. For details, type `warranty'.

Additional information about Octave is available at http://www.octave.org.

Please contribute if you find this software useful.
For more information, visit http://www.octave.org/help-wanted.html

Report bugs to (but first, please read
http://www.octave.org/bugs.html to learn how to write a helpful report).

octave-2.1.71:1>

まず,出発島→目的島の経路をすべて挙げ,航路が存在する場合 1 を立てて 4 × 4 の行列式で表す。これはそのまま,1 回の乗船で行ける経路状況を示す。すなわち,M=(A島→A島 1, A島→B島 1, A島→C島 1, A島→D島 0, ..., D島→A島 0, D島→B島 0, D島→C島 1, D島→D島 0)。

octave-2.1.71:1> m = [1 1 1 0; 0 0 1 1; 1 0 0 0; 0 0 1 0]
m =

1 1 1 0
0 0 1 1
1 0 0 0
0 0 1 0

つぎに,M2(M の二乗)の行列演算を行う。これで,A島→B島に引き続きB島→C島に渡るなどの経路が明らかになるところがミソである。つまり M+M2 を行うと,直接行く経路と 2 つの航路を乗り継ぐ経路の状況がわかる。現在は 2 回乗り継いでも行けない経路が 4 つあることがわかる。

octave-2.1.71:2> m+m^2
ans =

3 2 3 1
1 0 2 1
2 1 1 0
1 0 1 0

ここで,(1)〜(3)それぞれの場合について同様の計算結果をみて,2 つの航路を乗り継いでも経路がまだ 0 のものを評価してみる。

(1)A島→D島を追加した結果では,行けない経路が 3 つ残る。

octave-2.1.71:3> # case 1: add A -> D
octave-2.1.71:3> a = [1 1 1 1; 0 0 1 1; 1 0 0 0; 0 0 1 0]
a =

1 1 1 1
0 0 1 1
1 0 0 0
0 0 1 0

octave-2.1.71:4> a+a^2
ans =

3 2 4 3
1 0 2 1
2 1 1 1
1 0 1 0

(2)C島→B島追加では 1 つ残る。

octave-2.1.71:5> # case 2: add C -> B
octave-2.1.71:5> b = [1 1 1 0; 0 0 1 1; 1 1 0 0; 0 0 1 0]
b =

1 1 1 0
0 0 1 1
1 1 0 0
0 0 1 0

octave-2.1.71:6> b+b^2
ans =

3 3 3 1
1 1 2 1
2 2 2 1
1 1 1 0

(3)D島→B島追加では 1 つ残る。

octave-2.1.71:7> # case 3: add D -> B
octave-2.1.71:7> c = [1 1 1 0; 0 0 1 1; 1 0 0 0; 0 1 1 0]
c =

1 1 1 0
0 0 1 1
1 0 0 0
0 1 1 0

octave-2.1.71:8> c+c^2
ans =

3 2 3 1
1 1 2 1
2 1 1 0
1 1 2 1

(2)も(3)も存在しない経路が 1 つずつで同じだが,(2)の場合は同じ島への経路(D島→D島)なので,なくても村民は困らないと考えられる。よって答えは(2)となる。どうです。なかなか使えそうではありませんか。