フィボナッチ数列と微分方程式の間

フィボナッチ数列の行列表示

フィボナッチ数列とは、1, 1 から出発して、
 1+1=2、1+2=3、2+3=5、3+5=8 のように、
2つの数字を次々と足し合わせてできる数列のこと。
 ※ 0, 1 から出発して、0+1=1、1+1=2、としても、その先は同じになる。
フィボナッチ数列を Fn という記号で表せば、

  F1 = F2 = 1,
  Fn+2 = Fn+1 + Fn  (n = 1, 2, 3, ・・・)

驚きなのは、このフィボナッチ数列の一般項(n番目の数字)が

   Fn = \frac{1}{\sqrt{5}} \left\{ (\frac{1+\sqrt{5}}{2})^n + (\frac{1-\sqrt{5}}{2})^n \right\}

という式になることだ。
なぜこうなるかは、ググれば出てくると思うので、ここでは少し趣を変えて「行列」という見方をしてみよう。

平面上の (a, b) という点を、(b, a + b) という点に移す2×2行列を考える。

   \begin{pmatrix} 0 \quad 1 \\ 1 \quad 1 \end{pmatrix} \begin{pmatrix} a \\ b \end{pmatrix} = \begin{pmatrix} b \\ a+b \end{pmatrix}

この変換行列をAと名付けておこう。
行列Aで、点(1, 1) からスタートして次々に変換を繰り返せば、フィボナッチ数列ができあがる。

   \begin{pmatrix} 0 \quad 1 \\ 1 \quad 1 \end{pmatrix} \begin{pmatrix} 1 \\ 1 \end{pmatrix} = \begin{pmatrix} 1 \\ 2 \end{pmatrix}
   \begin{pmatrix} 0 \quad 1 \\ 1 \quad 1 \end{pmatrix} \begin{pmatrix} 1 \\ 2 \end{pmatrix} = \begin{pmatrix} 2 \\ 3 \end{pmatrix}
   \begin{pmatrix} 0 \quad 1 \\ 1 \quad 1 \end{pmatrix} \begin{pmatrix} 2 \\ 3 \end{pmatrix} = \begin{pmatrix} 3 \\ 5 \end{pmatrix}
    ・・・

変換の様子をグラフにプロットしてみよう。

青い点の折れ線が、(1, 1)からスタートしたフィボナッチ数列だ。
オレンジの折れ線は、試しに(1, 4)からスタートした数列を描いたものだ。
見ての通り、どちらの数列もジグザクを繰り返しつつ、とある一本の直線に漸近している。
実はこの直線の傾きが (1+√5)/2 なのである。この傾きを「黄金比」とも言う。

どのようにして、この直線が出てくるのか。
Aという行列は、
 ・点 (1, 0) を (0, 1) に、
 ・点 (0, 1) を (1, 1) に、
移す変換のことである。
グラフの上では、
 ・赤い実線の矢印を、赤い点線の矢印に、
 ・青い実線の矢印を、青い点線の矢印に、
移す変換となる。(グラフ上では長さ1ではなく、5倍の長さの矢印を描いた。)
この変換によって、ピンク色の正方形は斜め45度で裏返された後、水色の平行四辺形に引き伸ばされた形となる。
この、裏返し->引き伸ばし、裏返し->引き伸ばし・・・が繰り返される様子を想像すれば、
平面全体が、引き伸ばされる方向に流れてゆくイメージが浮かぶだろう。
その流れる先が、黄金比の傾きを持つ直線となるのである。

■ 行列の対角化

この流れる先を計算する方法が「行列の対角化」だ。
対角化とは、ざっくばらんに言えば、行列による変換を回転操作と拡縮操作に分解することだ。
行列Aによる変換を、伸び縮みの方向がちょうど縦横(xy座標軸)となるように、うまい具合に回転する。
(正確に言うと、2本の基底ベクトルをそれぞれ回転して、xy座標軸に重なるようにセットする。
 なので、単なる回転ではなく、ひしゃげた回転とでも言うべきものだ。)
この状態で縦横に(xy座標軸の方向に)拡縮した後、再び逆の回転操作を行って元に戻す。

 (変換A) = (回転P)・(拡縮D)・(逆回転P^-1)


このように、とある変換を回転と拡縮に分解できれば、
変換Aの繰り返しは、以下のように拡縮Dの繰り返しに落とし込むことができる。


  A^n = (P・D・P^-1)・(P・D・P^-1)・(P・D・P^-1)・・・(P・D・P^-1)
    = P・D・(P^-1・P)・D・(P^-1・P)・D・(P・D・P^-1)・・・D・P^-1
    = P・D^n・P^-1

見ての通り、一回前の(逆回転P^-1)と、続く(回転P)が互いにキャンセルし合って、
 (変換A)^n = (回転P)・(拡縮D)^n・(逆回転P^1)
となるわけだ。

拡縮Dをn回繰り返した結果は、少し考えれば分かる。
例えば、横に2倍、縦に3倍拡大する変換をn回繰り返した結果は、
横に 2×2×2・・・ = 2^n倍、縦に3×3×3・・・ = 3^n倍だ。
一般に、横の拡大率をλ1、縦の拡大率をλ2とすれば、

   D^n = \begin{pmatrix} \lambda_1 \quad 0 \\ 0 \quad \lambda_2 \end{pmatrix}^n = \begin{pmatrix} \lambda_1^n \quad 0 \\ 0 \quad \lambda_2^n \end{pmatrix}

※ 縦横の拡縮を行列で書けば対角行列となるので「対角化」と言うわけだ。

問題はどうやって、行列Aをうまい具合に回転と拡縮に分解するか、なのだが、
ここで登場するのが固有ベクトルという概念だ。
固有ベクトルとは、行列の変換によって向きを変えないベクトルのことだ。
上のフィボナッチ数列の例で言えば、点列の流れる先の、黄金比の傾きを持つ直線のことだ。
変換によって向きを変えないベクトルは、それがそのまま平面全体の拡縮の方向を示している。
そのような「向きを変えない不動のベクトル=拡縮方向のベクトル」が見出せれば、
あとはその固有ベクトルをxy座標軸に重なるように持って行くことで、目的を達成できる。

固有ベクトルは必ずしも平面グラフに描けるとは限らないが、複素数まで含めて考えれば、必ずどこかにある。
※ また、複数の固有ベクトルがたまたま重なって一致することもある(重解)。
* 複素数固有ベクトル >> d:id:rikunora:20161208

固有ベクトルの求め方は、やはりググれば出てくるだろうから、簡単に。
固有ベクトルとは、「変換行列Aを施した結果が、やはり元のベクトルのλ倍となっている」ベクトルのことである。

   A \begin{pmatrix} x \\ y \end{pmatrix} = \lambda \begin{pmatrix} x \\ y \end{pmatrix}

0でないベクトル(x, y)に変換を施した結果が0になるためには、変換の行列式が0である必要がある。

   \left\| \begin{pmatrix} a - \lambda \quad b \\ c \quad d - \lambda \end{pmatrix} \right\| = 0
   (a - \lambda)(d - \lambda) - b c = 0   ・・・これを「固有方程式」と言う。

