戻る
捕獲

第3者による捕獲が行なわれるとすると、 捕獲能力が一定であれば個体数に比例した割合で減少する。



eとfを捕獲係数と名付けよう。


プログラムでは、LotkaVolterraクラスのdx/dtとdy/dtのメソッドを少し変更。 プログラム規模が小さいからeとfはフィールドに直接アクセスして設定する。 初期の設定でe = f = 0として、生成時は基本モード。


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

        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 - e * x;
        }

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



last update 2006/08/31

実行結果6

基本モードで捕獲を実行。x軸に被捕食者、y軸に捕食者をとる。 捕獲係数を大きくするほど死滅しやすい。 あと、被捕食者をよく捕獲するほど死滅が速いっぽい。

m = 1.0, x = 2.0, y = 2.0に固定。

e = f = kを0.5から2.0に変化させた時の変化の様子。
(緑線:k = 0.5 , 赤線:k = 1.0 , 青線:k = 2.0)


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


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


last update 2006/08/31

戻る