理解するってどういうことだろう?


「1,3,5,…と奇数の和をどこかで中断する場合を考える。例えば、1 + 3 = 4 , 1 + 3 + 5 = 9 , 1 + 3 + 5 + 7 = 16 , …。不思議なことに、それらはいつも平方数(自然数の2乗)になっている。」


↑を証明せよというのが、高校数学でΣの計算を学んだときに書いてあったと思う。


■ 理解のステップ1) Σの計算


よくは覚えていないが、解答はたぶん次のようなものだったと思う。なお、以下の"^" はべき乗を意味するとする。


S(n) = 1 + 2 + … + n = n(n+1)/2 全体を2倍して
2S(n) = 2 + 4 + … + 2n = n(n+1)


いま求める関数を g(n) = 1 + 3 + … + (2n -1) とおくと、
g(n) = S(2n) - 2S(n) = 2n(2n+1)/2 - n(n+1) = n^2
で確かにn(整数)の2乗になっている。


これをせずに、間違って
g(n) = 1 + 3 + … + (2n - 1) + (2n + 1)
とおいたりしたら、g(n) = S(2n+1) - 2S(n+1) = ... = n^2 + 2n + 1 = (n+1)^2
とかなって、余計な仕事が増える。


はたまた、
g(n) = 1 + 3 + … + m
とかおいて、これを計算するのに、g(n) から 2 + 4 + … + (n - 1) を引いたものだ、とか計算しようとしたら、それこそ大変なことになるだろう。


こういうことをしてしまうと、すこぶる大変になることを問題集の解答は教えてくやしない。問題集の解答はシンプルで、かつ最短距離である。


では何故、g(n)を上の最初の解答のように定義したのかというと、奇数の和g(n)がn^2と表わせることが事前にわかっていたので、まず小さなnで試したのだ。


たとえば3項目まで奇数の和を書き出す。1 + 3 + 5 = 3^2 で、5というのは、2×3 - 1だから、g(n)がn^2で表わされるなら、最後の項は(2n - 1)の形でなければならないと"決めつけて"、gをg(n) = 1 + 3 + … + (2n -1)とおいた。これなら、g(n)の一般項が n^2 になるはずだから、テキトーに一般項を求めさえすればこのシンプルな形になることは"事前に"わかっていた。


「偶数なら2n、奇数と言えば2n + 1と置け」なんて馬鹿な参考書には書いてあるけど、奇数だから"2n + 1"と置いたほうが良いとは限らないことは上の解答のプロセスを見てもわかる。正確には、「奇数を2n + aと置くなら、aはその問題を見て適切に決めるべき」だろう。


つまり、証明問題を解くときには、その証明内容は正しいものだと仮定して、正しいならばこうなるはず!と頭のなかで考えている。その考えが問題を解く上では重要なのだけど、しかし、これは理解とは違うと思う。なぜなら、端っから正しいと頭のなかで信じている時点で疑ってかかるプロセスが欠落している。


■ 理解のステップ2) 数学的帰納法


そのあと、数学的帰納法を学んだときにまた証明問題としてこの問題に出くわす。数学的帰納法なら証明は簡単だ。


1) 1 = 1^2は明らか。
2) f(n) = 1 + 3 + … + (2n-1) とおいて、f(n + 1) = 1 + 3 + … + (2n-1) + (2n+1)。
f(n) = n^2 が成りたつと仮定すると、f(n + 1) = n^2 + 2n + 1 = (n + 1)^2 も成り立つので(以下略)


うーん。簡単だが、これでは、私は何かわかった気にならない。明らかに理解するということと証明するということとは違う。証明することによって理解した気になる人もいるかも知れない。証明する過程で理解が得られることもあるかも知れない。誰かに説明したりする過程で自分の理解が促進されて腑に落ちるかも知れない。


しかし数学的帰納法はどうも証明した気にならない。数学的帰納法再帰的プログラミングとも似ていて、その振る舞いを頭のなかでイメージしにくい。再帰で書くとエレガントに書けることがあるのと同様に、数学的帰納法だとエレガントに証明できることはあるのだけども。