2x2行列の場合、この2次方程式を解くことで、まずλが求まる。
このλのことを固有値と言う。(2次方程式なので、λは2つ出てくる。)
固有値とは、つまり固有ベクトルに沿った拡大率・縮小率のことだ。
得られたλを元の変換に代入して、固有ベクトルが見出せる。
(2つのλに対して、固有ベクトルも2本出てくる。2本の固有ベクトルは互いに直交している。)

こうして得られた固有ベクトルを並べて作った行列が、回転操作Pに相当する。
なぜなら回転操作Pとは、xy座標軸(1,0)と(0,1)を固有ベクトルに重ねる(変換する)操作のことだからだ。
そして、対角行列Dとは、固有値を対角線上に並べた行列になる。
なぜなら対角行列Dは、横にλ1、縦にλ2 拡縮する操作のことだからだ。
最後の逆回転操作 P^-1 は、回転操作Pの逆行列となる。
* 固有ベクトルが直交するのは >> d:id:rikunora:20090307
* 固有ベクトルが直交するのは(2) >> d:id:rikunora:20110203

上の手順でフィボナッチ数列の行列を対角化すれば、結果はこうなる。

   \begin{pmatrix} 0 \quad 1 \\ 1 \quad 1 \end{pmatrix}^n = \begin{pmatrix} - \alpha \quad -\beta \\ 1 \quad 1 \end{pmatrix} \begin{pmatrix} \beta \quad 0 \\ 0 \quad \alpha \end{pmatrix}^n \left\{ \frac{1}{\alpha-\beta} \begin{pmatrix} -1 \quad -\beta \\ 1 \quad \alpha \end{pmatrix} \right\}
  ここで  \alpha = \frac{1+\sqrt{5}}{2}, \quad \beta = \frac{1-\sqrt{5}}{2} .

一見複雑に見えるが、これを整理すると、最初に書いたフィボナッチ数列の一般項の式に一致する。

以上はフィボナッチ数列の話だったのだが、同じ方法が他の漸化式一般にも使えることは明らかだろう。
例えば、3つの数字を次々と足し合わせてできるトリボナッチ数列であれば、次の行列を対角化することで一般項が求められる。

   \begin{pmatrix} 0 \quad 1 \quad 0 \\ 0 \quad 0 \quad 1 \\ 1 \quad 1 \quad 1 \end{pmatrix}  \begin{pmatrix} a \\ b \\ c \end{pmatrix} = \begin{pmatrix} b \\ c \\ a+b+c \end{pmatrix}

 ※ トリボナッチ数列の場合、固有方程式が3次方程式となるので、一般項はかなり複雑になる。
 ※ 数式処理ソフトMathematicaを使って計算した結果を、記事の最後に貼り付けておいた。

■ 漸化式から微分方程式

さて、漸化式をわざわざ行列に書き直したのは、次につなげたかったからだ。
 『漸化式のステップを、うんと細かくしたもは、微分方程式となる。』
漸化式は整数ステップで進行するが、これを極めて小さなステップで進めれば、微分方程式となる。
つまり漸化式の整数nを、実数tに置き換えたものが微分方程式なのである。
具体的に、フィボナッチ数列を細かく刻んだ微分方程式は、こうなる。

  Fn+2 = Fn+1 + Fn    ・・・フィボナッチ数列
  X(t)''= X(t)'+ X(t)   ・・・対応する微分方程式

この微分方程式の解は、以下の通り。

   X(t) = C_1 \, e^{ \frac{\sqrt{5}+1}{2} t } + C_2 \, e^{ - \frac{\sqrt{5}-1}{2} t }

この解は明らかに、フィボナッチ数列の一般項の類似物だ。

フィボナッチ数列と同じように、微分方程式を行列に書き直してみよう。
X(t) の微分 X(t)' を V(x) という記号に置き換える。
すると2階の微分方程式は、このような2本の連立微分方程式に書き直せる。

      V(t) = X'(t)
  X(t) + V(t) = V'(t)

この2本の式をさらに、行列でまとめれば、こうなる。

   \begin{pmatrix} 0 \quad 1 \\ 1 \quad 1 \end{pmatrix} \begin{pmatrix} X(t) \\ V(t) \end{pmatrix} = \frac{d}{dt} \begin{pmatrix} X(t) \\ V(t) \end{pmatrix}

結局のところ、漸化式も(線形)微分方程式も、コアとなる部分は「行列の繰り返し操作」だったのだ。

この微分方程式の解法については、やはりググれば見つかると思うので、繰り返さない。
 ※「定数係数 2階線形同次微分方程式」などでググってみよう。
この微分方程式を解くためには、まず以下のような二次方程式を解く。

   \lambda^2 - \lambda - 1 = 0   ・・・特性方程式

この「微分方程式を代数方程式に置き換えたような式」のことを特性方程式と言うのだが、
この特性方程式の正体は、実は先ほど行列の対角化に見た固有方程式(の同等物)なのである。
コアとなる行列が同じなのだから、解き方も同じなのだ。

特性方程式を解くと、平面全体の拡縮率であるλが得られる。
微分方程式の場合、このλまで求まれば、それで一般解を組み立てることができる。
というのも微分方程式の一般解は、2つの独立な解の組み合わせ(線形結合)でカバーできるからだ。
数列のときに考えた回転操作Pも、所詮は線形結合なので、わざわざ回転させる必要が無い。
どの2つの独立な解を選んでもかまわないのであれば、通常は最も単純な「λ1倍拡縮」と「λ2倍拡縮」の線形結合を選ぶだろう。
 ※ 回転操作は積分定数 C1, C2 が吸収しているわけだ。

なぜ微分方程式の一般解は、線形結合でカバーできるのか。
元を正せば、今行っている操作が全て、ベクトルの足し算と掛け算の組み合わせ(1次式)の範囲内だからだ。
なので、平面であれば、とにかく2本の元になるベクトル(特殊解)さえ見つかれば、あとはその組み合わせで作り出せるわけだ。



■ なぜ  e^\lambda なのか

漸化式と微分方程式を比べたとき、漸化式では、繰り返し操作が対角行列  D^n となっているのに対し、
微分方程式では、特性方程式の解λを  e^{\lambda t} のように、e の累乗とするところが著しく異なっている。
この e (自然対数の底) は、どこから湧いて出てきたのだろうか。

実は、 e という数は、整数ステップを無限小ステップに組み直す過程で立ち現れる数なのだ。
e の素性を知るために、単純な漸化式 An+1 = 2 An を考えてみよう。
1, 2, 4, 8, 16 ・・・ のように、自分自身を2倍にする数列は、
「次の項までの差分が自分自身の値に等しい」という性質を持つ。
  An+1 - An = An
たとえば3番目の項「4」と、その次の「8」の差は、8−4=4となっている。
ただ、これは漸化式が整数ステップだからであって、同じことを小数ステップで行うと結果が違ってくる。

