非線形鶴亀算
by theR.A.N.S. 2004.6.9

 本屋で見つけた本の表紙にこんな問題があった。
 50円切手と30円切手を合計25枚買って、950円払った。50円切手、30円切手は各々何枚ずつか?

 要するに「鶴亀算」である。筆者はその場で次のように考えた。

 950円で買える50円切手の枚数は950÷50=19枚。
 全部で25枚にするためには30円切手は25−19=6枚。そうすると、30×6=180円オーバーする。
 オーバーした金額は50円切手を減らして、30円切手を増やせば0にできるだろう。枚数25枚は決まっているので、50円切手を1枚減らすごとに30円切手を1枚増やすのでなければならない。この50円切手1枚と30円切手1枚を交換するごとに、金額は20円下がる。したがって、180÷20=9、つまり50円切手を9枚減らす。
 したがって50円切手は 19−9=10枚
 30円切手は 25−10=15枚
以上が答えである。

 念のためにその本を立ち読みして答えを見たら次のようだった。

 50円切手を25枚買ったら、50×25=1250円。これは 1250−950=300円オーバー。
 50円切手1枚と30円切手1枚を交換するごとに、金額は20円下がる。したがって、300÷20=15、つまり30円切手を15枚、50円切手を 25−15=10枚。

 筆者の答えとは最初に仮定する50円切手の枚数が異なる。筆者は合計金額950円に着目し、それで買える枚数19枚から始めたのに対し、本では総枚数25枚に着目し、全部50円切手としたときの金額から始めている。しかし、そのような仮定によって得られる金額と実際の金額の差を30円切手を増やすことによって解消するという考え方は全く同じである。

 勿論、この問題は代数的には「総枚数が25枚」「総金額が950円」という連立方程式を立てれば容易に解くことができる。本にもそのことは書かれている。
 しかし、そんな機械的な方法でははなはだ面白みがない、というのがその本の主張のようで、筆者もこれには同意するものである。

 しかし、それだけではない。
 上の問題が連立方程式を立てれば簡単に解けるのは何故か?これを仔細に見てみよう。まず、この場合の連立方程式は、50円切手の枚数をx、30円切手の枚数をyとすれば次のとおりである。
  x+y=25      (1)
  50x+30y=950   (2)
 (1)から
  y=25−x
 これを(2)に代入すれば
 50x+30(25−x)=950
 つまり、
 20x=200、したがって  x=10、y=15

 ここで重要なのは、(2)において50円切手の金額が50x、30円切手の金額が30yと、いずれもx、yに比例している(ちょっと難しく言うと、x、yに関して線形である)ことである。この関係がない、つまり非線形の場合には、方程式を立てることはできても、それを(代数的に)解くことができるとは限らないのである。以下にこれについて見て行こう。

 料金が買った物の量に比例しない(非線形)なものというのは何があるだろう?公共料金(電気、ガス、水道、電話)などがこれに当たる。これらには次のような特徴がある。

  1.基本料金がある。つまり使用量が0でも料金は0ではない。
  2.使用量が増えると料金の増え方は鈍くなる。

 使用量をxとするとき、これらの特徴は次の関数でモデル化できるだろう。

 ここで、A,B,C,Dはすべて正の定数である。またx=0としたときの
は基本料金で、
  BC > D
でなければならない。またこの関数はx→∞のときAx+Bに近付き、xに対する増え方がだんだん鈍くなる。

 さて、電気とガスはどちらもエネルギー源である。我々はエネルギーを買っているのである。同じエネルギー源であるなら、市場原理に従えばどちらか安いほうを選べばよさそうなものだが、そうはいかないというのは、例えば照明などはほぼ電気に限られる。パソコンなどの電子機器もガスでは動かないという技術的な問題がある。一方、風呂を電気で沸かす家庭はあまりないだろう。単なる熱源としてならガスのほうが安いのだ(風力や太陽光発電などの再生可能エネルギーの普及が進めばこの事情も変わってくるかもしれないが)。そんなわけで、現在多くの家庭ではこの両者を併用せざるを得ない。

 電気もガスもエネルギー源であるなら、その使用量はエネルギー量で測られるべきだろう。
 電気はWh(ワット時)で測られる。ワットは「仕事率」といって、単位時間あたりに使用されたエネルギー量である。したがってそれに時間をかけたものはまさにエネルギー量である。
 ガスはm3で測られる。しかし、ガスの種類によってm3あたりの熱量(カロリー)が決まっている。一方、物理学によると、熱(カロリー)とエネルギー(ワット時)は同じものである。単位が違うだけなので、両者はお互いに換算できる。
 つまり、電気もガスもエネルギー量で測ることが可能なのである。

 それで、どちらもエネルギー単位で測った電気の使用量をxE、ガスの使用量をxGと表わすことにしよう。単位が同じということは、両者を直接比較したり足し合わせたりすることができるわけである。
 一方、両者の料金体系は異なる。しかしどちらも上に示したような「公共料金モデル」の特徴を持っているので、同種の関数で表わすことができるだろう。つまり、電気料金は

 ガス料金は

 エネルギーのすべてが電気とガスで賄われている家庭があるとする。その家庭のある月の総エネルギー使用量がX、電気ガス料金の合計がPであるとき、電気、ガス各々の使用量を求める。これは料金が非線形な鶴亀算である。
 また、2つの鉄道会社を乗り継いだときの距離と運賃についても同じモデルが応用できそうである。

