生存競争


戻る
生存競争

ロトカ・ボルテラの方程式においてcとdの符合を変えれば、 生存をめぐって闘争する2種の生体系のモデルができる。



プログラムでは、LotkaVolterraクラスに基本モード(NormalMode)と生存競争モード(StruggleMode)を 切り替えるメソッドを作る。cとdの符合を変えるメソッド。


プログラムソース:
class LotkaVolterra{
        double a,b,c,d;

        LotkaVolterra(double a,double b,double c,double d){
                this.a = a;
                this.b = b;
                this.c = c;
                this.d = d;
        }

        LotkaVolterra(double m){
                settingM(m);
        }

        void settingM(double m){
                a = 1.0;
                b = 1.0;
                c = m;
                d = m;
        }

        void StruggleMode(){
                if (c >= 0) c = -c;
                if (d >= 0) d = -d;
        }

        void NormalMode(){
                if (c <= 0) c = -c;
                if (d <= 0) d = -d;
        }

        double dxdt(double x, double y){
                return a * x - b * x * y;
        }

        double dydt(double x, double y){
                return -c * y + d * x * y;
        }
}



last update 2006/08/31

実行結果4

生存競争モードで実行。x軸に被捕食者、y軸に捕食者をとる。 下の図のような感じで、いずれか一方が死滅するまで闘争しまくる。

x = 1.9, y = 1.9に固定し、mを0.5から2.0に変化させた時の変化の様子。
(緑線:m = 0.5 , 赤線:m = 1.0 , 青線:m = 2.0)


x = 1.9, y = 1.9に固定し、mを0.5から2.0に変化させた時の変化の様子。
(緑線:m = 0.5 , 赤線:m = 1.0 , 青線:m = 2.0)


上の2つの図を合わせたもの。


last update 2006/08/31

実行結果5

生存競争モードで実行。x軸に被捕食者、y軸に捕食者をとる。

m = 1.0, x = 2.0に固定し、yを1.6から2.4に変化させた時の変化の様子。
(青:y = 1.6 , 緑:y = 1.8 , 赤:y = 2.0 , 紅紫:y = 2.2 , 水色:y = 2.4)


m = 1.0, x = 0.3に固定し、yを0.1から0.5に変化させた時の変化の様子。
(青:y = 0.1 , 緑:y = 0.2 , 赤:y = 0.3 , 紅紫:y = 0.4 , 水色:y = 0.5)


上の2つの図を合わせたもの。


last update 2006/08/31

戻る