つきいち日記へ戻る  

グラフ・数式処理電卓 TI-89 Titanium その3

2005年10月18日

● グラフ機能、その2

 TI-89 Titaniumでは6種類のグラフが表示できる
 1. (普通の)関数 FUNCTION y(x)
 2. 媒介変数 PARAMETRIC {x(t),y(t)}
 3. 極座標 POLAR r(θ)
 
4. 数列・時系列 SEQUENCE u(n)
 5. 三次元 3D z(x,y)
 6. 微分方程式 DIFF EQUATIONS y'(t)

● 4. 数列・時系列 SEQUENCE u(n)

 数列・時系列は手前の数値からの計算手順を記述して描かせるものである。もちろん、手前のデータなど関係無しの順番nの関数でも良いのだが、それでは面白くない。
 1つ手前のデータから計算すれば差分を計算したことになり、微分と密接な関係がある。推移のグラフ表示もでき、いわゆる力学系のカオスの振る舞いなどを見ることもできる。さらに、2つ以上前のデータもあわせて算出することもできる。フィボナッチ数列などをご存じの方もおられるだろう。

 時系列と言えば、私の趣味からは、複利やマルコフ連鎖が想起される。マルコフ連鎖というのは、確率で推移が決まる時系列のことで、ダムの水位などが例である。TI-89 Titaniumの能力からいって、マルコフ連鎖のような確率で推移する、つまり確率過程(stochastics)も射程範囲であり、しかも計算機が大活躍の分野であるが、少々分かりづらいので、以下では確定的な推移の話題のみを取り上げる。

●ウサギとオオカミ

 まずは、一つ手前のデータから。マニュアルにはウサギとオオカミの生息数の推移例が載っている。この例が表示ともどもよくできているので、そっけなくて申し訳ないが、マニュアルを参照していただきたい。今のところ、日本語のマニュアルもインターネットで手に入るようである(http://www.naoco.com/calc/ti-89T.htm)。想像通り、ウサギが増えればオオカミも増え、ウサギが減ってオオカミも減る、その繰り返しの振動になる。数式のみを以下に転載する。
    u1(n) = u1(n-1) * (1 + .05 - .001 * u2(n-1)) 次世代のウサギの数の計算
    ui1 = 200 ウサギの数の初期値
    u2(n) = u2(n-1) * (1 + .0002 * u1(n-1) - .03) 次世代のオオカミの数の計算
    ui2 = 50 オオカミの数の初期値
 おせっかいだが苦言を言うと、実際にはウサギもオオカミも森などの二次元に分布しているので、全体が同期している、ということはなく、まるで波が広がるように侵食の前線が移動して、全体の数字としては混沌となる…、と思う。

●カオス

 ということで、やはりカオスを描きたくなるのが人情というものである。マニュアルでは時系列の発振例が載っていて、これをさらに進めるとカオスになる。やってみよう。

 生物の増殖のモデルとしてロジスティック写像というのがある。ネズミ算で増えるだけでなく、増えすぎると環境因子などによって増殖が抑えられる、というモデルだ。式は、
    u1=2.0*u1(n-1)*(1-u1(n-1))
   ui1=0.1
 などとなる。「MODE」でGraph項目をSEQUENCEにしておいて、「Y=エディタ」で打ち込む。
 u1(n-1)が前回の値で、新たなu1の値が計算される。ui1は初期値である。2.0が重要なパラメータで、この場合は増殖が頭打ちになる。グラフ画面の初期値(ZoomStd)ではほとんど分からないので、
    nmin=1, nmax=50, plotStrt=1, plotStep=1
    xmin=0, xmax=50, xscl=5
    ymin=-0.1, ymax=1.1, yscl=0.1
 と「WINDOW」画面で指定する。「GRAPH」画面に移動すると6世代あたりで人口が飽和するのが分かる。

 Web(クモの巣)プロットという表示がある。有名なので覚えのある方もおられよう。TI-89 Titaniumでは、「Y=エディタ」画面で「2ND」「F7」と操作すると軸(AXES)指定ウィンドウが表示されるので、Axes項目をWEBにする。元の普通のグラフはTIMEである。
 「WINDOW」で横軸の表示の調整をしておく。
    xmin=-0.1, xmax=1.1, xscl=0.1
 「GRAPH」画面に行くと、横軸がu1(n-1)縦軸がu1(n)のグラフが出てくる。今回値は次回の前回値になるから、u1(n)=u1(n-1)の原点を通る右上がりの直線があらかじめ描かれている。
 上記の式u1=2.0*u1(n-1)*(1-u1(n-1))は上に凸の放物線(y = 2*x*(1-x) = -2x2+2x)であり、その放物線が描かれる。横軸の0.1から出発し、放物線で水平に、直線で垂直に向きを変える折れ線が推移を表すことになる。言葉ではややこしいが、見ればすぐに分かる。

 さて、増殖・減少の勢いのパラメータを上げて行くと、飽和人口は少しずつ増えて行くが、ある時点で突然振動を始める。最初は周期2になる。2.8では振動を開始するものの、次第に一定値に近づくようだ。3.3になると周期2の振動が続く。3.5になると周期2からさらに分かれて周期4が発生する。4.0になるとグラフはぐちゃぐちゃになってしまう、カオスの発生だ。

 

 

 

 

●フィボナッチ数

 フィボナッチ数は前2項の和の数列で、初期値は0,1である。具体的には、
    0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ... (通常0は含めない)
 「Y=エディタ」の式で表すと、
    u1=u1(n-1)+u1(n-2)
   ui1={1,0}
 となる。グラフを描かせると急激に増えて行くのが分かる。
 こんなときには、表形式で表示させるとよい。「◆」「TBLSET」で設定し、「◆」「TABLE」で表示される。
 フィボナッチ数は自然界に広く見られ、黄金比と関連する、数秘的な香りのする数列である。C言語などを知っている方は、再帰関数の組み方の練習になるので、再帰でプログラムしてみると面白いだろう。普通にやるとひどいことになるので、一工夫が必要なのである。TI-89 Titaniumでも再帰関数が書けるようなので、機会があれば検討してみたい。

 

(続く)