代数的アプローチ
 連立方程式は次のとおりである。
  X=xE+xG               (3)

 (3)から
  xG=X−xE
 これを(4)に代入して

 かなり複雑であるが、xE以外はすべて定数なので、これはxEに関する方程式である。しかしどうやって解くのか?

鶴亀算的アプローチ
 (4)において xG=X−xE と置いたものを考える。そしてxEとして適当な値xE1を与えてみる。0 ≦xE1 ≦ X の範囲で適当で良い。
 E1は適当なので、P1は当然Pと一致しない。  前の例で言うと、これは50円切手を最初に25枚または19枚と仮定することに対応する。25枚で始めても19枚でも、最終的には正しい結果が得られたことを想起すべきである。これがxE1は適当で良いという意味である。そして問題はPとP1の差をどのように解消するかなのである。
 さてここで
  xE1 → xE1+δxE と置き換えたとき P1 → P1+δP
になるとする。つまり

 さらに、δxEは充分小さいと仮定する。このとき、若干の微分法の知識が必要になるのだが、δxEの高次の項を無視すると、
  δP=FδxE                    (7.1)
ただし

 このFは、xEを単位量変化させたときのPの変化量である。切手の例で言えば、50円切手を1枚、30円切手に換えたときの差額20円に相当する。
 もしもこのFによってP−P1解消できるとしたら、
が解になる。
 残念ながらそうはならない。というのはFがxEによって変化するから、Fを固定したままxEを変えることは出来ないのである。ここが切手(線形)の場合と異なる。
 しかしながら、このxE2を(6)に用いてP2を求め、これによってFを再計算して(8)によってxE3を求める。以下これを繰り返していくと、多くの場合、次第に正しい解に近付くことが知られている。

 ここで述べた「鶴亀算的アプローチ」は、実は Newton-Raphson法という非線形方程式の有名な近似解法である。

ここまでのまとめ
 鶴亀算、と言っても、鶴と亀の合計の匹数が与えられているのだから、どちらか一方を消去して鶴または亀の匹数を考えれば良い。これをxとする。
 一方、「脚の総数」のような別の量が与えられる。これをyとする。
 問題はこれらの間に立てられる方程式
  y=f(x)
を解くことに帰着する。
 鶴亀算の肝は、まずxに適当な値x1を仮定し、
  y1=f(x1
を求めてみる。当然これは真値yとは異なるが、その差y−y1を解消することを考えるのである。
 一般論としては、xをδxだけ変化させたときのyの変化δyは
  δy=f'(x)δx
で求められる。だから、このf'(x)を使えばδyがy−y1になるようなδxが得られるのである。
 古典的な鶴亀算、つまり線形の場合にはf'(x)は定数となるから、話は簡単である。非線形に拡張した場合には、そのように簡単ではないが、実はこれは Newton-Raphson法に帰着するのである。

 さて、線形の場合には鶴亀算の効用は実はあまりない。何故と言って、この場合の方程式は
  y=ax+b
と表わせるから、代数的に
と逆解きすることはいとも簡単なわけである。鶴亀算が小学校の算数では教えられるが代数を扱う中学校以上では顧みられないというのも、このことによるものであろう。
 鶴亀算の醍醐味はむしろ非線形の場合にある。ただしそこでは微分法(変分法)という近代数学の知識が不可欠なわけで、これは中学校は勿論、高校でも文系のクラスでは教えられない。そして Newton-Raphson法という定式化に至っては大学の理系でも必ずしも教えられるとは限らない。結構奥が深いのである。

歴史的事項
 百科事典で調べてみると、鶴亀算の歴史は古く、中国六朝時代の書物に既に現れるという。日本では,今村知商の《因帰算歌》(1640)に出ているのが最初であるらしい。もっともこれら古い時代の書物では「キジとウサギ」であったという。「鶴と亀」になったのは坂部広胖の《算法点竄指南録》(1810)からという。
 そのように非常に古いわけだが、これと西洋の数学との関係はよくわからない。ニュートンが Newton-Raphson法を考えた時には何かこれに関する知識はなかったのだろうか?

 もっとも、Newton-Raphson法は鶴亀算のための手法ではない。鶴亀算は本来2元の連立方程式であるが、Newton-Raphson法は1元の非線形方程式にも適用される。例えば電気料金から電気の使用量を求めるという場合でも適用できる。
 しかし、解xに適当な値を仮定してみてそのときに得られるf(x)と真値を比較して修正するという考え方において鶴亀算はNewton-Raphson法を先取りしていると言えるだろう。

 非線形問題の別の近似解法に2分探査法がある。これは方程式
  y=f(x)
において、x1、x2を用いて
  y1=f(x1
  y2=f(x2
を求め、
  y1 < y < y2
の場合、
によって
  y3=f(x3
を求める。そして例えば
  y1 < y < y3
であれば
によって
  y4=f(x4
を求めるというものである。この方法を繰り返せば確実に解の真値に近付くが、1回の試行で解の範囲は1/2に狭まるだけである。有効数字3桁(1/1000)の精度を得るためには10回の試行が必要で、6桁なら20回必用である。
 これに対してNewton-Raphson法ではより少ない試行で高い精度を得ることができる。これは試行時のxの付近でのf(x)の挙動という情報(f'(x))を有効に利用しているためである。
 線形の鶴亀算の場合は、その挙動情報が完璧なので、1回の修正で真値が得られるのである。