2010年10月15日金曜日

植物プランクトン3種類の競合



○千水湖で採水しました。


○採取された植物プランクトンは、主に3種類でした。


○水質と、植物プランクトンの総細胞体積は、似た形を示していました。


○競合がないと仮定した場合の計算ですが、あまりうまくいきませんでした。


○競合があると仮定した場合のScilabによる計算結果(種の変遷の様子が計算されました)。


より長期間を仮定して計算すると、どうなるのか。
Scilabで、計算時間を延長(8年間分)した場合。
初期値による、結果の「鋭敏性」のようなものがみられました。

(なお、3種類の相互作用について、天体の「3体問題」や、気象の「ローレンツ・アトラクタ」(3変数)では、初期値の僅かな変化で結果が大きく異なってしまうことが示されています。)






1 件のコメント:

  1. // 競合 (1年分安定)

    umax1=0.25, umax2=0.25, umax3=0.2285, umax4=0.24;
    // umax1=0.23; umax2=0.23; umax3=0.2285; umax4=0.24;
    Kp=0.02;
    Xs=[0.1; 0.05; 0.05; 0.1; 0.05]
    Xin=[1; 0; 0; 0; 0];
    Ts1=10, Ts2=12, Ts3=20, Ts4=24;
    D=1/30;
    Year=1;

    function Xdot=f(t,X)

    P=X(1)
    A1=X(2)
    A2=X(3)
    A3=X(4)
    A4=X(5)

    Temp=12*sin(2*3.1415*t/365-158)+(19-3)
    Kt1=(Temp/Ts1*exp((Ts1-Temp)/Ts1))^3
    Kt2=(Temp/Ts2*exp((Ts2-Temp)/Ts2))^3
    Kt3=(Temp/Ts3*exp((Ts3-Temp)/Ts3))^3
    Kt4=(Temp/Ts4*exp((Ts4-Temp)/Ts4))^3

    //------------------------------------------------------

    Xmat=[
    0, A1*umax1*P/(Kp+P)*Kt1,A2*umax2*P/(Kp+P)*Kt2,A3*umax3*P/(Kp+P)*Kt3,A4*umax4*P/(Kp+P)*Kt4;
    0, 0, 0, 0, 0;
    0, 0, 0, 0, 0;
    0, 0, 0, 0, 0;
    0, 0, 0, 0, 0
    ]

    dX=[
    -sum( Xmat(1,:) ) + sum( Xmat(:,1) );
    -sum( Xmat(2,:) ) + sum( Xmat(:,2) );
    -sum( Xmat(3,:) ) + sum( Xmat(:,3) );
    -sum( Xmat(4,:) ) + sum( Xmat(:,4) );
    -sum( Xmat(5,:) ) + sum( Xmat(:,5) );
    ]

    //------------------------------------------------------

    Xdot=[-X .*0.1 + Xin *0.1 + dX
    ]

    // Xdot=[dX * (1-D) + Xin * D]

    endfunction

    // 初期値


    //時間

    t0=0; t1=365 *Year; dt=0.1;
    t= t0 : dt : t1;

    //微分方程式solver
    XX=ode(Xs,t0,t,f);

    // グラフの表示
    clf(0); clf(1);

    scf(0)
    // plot2d(t,XX(1,:),4);
    plot2d(t,XX(2,:),3);
    plot2d(t,XX(3,:),2);
    plot2d(t,XX(4,:),5);
    plot2d(t,XX(5,:),6);

    // legend(['P';'Asterionella';'Fragilaria';'Peridinium';'Cyanobacteria'],1);
    legend(['Asterionella';'Fragilaria';'Peridinium';'Cyanobacteria'],1);

    scf(1)
    param3d(XX(3,:),XX(4,:),XX(5,:),1,1,'keisou@uzubenmousou@ransou'); //x y z

    返信削除