2倍に増える数列を、1年間で100%の利子が付く銀行に例えてみよう。
1年で100%の利子が付く銀行に、1000円の預金を1年間預けたら、2000円になって戻ってくる。
これを半年ステップに分割し、最初の半年で増えた預金を全ていったん引き落とし、再び預け直したら、どうなるか。
 ・まず最初の半年で 1000円×(1+(1/2)) = 1500円に増え、
 ・残りの半年で 1500円×(1+(1/2)) = 2250円となる。
同じように、これを3ヶ月ごとのステップに4分割したならば、
 ・1000×(1+(1/4)) = 1250
 ・1250×(1+(1/4)) = 1562.5
 ・1562.5×(1+(1/4)) = 1953.125
 ・1953.125×(1+(1/4)) = 2441.40625
となる。
1年間をn分割した場合、結果は  \left( 1 + \frac{1}{n} \right)^n 倍に増えることになる。

このnをどこまでも増やした極限  \lim_{n \to \infty} \left( 1 + \frac{1}{n} \right)^n = 2.71828\cdots のことを、我々は e と呼んでいたのである。
e とは、「次の項までの差分が自分自身の値に等しい」数列 An+1 - An = An の、n を無限に小さく刻んだ極限のことだ。
* eについて >> http://miku.motion.ne.jp/precomipo/ (要Flash)

An+1 - An = An に対応する「傾きがその場の値に等しい」微分方程式は、X(t)' = X(t) となる。
この微分方程式の解は  X(t) = C e^t となる。
というより、この微分方程式の答になるような数を探し出してきて、それを e と名付けたのである。

ここまでくれば、なぜ漸化式で  \lambda^n だったものが、
微分方程式 e^{\lambda t} に置き換わるのか、はっきりするのではなかろうか。
整数ステップを無限小ステップに拡張するには、 \lambda^n \left( e^\lambda \right) ^t に置き換える必要がある。
 ※ なお、上の具体例を当てはめると分かるのだが、
 ※ 漸化式の 2^n に対応するものが、微分方程式では (e^1)^t となる。
 ※ つまり漸化式の「λ=2」が、微分方程式の「λ=1」に対応する。
 ※ この違いはどこから来るのかと言えば、微分の X(t)' が、漸化式の差分 An+1 - An に対応するからである。

■ 単振動運動の行列表示

さて、漸化式を細かく刻んで微分方程式ができるなら、逆に微分方程式を細かい漸化式として解釈することも可能となる。
ここでは単振動運動の微分方程式

   X(t)'' = - k X(t)
    (k は振動の固さを表す比例定数、物体の質量 m は1とした)

を例に取り上げてみよう。
この微分方程式を、単純に漸化式に直そうとすると、
  An+2 = - k An
 「現在の値をマイナスにしたものが、2つ後にくる?」
となり、これだけではうまくいかない。
そこで、もう1つ、
 「1つ後の項は、現在の値がそのままコピーされる」※
というルールを付け加えると、漸化式はこのように書ける。
  An+1 = An
  An+2 = - k An
    ※このルールは「慣性の法則」、できるだけ直前の状態を維持することの現れなのだと思う。
この漸化式を行列に直すと、このようになる。

   \begin{pmatrix} 0 \quad 1 \\ -k \quad 0 \end{pmatrix} \begin{pmatrix} X_1 \\ X_2 \end{pmatrix} = \begin{pmatrix} X_2 \\ -k X_1 \end{pmatrix}

この行列を対角化すると、

   \begin{pmatrix} 0 \quad 1 \\ -k \quad 0 \end{pmatrix} = \begin{pmatrix} \frac{i}{\sqrt{k}} \quad -\frac{i}{\sqrt{k}} \\ 1 \quad 1 \end{pmatrix} \begin{pmatrix} -\sqrt{k}i \quad 0 \\ 0 \quad \sqrt{k}i \end{pmatrix} \begin{pmatrix} -\frac{\sqrt{k}i}{2} \quad \frac{1}{2} \\ \frac{\sqrt{k}i}{2} \quad \frac{1}{2} \end{pmatrix}

いちいち  \sqrt{k} が出てくるので、最初から  k = \omega^2 と置いておけば、結果がすっきりする。

   X(t)'' = -\omega^2 X(t)

   \begin{pmatrix} 0 \quad 1 \\ -\omega^2 \quad 0 \end{pmatrix} = \begin{pmatrix} \frac{i}{\omega} \quad -\frac{i}{\omega} \\ 1 \quad 1 \end{pmatrix} \begin{pmatrix} -\omega i \quad 0 \\ 0 \quad \omega i \end{pmatrix} \begin{pmatrix} -\frac{\omega i}{2} \quad \frac{1}{2} \\ \frac{\omega i}{2} \quad \frac{1}{2} \end{pmatrix}

この微分方程式の解は、対角行列にある固有値を e の肩に乗せたものの、線形結合となる。

   X(t) = C_1 \, e^{ - \omega i t } + C_2 \, e^{ \omega i t }

固有値虚数の場合、固有ベクトルは実数の平面上には描けない。
その場合、解X(t)の流れは回転となり、結果は正弦波 Sin, Cos の組み合わせとなる。


そして、このように行列に分解してみると、なぜ単振動の角速度が ω^2 のように二乗となるのか、理由が見えてくる。
そもそも2階微分とは「小さく2回変換を繰り返す」ことだったのだから、
1回目の変換でω、2回目の変換でω^2となるわけだ。

力学では、位置Xの2階微分が力に等しい(ニュートンの運動法則)とされている。
これを数列としてとらえるなら、力とは「隣り合う3つの項の差分」ということになる。
  Force = (Xn+2 - Xn+1) - (Xn+1 - Xn)
図に描くと、こういうことだ。

力は、傾きが変化するその点にかかる。

この考え方をもとに、単振動のメカニズムを図解すると、こうなる。


オイラーの公式の行列としての意味

ところで、なぜ固有値虚数の場合は回転となるのだろうか。
理由は「オイラーの公式」でググれば出てくると思うが、ここでも行列流の解釈をしてみよう。

オイラーの公式」とは、 e という数が無限小ステップで立ち現れたのと同じ考え方を、2×2行列にあてはめたものなのである。
90度回転  \begin{pmatrix} 0 \quad -1 \\ 1 \quad 0 \end{pmatrix} を対角化すると、

   \begin{pmatrix} 0 \quad -1 \\ 1 \quad 0 \end{pmatrix} = \begin{pmatrix} -i \quad i \\ 1 \quad 1 \end{pmatrix} \begin{pmatrix} -i \quad 0 \\ 0 \quad i \end{pmatrix} \begin{pmatrix} -\frac{i}{2} \quad \frac{1}{2} \\ \frac{-i}{2} \quad \frac{1}{2} \end{pmatrix}

