コマネチ大学でラマヌジャン、連分数、ペル方程式
コマネチ大学という番組で、ラマヌジャンが解いた問題が紹介されていました。
1,2,3,4,5,6,7,8
という数字があります。
6の左側、つまり1から5までを足すと、15になります。
6の右側、つまり7から8までを足すと、15になり同じです。
それは、それは1から8までを考えたとき、6が左右のバランスをとる数字ということですが、そのようなものを他に考えなさいということでした。
1,2,3,,,a,,,,b
を考え、
aの左側、つまり1からa-1までを足すと、
a(a-1)/2。
aの右側、つまりa+1からbまでを足すと、
b(b+1)/2-a(a+1)/2。
それらが等しいとき、
a(a-1)/2=b(b+1)/2-a(a+1)/2
⇔a^2=b(b+1)/2
⇔(2b+1)^2-8a^2=1
手計算ですると、(a,b)=(35,49)などが解である事がわかります。
しかし、すべての解が√2の連分数で求められるというのです。
√2=1+1/(2+1/(2+…
途中で切ると、
1+1/2=3/2
ここで、
3*2=6とmin(3^2,2*2^2)=8を考えると、それが一番上の例題に当たります。
連分数の次の近似
1+1/(2+1/2)=7/5
ここで、
7*5=35とmin(7^2,2*5^2)=49が手計算でした解に当たります。
一般に√2の連分数の近似を
n/m
とすると、
a=n*m
b=min(n^2,2*m^2)
が上のペル方程式の解になるそうです。
なぜですか?
お礼
ありがとうございます。 Maximaには十分ポテンシャルがあるようですね。 ただ.netとの連携がMathematicaやMapleほどではないようです。 Googleすると http://www.math.utexas.edu/pipermail/maxima/2009/016554.html という記事をみつけました。 ややダサい連携方式のようにも思えますが、この方法とNo2さんご指摘のRuby方式と 両者を比較して実現可能性が高いもので作りこみたいと思います。
補足
みなさんご回答ありがとうございました。 「Maximaにお伺いをたてる→答えをもらう」方式で解決させました。 後学のために記すと、 1.SocketServerを作って、任意のポート(m_PortNum)をlistenする。 2.1.のあと、maxima.bat -s m_PortNumとすると、MaximaがClientになってSocketServerに自動接続する(IPアドレスをどのように処理and/or指定するのかは不明だが、ローカルPC同士なので127.0.0.1で決め打ち?) 3.ServerとMaxima間でtalk開始。 MaximaがMathematicaやMapleに劣らない強力なツールであることも分かりました。