7.3 Dynamic() 関数を使用する

次に、ウサギの個体数 (hare population) が時間の経過とともにどのように増加するかを検討します。ウサギの個体数はウサギの出生数によって影響を受け、ウサギの出生数は直前のウサギの個体数によって影響を受けます。つまり、Hare population (ウサギの個体数) の値は、それ自身の直前の値から影響を受けることになります。このような状況については、Dynamic() 関数を使用して対応することができます。

Attribute ウィンドウまたは Object ウィンドウのいずれかを使用して、Hare population 変数の Definition フィールドを開きます。Expression ポップアップメニューをクリックして、 expression... を選択します。

既に入力されているテーブル式を削除して、以下の内容に置き換えます:

Dynamic() 式の最初の項には、Time インデックスの先頭に入る初期値を指定します。

動態式で self を使用する場合、Dynamic 式で定義されるのと同じ変数が self によって参照されます。Time 値を現在のタイムステップ以外に指定することによって循環参照は回避されます。

配列変数の後に配置する角括弧により、特定のインデックス値が呼び出されます。このケースの場合、対象となるインデックスは Time で、指定するインデックス値は現在のタイムステップより1つ前のものになります。

 

Dynamic() 関数は、式として直接入力するか、組み込み関数として (Expression ポップアップメニューから Other... を選択することで) アクセスすることができます。Dynamic() 関数は、Library の見出し Special の中に用意されています。

なお、Dynamic() 関数にはシステム変数 Time が自動的に組み込まれる点に注意してください。Time インデックスを説明するこの章の最初のセクションで、使用する変数を Time でインデックス化したテーブルとして最初に定義しましたが、このステップは必ずしも必要はありません。

Hare population ノードを選択して、Result ボタン ( ) をクリックします。

 

これは単純な指数型増殖曲線です。天敵が無く、食糧が無限にあれば、死なないウサギが急速に増殖していく様子をあらわします。このウサギだらけのシナリオを回避するには、制限因子 (limiting factor) を導入する必要があります。