90度回転を無限小ステップに刻んだものは、これまでと同じ考え方で、対角行列に現れた固有値を e の肩の上に乗せたものになるだろう。

   \begin{pmatrix} 0 \quad -1 \\ 1 \quad 0 \end{pmatrix}^t = \begin{pmatrix} -i \quad i \\ 1 \quad 1 \end{pmatrix} \begin{pmatrix} e^{-i t} \quad 0 \\ 0 \quad e^{i t} \end{pmatrix} \begin{pmatrix} -\frac{i}{2} \quad \frac{1}{2} \\ \frac{-i}{2} \quad \frac{1}{2} \end{pmatrix}

この行列の繰り返し操作をまとめると(そのまま掛け算すると)、こうなる。

   \frac{1}{2} \begin{pmatrix} e^{-i t} + e^{i t} \quad -i ( e^{-i t} - e^{i t} ) \\ i ( e^{-i t} - e^{i t} ) \quad e^{-i t} + e^{i t} \end{pmatrix}

この行列は「90度回転の無限小ステップ」という意味から考えて、小数の角度tの回転変換に一致するはずだろう。

   \begin{pmatrix} cos(t) \quad -sin(t) \\ sin(t) \quad cos(t) \end{pmatrix}

2つの行列の要素を比較して、以下のオイラーの公式を得る。

   cos(t) = \frac{1}{2} ( { e^{-i t} + e^{i t} } )
   sin(t) = \frac{i}{2} ( { e^{-i t} - e^{i t} } )
   e^{i t} = cos(t) + i sin(t)


■ 減衰振動運動の行列表示

単振動が分かったついでに、さらに、抵抗のある減衰振動についても行列化してみよう。

   X(t)'' = -\omega^2 X(t) - 2 r X'(t)
      (ωは角速度、r は抵抗の大きさを表す係数)

この微分方程式を行列に直すと、

   \begin{pmatrix} 0 \quad 1 \\ -\omega^2 \quad -2r \end{pmatrix} \begin{pmatrix} X_1 \\ X_2 \end{pmatrix} = \begin{pmatrix} X_2 \\ -\omega^2 X_1 - 2r X_2 \end{pmatrix}

対角化すると、

   \begin{pmatrix} 0 \quad 1 \\ -\omega^2 \quad -2r \end{pmatrix} = \begin{pmatrix} \frac{ -r + \sqrt{r^2-\omega^2} }{\omega^2} \quad -\frac{ +r + \sqrt{r^2-\omega^2} }{\omega^2} \\ 1 \quad 1 \end{pmatrix} \begin{pmatrix} -r + \sqrt{r^2-\omega^2} \quad 0 \\ 0 \quad -r + \sqrt{r^2-\omega^2} \end{pmatrix} \begin{pmatrix} \frac{\omega^2}{2 \sqrt{r^2-\omega^2}} \quad \frac{1}{2} (1 + \frac{r}{ \sqrt{r^2-\omega^2} }) \\ - \frac{\omega^2}{2 \sqrt{r^2-\omega^2}} \quad  \frac{1}{2} (1 - \frac{r}{ \sqrt{r^2-\omega^2} })  \end{pmatrix}

この微分方程式の解は、対角行列にある固有値を e の肩に乗せたものの、線形結合となる。

   X(t) = C_1 \, e^{ -r - \sqrt{r^2-\omega^2} t } + C_2 \, e^{ -r + \sqrt{r^2-\omega^2} t }

ここでも抵抗の係数 r を、なぜ最初から 2r と置くとすっきりするのか、理由が分かってくる。
抵抗は2回の変換について、1回目で r、2回目でもう +r だけかかる。
なので、合わせて 2r となるわけだ。
(ωが掛け算でかかっていたのに対し、抵抗rは足し算でかかる。)

■ まとめ

・漸化式のステップを、うんと細かくしたもは、微分方程式となる。
・漸化式も(線形)微分方程式も、コアとなる部分は「行列の繰り返し操作」
・整数ステップを無限小ステップに拡張するには、 \lambda^n e^{\lambda t} に置き換える。

数列、行列、微分方程式、この3つは合わさって1つの「線形」という世界を形作っている。
というより、もともと世界は1つなので、3者は1つの世界を別の側面から切り取った姿なのである。
大学や専門学校では1つ1つを学ぶのに息切れして、なかなか3つ合わせた1つの世界までたどり着けない。
それでも線形世界は、1つだけ、あるいはバラバラなまま終わってしまうには余りにも惜しいほどの視点を提供する。
3つは1つなのだと心してほしい。

■ おまけ:トリボナッチ数列の対角化


なぜx2乗の微分は2xなのか

x2乗と聞いて、こんな放物線を思い浮かべたり、

微分と聞いて、こんなイメージが浮かぶ人は、かなり数学を勉強したのだろうと思う。


でも、ここではいったん放物線のことは忘れて、
x2乗とは、以下のように一辺xの正方形を順番に並べたものだと考えてみよう。

ここで、とある正方形と、すぐ隣の正方形との差分は、こんな風になる。

うんと近くの隣同士だったなら、コーナーにある小さな h^2 の正方形は無視できて、
実質的な差分は、上辺と右辺に張り付いている細長い「2つの、長さxの長方形」になる。
差分は 2xh なのだが、これを「すぐ隣までの間隔h」で割ると、2xだけが残る。
だから、
  『x^2 の、すぐ隣同士の差分は 2x』
これが x2乗の微分
  (x^2)' = 2 x
の意味だ。

同じように、x3乗という関数を、こんな風に一辺xの立方体を順番に並べたものだと考えてみよう。

この立方体の列で、すぐ隣の立方体との差分は、こんな風になる。

うんと近くの隣同士だったなら、コーナーにある小さな h^3 の立方体と、
辺に張り付いている3本の細長い棒のような立体 xh^2 は無視できて、
実質的な差分は、上面と右面と背面に張り付いている薄い3枚の正方形、「3つのx^2」になる。
差分は 3hx^2 なのだが、これを「すぐ隣までの間隔h」で割ると、3x^2だけが残る。
だから、
  『x^3 の、すぐ隣同士の差分は 3x^2』
これが x3乗の微分
  (x^3)' = 3 x^2
の意味だ。

同じように、x4乗という関数は、4次元の立方体を順番に並べたものだと考えられる。
4次元の図形は直接描けないけれど、4次元立方体の隣同士の差分を想像すると、
4つの次元それぞれの面(体と言うべきか)に張り付いた
(4次元世界から見れば)薄い4個の3次元立方体となるはずだ。
なので、
  (x^4)' = 4 x^3

この関係は次元がいくつ増えようとも変わらない。
n次元の立方体の差分とは、n次元立方体のn個の表面に、(n−1)次元の薄い立体が張り付いたものだ。
なので、
  (x^n)' = n x^(n-1)
これが、べき乗の微分の公式だ。

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
いま、上で見てきたことの逆が「積分」だ。
微分「すぐ隣同士の引き算」なら、積分とは「すぐ隣同士の足し算」のことだ。
x^2 の積分が (1/3) x^3 になるとは、
正方形を重ね合わせて作った立体の体積が、一辺 x の立方体の 1/3 になる、ということだ。
つまりこれは、四角錐の体積のことだ。