■ 理解のステップ3) 図形的解釈


次のように図形的に解釈してはどうだろうか。平方数だから正方形の面積をイメージして、2cm×2cm = 4cm^2の面積をもつ正方形があるとしよう。


□□
□□


この外周を塗り固めて、3cm×3cm = 9 cm^2の正方形を作ることを考えよう。


□□■
□□■
■■■


■の部分はどれだけあるかというと、もとの1辺である2cmの長さのものが2つと、右下の角の■がひとつだ。2cm×2cm + 1cm^2 = 5cm^2。元の1辺がxだとすると足された部分は2x + 1。おお、xが自然数なら、2x + 1は奇数ではないか。


つまり、1辺がxの正方形(x^2)に 2x + 1の外周を足すと、それよりひとまわり大きい1辺がx+1の正方形 (x+1)^2 ができあがるわけだ。


証明としては多少、中途半端だが、こちらのほうが直観的ではある。説明としてはわかりやすいかも知れない。しかし、高校生のときの自分を振り返って考えるに、こんな説明では全く納得がいかなかった。


■ 理解のステップ4) 何故その問題が出てきたのかを考える。


当時の私(高校生)が思ったのは、「そもそもこの問題を考えた誰か(誰だかは知らん)は、どうやってこの問題を考えたのだ?この整数の性質はもっと別の何かから導き出したのではないのか?」ということだった。


私はそういうときいつも決まって適当に物語を作った。例えば次のような感じだった。


きっとなんかいろいろ階差数列を調べてるおっさんがいたんじゃないかと勝手に想像する。階差数列のいいところは、
f(x) = x^3
だとして、
f(n+1) - f(n) = 3n^2 + 3n + 1
と。変形すると
f(n+1) = 3n^2 + 3n + 1 + f(n)
と。f(n)がわかっていれば、2乗以下の計算だけで3乗の計算ができちゃうぞ、と。これは乗算回数が減るのでコンピュータで数値計算する上でとてもおいしい。


おお、階差数列萌えてきた!いろんな関数の階差数列を求めちゃうぞ!!


f(x) = x^aとして、a=1のときから調べる。このときf(x) = xだから
f(n+1)-f(n) = n+1 - n = 1
つねに定数。これはこれで使えるけどあまり面白くない。


a=2のときはどうだ。このときf(x) = x^2だから
f(n+1)-f(n) = (n+1)^2 - n^2 = 2n + 1
なんだ、この2x + 1って形は!奇数じゃん、これ。


変形すると
f(n+1) = f(n) + (2n + 1)
こうなって、f(n)は平方数だから、平方数に奇数を足すと平方数!うひょー!


次はa=3。このときf(x) = x^3
f(n+1) - f(n) = 3n^2 + 3n + 1
これ面白いか?a=3以上はつまんないかも知れない。


じゃあ、もう少し一般化すると(以下略)


というようなストーリーを頭のなかで組み立てる。


こういうストーリーが組み立てられて、それが自然に思えたときに、私は初めてその物事が理解できた気になる。要領のいい人は、たぶんこんなことを考えずに、問題集の解答を見ただけでそこから出題者の意図や解法のテクニックを会得するのだろうけど、私は要領がすこぶる悪く、上のように式をこねくり回したり、全然問題とは関係のないストーリーを作ったりして、無駄な時間をかけてばかりだった。


私の高校のときの数学の成績は駿台河合塾の東大模試でA判定になる程度には良かったが、それは、このように数学にひたすら時間を費やしていたからだと思う。1問を解くのにいくつもの方法を試したりして丸一週間かけたこともある。いま思い返してみるに、要領はすこぶる悪かった。どう見てもお馬鹿な子の勉強法だろう。最近、本棚を整理していたら昔の数学のノートがいろいろ出てきたので見ていたら、問題作成者の気持ちを勝手に想像して書き綴った漫画のストーリーのようなものがたくさん書いてあって頭がクラクラした。