ロジスティック写像(Excel 97 によるシミュレーション)


Microsoft の表計算ソフト Excel 97 によるシミュレーションの例です。

ここでは Windows 版 Excel 97 を使って自分でアプリケーションを作成する手順を説明しますが、Windows の Excel 95, Excel 5.0 や Macintosh の Excel 5.0 でも基本的に同じことができます(Visual Basic の扱いが特に変わっています)。

完成した Excel 97 アプリケーションは こちら(41KB) からダウンロードできます。
※ Internet Explorer 3.x もしくは Netscape Communicator 4.x をお使いの方は、ディスクに保存しなくても直接開けます。
※ 起動時に「マクロを有効にしますか」と聞いてきますので、「有効にする」を選択してください。

凡例:

※ 東京大学の学生のみなさんへ
Excel 97 は現在 ECC では利用できませんが、Windows 3.1 用の Excel 5.0 は ECC の FMV コンピュータで利用できます。


0. ロジスティック写像の定義(ユーザー定義関数)

まず最初に、ロジスティック写像 y = r x (1 - x) をユーザー定義関数として定義しておきましょう。ワークシートに直接この関数を記述する手間が省けます。

また、任意の x にロジスティック写像を n 回適用した値を直接返す関数も定義しておきましょう。あとで分岐図を作成する際に便利です。

  1. Excel 97 を起動し、[ツール]−[マクロ]−[Visual Basic Editor] で Visual Basic Editor を起動します。

  2. Visual Basic Editor で、[挿入]−[標準モジュール] を選択し、標準モジュールを表示します。

  3. 次のように 2 つのユーザー定義関数(Logistic, IteratedLogistic)を定義します。

      Function Logistic(x, r)
        Logistic = r * x * (1 - x)
      End Function
      
      Function IteratedLogistic(x, r, n)
        temp = x
        For i = 1 To n
          temp = Logistic(temp, r)
        Next i
        IteratedLogistic = temp
      End Function

Excel の下位バージョンをお使いの方は、上記手順 1, 2 の代わりに、Excel のメインメニューから [挿入]−[モジュール] を選択して、モジュールシートを挿入します。


1. 点列の時系列推移(1)

任意の に対し、x の最初の 50 個の値をプロットしてみましょう。テキスト p. 198 の 図 5.22b に相当します。

 

  1. Sheet1 を開き、A1 に初期値、A2 に と入力します。

  2. B1, B2 にそれぞれ適切な初期値と r の値を入力します(たとえば 初期値=0.01, r=2.9)。

  3. A4 に =Logistic($B$1,$B$2) と入力します。

  4. A5 に =Logistic(A4,$B$2) と入力します。

  5. A5 の内容を、A5 から A53 の範囲にコピーします。

  6. A4 から A53 を選択した上でグラフウィザードを起動し、折れ線グラフを作成します。その際、グラフタイトルに タイトル など任意の文字を入力し、凡例は消しておいてください。

  7. 作成されたグラフのタイトル部分をクリックし、数式バーで = を入力した後、マウスで B2 をクリックし、[Enter] を押します。

    特定のセルの内容をグラフのタイトルなどにリンクさせるときの一般的な方法です。

  8. 図形描画ツールバーから横書きテキストボックスを選択し、グラフタイトルの左側に r = などと入力します。

これでグラフは完成です。B1, B2 の初期値や の値を変えてみてください。グラフの様子が変わります。


2. 点列の時系列推移(2)

x の値の推移を別の観点から観察してみましょう。こちらはテキスト p.198 の 図 5.22a に相当します。

 

  1. Sheet2 を開き、先ほどと同様、A1 に初期値、A2 に と入力します。

  2. A4 から A9 までのセルに、0 から 1 までの数値を 0.2 きざみで入力してください(フィルを使うと便利です)。

  3. C4 に =Logistic(A4,$B$2)、D4 に =A4 と入力し、C4:D4 を C4:D9 までコピーします。

    この部分は、グラフにロジスティック曲線 y = r x (1 - x) と対角線 y = x を 0 から 1 まで描画するために使います。念のためいうと、C 列はロジスティック曲線、D 列は対角線にそれぞれ使います。

  4. A10 に =$B$1、B10 に =Logistic(A10,$B$2)、A11、B11、A12 にそれぞれ =B10、B12 に =Logistic(A12,$B$2) を入力します。

  5. A11:B12 を、A11:B69 までコピーします。

  6. A4:D69 を選択し、グラフウィザードでグラフを作成します。この際、グラフの種類は「データポイントを折れ線でつないだマーカーなしの散布図」、グラフタイトルに タイトル など任意の文字を入力、凡例は消しておきます。

  7. 作成されたグラフのタイトル部分をクリックし、数式バーで = を入力した後、マウスで B2 をクリックし、[Enter] を押します。図形描画ツールバーから横書きテキストボックスを選択し、グラフタイトルの左側に r = などと入力します。

  8. グラフの x 軸、 軸をそれぞれダブルクリックし、[目盛] タブで [最小値] と [最大値] の「自動」のチェックをはずし、それぞれ 01 と入力します。

  9. グラフの放物線(データ系列2)をクリックし、[近似曲線の追加...] を選びます。[近似または回帰の種類] で 「多項式近似」を選び、〈OK〉を押します。

  10. 元のぎざぎざの放物線をダブルクリックし、[線] を「なし」にします。

    この時放物線全体を選択するように注意してください。放物線の一部区間だけ選択すると、その部分だけしか消えません。全体が選択された状態では、ハンドルが (0, 0) と (1, 1) の 2 点に表示されます。

  11. 近似した方の放物線をダブルクリックし、線の色や太さなどを適切に調節します。

これでグラフが完成しました。先ほどと同じように B1, B2 の初期値や の値を変えてみてください。グラフの様子が変わります。