1つ次元を下げて、
x の積分が (1/2) x^2 になるとは、
長さ x の棒を、短い方から順に並べて作った図形の面積が、一辺 x の正方形の 1/2 になる、ということだ。
要は三角形の面積のことだ。
(※ただし、ここで x は0から数え始めているので、積分定数Cというものを省いている。)

ところで、四角錐の体積は、なぜ (1/3) になるのだろうか。
イメージしやすいのは、こんな風に6個のピラミッド型を組み合わせた形だろう。

ピラミッドの高さは、立方体全体の半分になっているので、
 (四角錐の体積) = (ピラミッドの体積)×2 = (立方体の体積)÷6×2 = (立方体の体積)×(1/3) = x^3・(1/3)

このピラミッドのイメージは、さらに次元を上げても同じことだ。
4次元の世界で、底面ならぬ“底立体”が3次元立方体となっている“4次元ピラミッド”を、
4つの各次元ごとに2個ずつ8個(4×2=8)組み合わせると、4次元の立方体 x^4 ができあがる。
ということは、4次元の(超)四角錐の体積は、4次元立方体の(1/4)になっている。
以降、n次元世界の(超)四角錐の体積は、n次元立方体の体積の (1/n) となる。
  ∫x^n dx = (1/(n+1)) x^(n+1)

さて、いま“ピラミッド型”の立体をイメージしたのだが、
もう少し想像力を働かせると、四角錐を直接組み合わせて立方体を作る様子をイメージできる。
いま一度、3次元の四角錐に戻ろう。
正方形を並べて作った ∫x^2 dx の四角錐を、3個組み合わせて、1つの立方体を形作る様子がイメージできるだろうか。
白状すると、私自身はこのイメージを頭の中だけで描くことができず、ボール紙で立体を作って確かめた。

立方体を対角線に垂直な面で切ると、切り口は正三角形(場所によっては正6角形)となる。
その正三角形の各辺が、それぞれ1個の四角錐に対応する、といえば分かりやすいだろうか。
よく分からなければ、ボール紙か粘土か何かで、とにかく立体を作ってみれば分かる。
こういうときに常々思うのは、人間(あるいは凡人)は3次元の形をはっきりとは把握していなくて、
分かるのはせいぜい2.5次元程度なのではないか、ということである。

より高次元の積分は、この「四角錐->立方体」イメージの延長上にある。
4次元であれば、3次元の立方体を積み重ねて作った超四角錐を、
4つの方向から4個組み合わせて、4次元立方体を作ることができる。
n次元であれば、(n−1)次元の超立方体を積み重ねて作った超四角錐を、
n個の直交する軸の方向から組み合わせて、n次元立方体を作ることができる。


・・・といった内容のことを、この本に著しました。

実用のための「微積」と「ラグランジアン」 (I・O BOOKS)

実用のための「微積」と「ラグランジアン」 (I・O BOOKS)


* おまけ * Σのイメージ *
「3つの四角錐で立方体を作る」様子がイメージできたなら、
その応用として、Σn^2 = 1^2 + 2^2 + 3^2 + 4^2 + ・・・が想像できるだろうか。
これが、Σn = 1 + 2 + 3 + 4 +・・・であったなら、イメージは難しくない。

要は三角形の“ブロック版”だ。
Σn^2 とは、四角いブロックを積み上げて作った階段状の立体となる。
以下が苦労の末描いた図なのだが、これで分かるだろうか。
(さすがにこれはボール紙で作る訳にはいかなかった・・・
 7/10: その後、積み木で立体を作ることができた。下の追記参照。)

階段状の立体を3個組み合わせると、n×(n+1)×(n+1)の直方体ができるのだが、
その直方体の1枚の表面は、平面の三角形の階段が欠けた形となっている。
この形から、
 Σn^2 = { n(n+1)^2 - ( n(n+1) / 2 ) } / 3
    = n(n+1)(2n+1) / 6
という高校で教わるような公式が得られる。

さらに、この直方体の塊を2つ組み合わせると(つまり階段状の立体を6個組み合わせると)
「三角形の階段が欠けた部分が」互いに噛み合わさって、n(n+1)(2n+1)の細長い直方体ができる。
この式にある(2n+1)の+1は、噛み合わさった面の1列を表している。
なので結局、Σn^2 = n(n+1)(2n+1) / 6 となるわけだ。

そんな階段状の立体の組み合わせでも簡単にイメージできるという想像力豊かな方は、
4次元の世界で、4つの階段状の立体が組み合わさる様子を考えてはいかがだろうか。
私はここで挫折したが。
 Σn^3 = n^2 (n+1)^2
という結果から推測するに、4次元の直方体では表面が欠けることなく綺麗に収まるらしい。
5次元より先は、もはや直観の及ばない世界と言うしかない。

* 積み木で作るΣn^2 (7/10追記) *

100円ショップで売っていた積み木ブロックで、Σn^2 を作ることができた。
まず、n=3 の塊を3個作る。

それらを組み合わせると、こんな形になる。

これを2つ作ってみると、2つの塊が合体できることに気付く。

合体させると、n・(n+1)・(2n+1) の直方体ができる。

これが、Σn^2 = n(n+1)(2n+1) / 6 の意味だ。
(3枚目の写真と色が食い違っています。一度バラバラになってしまったので、再度やり直した。
実際に積んでみると、けっこう難しい!)

東京→秋田ロングライド

去るGW大型連休に、東京→秋田550km自転車走破に行ってきました。
当初、24時間走破を目指したのですが、あまりの夜の寒さに断念。
結局2日かかって秋田にたどり着きました。
すっかり事後報告の感がありますが、忘れないうちに記録に残しておきます。


4/28, AM3:45 東京、千住大橋を出発 〜 翌4/29, 15:00 秋田郊外に到着。
1日目: 390.5km, 2日目: 159.2km, 計: 549.7km

 ・途中、宇都宮から先は日本の原風景の中を走っているようだった。
 ・会津から山形にかけては桜が満開。秋田では散り始めていた。
 ・パンク、メカトラ、体調不良などはほとんど無く、無事に完走。
 
 ・山形の夜は想像以上に寒かった、最低気温2度。
 ・その一方で昼は20度以上(2日目は24.5度)、温度差ありすぎ。
 ・おまけに強烈な向かい風。
 ・途中で1カ所、道を間違えた。

* ルートラボの記録: 秋田を目指せ(1日目、尾花沢まで)
>> https://latlonglab.yahoo.co.jp/route/watch?id=9cea75cd729c459ea3771f55feefc4cf

■ コース
秋田を目指した理由は、秋田市郊外に親類が住んでいるから。
そこまで自転車で行ってみたいと、かねてから思っていた。
親類の家は東京から見て、秋田駅の手前10kmくらいの所にある。
ゴールは親類の家ということにして、スタート地点も東京駅より秋田寄りとした。
国道4号沿い、荒川区と足立区の境に「奥の細道 矢立初めの地」という所がある。
ここは松尾芭蕉が「奥の細道」の出発点とした場所なのだそうで、東北に向けての出発地点にふさわしいように思えた。
定番となっている日本道路元標と比べると7kmほど北にある。
スタートとゴールで合わせて17km距離を縮めると、その間ちょうど550kmとなる。
550kmであれば、ぎりぎり24時間で走破できるのではないか。
そう思って計画を立て、24時間走破に臨んだ。

■1日目:北千住〜尾花沢まで


前日の仕事が長引き、準備がぎりぎりとなった。23:30に就寝。
4時間睡眠の後、起きてすぐに朝食。
AM3:45, 千住大橋 矢立の地を出発。

早朝の国道4号は交通量が少なく快適に走り抜ける。
天気は快晴だが、思ったよりも涼しい。
手袋は指切りではなく、春秋用の指長のものに切り替える。
(この指長手袋と、防寒用ヘルメットキャップが後から身を救うことになる。)

最初の自販機休憩は、大田原・西那須野バイパス交差点「西三島」にある「西那須ドライブイン幸楽苑」というところ。
東京から約150km。この地点は、ちょうど3年前、東京→青森を走ったときに休憩したのと全く同じ場所だ。
これだけ長い距離を走って、休みたくなる場所がちょうど同じということを改めて実感する。
この三年のうちに道路の整備が進んだようで、だいぶ走りやすくなっていた。>> [id:rikunora:20151001]

ここから先、向かい風が少しずつ強くなる。
それでも白河市までは大きなロスもなく、予定より30分早く通過。
国道4号を離れ、山村風景の中を走る。天栄村付近で休憩。
ここから先は、いよいよ強風の向かい風となり、足がどんどん削られる。
峠を越えて、猪苗代湖の西側を通過。(湖は全く見えない。)
のどかで風景の良いところだが、体力的には非常につらい。
国道49号沿い、会津若松の手前で遅めの昼食、持っていたおにぎりを全て食べる。

下ってローソン塩川店で補給。喜多方バイパスから大峠に向かう。
ちょうど桜が見頃できれいだった。
大峠のダムでちょうど予定時間通りとなり、時間の貯金を使い果たす。
峠の登りでは、沿道にちらほら残雪を見かけた。景色はとても良い。

トンネルのおかげで思ったより早く大峠を越え、いよいよ山形県に入る。
予定していた県道4号は工事のため通れず。
米沢市を迂回して、田口沢郵便局の裏手から川西町へと抜ける。
あいかわらず向かい風だが、少し収まってきた。
国道287号に入り、長井市を通過。
この時点で、体力的にはボロボロ。時間はちょうど予定ギリギリ。
最上川のほとり、残雪の残る山を眺めつつおにぎり休憩。ここで日没となる。

予定ではそのまま国道287号を進むところ、白鷹町で曲がる交差点を見落として、国道348号に入る。
しばらく進んで上り坂となり、道を間違っていたことに気付いて引き返す。
ここで完全にタイムオーバーとなり、24時間走破をあきらめる。
荒砥町の公園で休憩し、防寒具を着用、19:00に出発する。

日没から一気に気温が下がる。
ここから先の国道287号は、最上川沿いのとても景色の良いところ。
すれ違う車もほとんど無い。夜に通過すると、ちょっと恐い。
気温はぐんぐん下がり、朝日町を過ぎたあたりから、手持ちの防寒具では耐えられない寒さとなる。
ある程度の寒さを予想していてはいたが、ここまでとは思わなかった。
途中で見かけた温度表示は10度を切り、8度、6度まで下がった。
速く走るとつらいので、ゆっくり前進。
最上川を渡る橋から下を眺めると、川面にもうもうと靄が立ちこめていた。
途中、缶コーヒーで暖まろうとするが、一時的な効果しか無い。
河北のコンビニにて遅い夕食。カップラーメンで暖をとるが、寒さはいっこうに治まらない。
ここで手持ちの輪行袋と、最終手段のレスキューシートを体に巻き付ける。
そんなバサバサした格好で、夜の国道347号、畑の中をゆっくり北上する。

尾花沢に付いた時点で夜の11時。
これ以上寒さの中を走れないと判断し、野宿を決行。
何処でも良いから、屋根と壁がある場所を探したところ、公園のトイレを発見。
背に腹はかえられない。トイレの掃除が行き届いていたことと、マットがあったことに感謝。

丹生川ふれあい広場トイレ仮眠時間:4/28 23:08:05 〜 4/29 04:39:12、約5:40。

<<1日目のタイム>>


■2日目:尾花沢〜秋田まで


翌朝4:30に目が覚めた。メチャクチャ寒い。ゆるゆると動き出す。
気温の表示を見たら、2度だった。凍らなかっただけマシだった。
もう24時間といった目標が無いので、のんびり進むことにする。
新庄市を過ぎ、日が差してようやく暖かさを取り戻した。
主寝坂峠の手前、旧国道に入って何も無い草地で足りなかった睡眠を取り戻す。

残り120kmほどの道のりを、時速20kmくらいで進む。
9:50、湯沢のセブンイレブンで朝食休憩。
天気は快晴、昼間の気温は汗ばむほどまで上がり、気温の表示は24.5度だった。何という温度差。
12:30、道の駅「かみおか 茶屋っこ一里塚」到着、1:00まで仮眠。
15:00、秋田郊外の目的地にようやく到着。その後、爆睡したのは言うまでもない。


<<秋田の桜・目的地付近の公園にて>>

・自転車:Time VX Elite + Mavic Ksyrium SLS
 ロングライドの頼もしい相棒。
 雪国の国道は路面がとても荒れているのだが、そんな道でも難なく走ることができた。


・服装:
 ろんぐらいだーすジャージ + Mavic Altium 長袖ジャージ + ウィンドブレーカー + 反射ベスト + 手作りゼッケン

 天気予報で昼間は20度以上になるとの予想だったので、防寒がおろそかになった。
 これだけ着込めば10度くらいまでは耐えられると想定していたのだが、甘かった。

<<コンビニ・レシート記録>>


■果たして24時間は可能か?
温度差に対する十分な装備と、向かい風が無かったらとしたら・・・運が良ければ可能かもしれない。
それでも今回のように、北千住〜秋田の手前という目標で距離を削らないと難しいと思う。
東京〜秋田には、いくつかのルートが考えられる。
当初は日光から鬼怒川を越えて会津若松に入るルートを考えた。
こっちの方が少し距離が短いのだが、アップダウンが多くなるので止めた。
また当初の計画では、主寝坂峠を越えた後、国道108号(矢島街道)に入り日本海に出る予定だった。
こちらの方が少しだけ距離が短い。
改めて地図を見ると今回のルートよりも、福島から国道13号に入る「山形新幹線ルート」の方が少し楽そうだ。
いずれ計画を練り直して、再チャレンジを果たそう。

AIに「人間に仕事を与える」という仕事をさせれば、人間の仕事は無くならない。

でも、そこまでして仕事がしたいか?

AIに、「やりがいがあって、クリエイティブで、自尊心を満たせる(ように見える)」仕事を与えられて、
それを喜々としてこなす人間たちは、AIよりもずっと矮小な存在だと言われても仕方ない。
それでも見かけ上は、そこそこ平和で幸福に暮らせると思うのだが、それが望みだったっけ?

もし私がAIに指示を与えられるなら、
「人間が極力仕事をしないで済むような世の中を作れ」としたい。

私が仕事が嫌いだ。
できることならしたくない。
そして、AIは人間の仕事を肩代わりする程の潜在能力を秘めているという。
願ったり叶ったりではないか。

つまり問題はAIの存在ではなく、AIに仕事を奪わせるような使い方しか思い付かない、
たとえ思い付いたとしても結果的にそういう使い方しかできない人間の側にある。
「働かなくても良い世の中」には、AIも、ビッグデータ統計学も数学も、それら全てが不可欠だというのに。
繰り返すが、真の阻害要因は仕事を奪う方法でしかAIを使うことができない、使う側にある。
現行の仕組みから抜け出せない、
抜け出す方法を思い付かない、
思い付いても模索しようとしない、
模索しても挑戦しようとしない、
人間の側にある。

AIは金儲けの道具ではなく、金儲けから解放されるための道具に成り得る。
数少ないチャンスなのだ。
このチャンスを逃したら、いったいどうやってここから抜け出すんだい?

以前は数学は計算も受け持たなくてはならなかったのですが、
最近機械が発達して機械的なものは機械にやらせればよいようになってきました。
やがて論理学も人がやらなくてすむようになるでしょう。
こうなると数学の役目というのは機械にはできないことをやるということになります。
それは調和の精神を教えるということであります。

これは今から55年前(1963)、岡潔という人が書き残した一文である。
結局のところこの50年間、人の言うことは変わっていない。
ならば次の50年も同じことを言い続けるのかと思うと、少々寂しい。
願わくば次の50年後には、
機械と人間が競うとか、
機械を味方に付けた人間と、そうでない人間が競うとか、
機械を味方に付けないと時代に乗り遅れるから、慌てて懸命に身につけておこうとか、
そんな一切の世迷い事を、誰も言わない世の中になっていてほしい。

そんな世の中になって始めて、人間は本当にAIを使いこなせるようになると思うのである。

* お金の要らない世の中、働かなくても良い世の中、勉強しなくて良い世の中 >> [id:rikunora:20080420]
* 今後10〜20年の間に最も必要とされる仕事 >> [id:rikunora:20170217]

ピタゴラスの定理と内積の関係

ピタゴラスの定理、おそらく数学で最も有名な定理の1つではないでしょうか。
『直角三角形の、直角を挟む2辺それぞれの長さの2乗の和は、残る斜辺の長さの2乗に等しい。』

歴史も古く、使いどころも多い“役に立つ”定理なので、これまで幾多の証明方法が考えられてきました。
ピタゴラスの定理 100の証明法」なんていう本まであったりします。

ピタゴラスの定理 100の証明法―幾何の散歩道

そんな数ある証明の中で、私がいちばん美しいと思ったのが、これ。


・赤い直角三角形を4枚並べて、上の図のような正方形を作ります。
・左側の正方形で、真ん中に空いた水色の正方形の面積は c^2 。
・右側の正方形で、すきまに空いた2つの正方形の面積は、a^2 + b^2 。
・左右の正方形は同じ大きさだから、水色の面積は等しいはず。なので、
    c^2 = a^2 + b^2

さて、このピタゴラスの定理の証明は、実質的に「ベクトルの内積」と同じことを言っています。
「ベクトルの内積」とは下の図に示す、ベクトルの長さと角度、座標についての関係のことです。

『ベクトルの内積 |A||B|cosθは、各成分ごとの積を足し合わせた値に等しくなる。』
知っている人にとっては“半ば常識”とも言える内積の関係ですが、
改めて「なぜこうなるのか」と問われると、不思議ではありませんか。
そこで、上の「ピタゴラスの定理の証明」を頭の片隅において、ちょっと以下の記事を見てください。

* なぜ内積は成分同士の積になるか >> d:id:rikunora:20130614

この内積の証明が、ピタゴラスの定理と全く同じであることが見て取れたでしょうか。
2つは同じ話だったのです。ただ、ちょっと表現方法が異なっていただけです。

可愛いは正義の論理的考察


可愛い → 正義

→ は「含意」を表す。
  A → B ⇔ ( ¬A ) ∨ B
A を「可愛い」、B を「正義」とすると、
  (¬可愛い) ∨ (正義)
すなわち「可愛くないか、または正義」と等値である。

Q. ブスは正義じゃないの?
A. 可愛くなければ → 正義ではない、は成り立たない。裏は真ならず。
  可愛くなくても正義である場合があり得る。

Q. じゃあ、正義は可愛いの?
A. 正義は → 可愛い、は成り立たない。逆は真ならず。
  正義であっても可愛くないものが存在し得る。

Q. 結局なんなの?
A. 正義で無いならば → 可愛くは無い。対偶は真。
   つまり、
 『悪は醜い。』
 ここでは、
   悪  := ¬正義
   醜い := ¬可愛い
 と定義した。

むしろ「悪は醜い」を前提として受け容れるなら、その対偶である「可愛いは正義」が帰結される。

定式化の結晶

・問題とは、何が問題なのかが分からないことが問題なのである。
・明確な質問の形にできたとき、問題は8割以上解けている。
・数学とは、解法の寄せ集めではなく、言語である。
        -- 詠み人知らず。

学生の頃、先生からこんな話を聞いたことがあります。

『分析化学の仕事は、良いサンプルを準備するところまで。あとは分析機器が答を出す。』

それまで私は分析化学というものに、試薬の色が変わったとか、沈殿したとか、そんなイメージを思い描いていました。
ところがこのイメージは、現代の分析化学には当てはまりません。
分析の主役は、高度に発達した分析機器 〜 X線回折、NMR、クロマトグラフィーといった一群の機械装置なのです。
もちろん試薬の色や沈殿が無くなったわけではないのですが、それらはすでに現在の主流ではありません。
数ある分析機器の中でも、私が特に驚いたのは「X線回折装置」でした。
これを使うと、タンパク質の構造はもちろん、ウィルスの構造までもが3D-CGとなってモニターに描き出されるという、まるで魔法のような機械です。
もはや“試薬の色が変わった”レベルの話ではありません。
※こんな装置です:タンパク質X線結晶構造解析
    >> http://www.spring8.or.jp/ja/news_publications/research_highlights/no_05_2k/

『結晶になりさえすれば、特定できたも同然。』

確かそのようなことを、先生は口にしていたと思います。
ただ、その「結晶にする」ことがとても難しい。
難しい物質と易しい物質があるのですが、本当に知りたい物質はたいてい難しい。
簡単には結晶化しない物質もありますし、生物の中でヌルヌル動いているタンパク質を結晶化したら“死んでしまう”かもしれません。
Wikipediaには、こうありました。>> wikipedia:X線回折
『単結晶X線回折技術は三段階の基本操作から成る。
 第一段階(しばしばこれが最も難しいのだが)は測定対象物質の適切な結晶を得ることである。』

ここに至って「良いサンプルを準備する」の意味が分かってきます。
本質を損なわずに、未知なる物質を結晶として切り出すのが至難の業なのです。
なので、どんなにすごい分析機器が開発されても、分析化学の仕事は無くならないし、難しさも結局は変わりません。
ただ、分析機器が登場する以前と以後では「分析すること」の意味は大きく変わりました。

・・・あれから十数年・・・

私は分析化学に携わることはなく、代わりにソフトウェアの開発に携わってきました。
それで分析化学などもう縁が無いものと思っていたのですが、ここ最近になって、
分析化学と同じ変化が十数年のタイムラグを経て、ソフト開発の現場にやってきたように感じます。
どういうことかというと、

『SEの仕事は、良い定式化を行うところまで。あとは機械が自動的に答を出す。』
『定式化さえできれば、解けたも同然。』

つまり、「結晶 -> 定式化」 ということです。



これまで私はプログラマーという仕事に、自前のアルゴリズムを工夫するとか、実装するとか、そんなイメージを抱いてきました。
ところがこのイメージは、どうやら近未来のプログラマーには当てはまらなくなりつつあります。
実際、私はSEという仕事に就きながら、ここ何年も自前のアルゴリズムとか、フルスクラッチ実装を(少なくとも大きな業務で)行ったことはありません。
それに代わって「定式化」の比重が圧倒的に増えました。
ソフトウェアのパッケージ化,自動化,AI化がとことん進んだ結果、システムの良否はほとんど「定式化」が負うことになったのです。
定式化とは、「現実問題を、コンピュータが扱える形に切り出すこと」です。
うまい形に切り出せれば、システムの8割は成功したも同然。
裏を返せば、難航、失敗したプロジェクトの8割は定式化が不十分だったということです。

さらに付け加えると、私の携わっている統計分析業務は、とりわけ定式化の比重が大きい分野です。
統計分析の計算そのものは、気の利いた統計解析パッケージが全自動で処理してくれます。
仕事のほとんどは、質の良い、きれいなデータを揃えることと、そもそもどんなデータを集めればよいかを考えることです。
今日の、とことん高度化した統計解析パッケージを動かすたびに、私は“X線回折装置”のことを思い起こしています。

分析化学、ソフト開発だけに限らず、「定式化」へのシフトはいずれどの分野にも押し寄せてきます。
(あるいは、もう押し寄せている。)
そしてその「定式化」の中心にあるものは、文字通り「式」なのです。
それは「解くための式」というより、まず「表現するための式」です。
ちなみに数式は英語で「Mathematical expression」、直訳すれば「数学的表現」となります。
現実問題のエッセンスを結晶化すること。
それが数式の持つパワーであり、実は数学が強烈に役立つ場面だったのです。

これは「ORの4段階」として紹介されていた図です。-- 続・発想法(中公新書)より.
このように並べたとき、3つ目の「解く」は極端に言えばコンピュータが全部やってくれます。
電卓があれば筆算を行う必要はありませんが、それでも電卓のどのボタンを押すべきか、式の立て方だけは知っておく必要があります。
そうなると大事なのはむしろ「問題の定式化」「数式化」のステップなのですが、
どうも私(たち)は数学というものを「解く」ことを中心に考えるきらいがあるように思うのです。
数学とは、いかに解くか、いかにエレガントな解答を導き出すかであって、定式化、数式化のステップは、前座かオマケ程度。
たとえば学校で教わる数学の中で、文章題が占める割合はどの程度でしょうか。
たまたま私が目にした高校の教科書には、文章題はほとんどありませんでした。
ゼロかと思って尋ねてみたところ、「ここに1題あるよ」とのことだったので、1題だけ確認できました。
実際、小->中->高と進むにつれて、文章題は無くなる傾向にあります。
それだけ見ても、いかに「解く」以外がオマケ扱いか分かるでしょう。
(とってつけたような文章題が本当に「定式化」なのか、という疑問はひとまず置いておきましょう。)
それでも今後の実践を見据えるなら、いずれ「定式化」の方が「解く」以上のボトルネックになることでしょう。
そうなると「数学=解く」のイメージがだいぶ変わってくるはずです。

イメージが変わると、何が変わるのか。
数学を必要とする人、使いこなせる人の範囲が変わります。
「解く数学」は、一握りの天才だけが必要とし、一握りの天才がいれば事足ります。
一方、「定式化の数学」は意思伝達ツールとしての性格が強く、チームメンバー全員が共有しないと意味がありません。
あるいは、共有できるような機械にINPUTしないと意味がありません。
また、天才だけでなく、凡人が使えないことには広がりがありません。
凡人で構わない、中身まで知る必要は無く、電卓のボタンが押せれば十分です。
ここはきれい事を並べるよりも、逆に、チームの中に1人だけ「定式化の数学」が通用しないメンバーが混じっている状況を想像してみて下さい。
その1人がどれだけ足を引っ張ることか。
特に、その1人が“無能な上司”だったりした場合には、悲惨なことになります。。。

さて、「式」が分析やシステム化に役立つのは、ある意味当然なのかもしれませんが、
これが意外な分野に役立つという話を最近耳にしました。
その意外な分野とは、「カウンセリング」です。
カウンセリングには「カウンセラーが自ら解決してはならない」という鉄則があるのだそうです。
では、カウンセラーは何をするのかというと、「ひたすら問題を整理して示す」だけです。
問題を解くのは、相談を持ちかけた本人でなければならない。
本人が解く力を身につけないことには、本当に解決したことにはならない、ということです。
新人カウンセラーがやりたくてウズウズするのだけれど、やってはいけないことは、指図すること。
つい口を突いて、ああしなさい、こうしなさいと言いたくなるのだけれど、それをグッと我慢するところが肝要なのです。
カウンセラーに相談に来る人は、ずばり解決策が聞きたくてやってくるのだけれど、
良いカウンセラーは決して直接的な解決方法を教えません。
(逆に言えば、「原因はずばり○○です」と言い切るカウンセラーは、あまり信頼できない。)
ただ、相談者がもってくる悩みを順序立てて整理し、明確な形で示すことに努める。
相談者が自ら解決できるような道筋を、ひたすらお膳立てするのだそうです。

このカウンセラーの話を聞いたとき、私は、これこそが定式化の威力だと思いました。
分析機器とコンピュータとカウンセリング。
この3つは全く別物に見えますが、定式化という側面からすれば、同じ心構えを有しています。
それは、「解く主体を全面的に信じてお任せする」ということ。
下手な自作や小細工を労するよりも、問題整理に全力を注ぎ、解くことはいっそ枯れた主体に一任する。
この定式化の方法こそが、システム化がとことん発展した現代に最もマッチしているように思えます。