編集済み:賛成票をありがとう、ついに画像を追加しました。完全な m.file を追加しましたが、必要ではないと思います。コードのキーは .
xp(2)=...-((x(2)>=X2)&(xp(3)>=0)...;
xp(3)=...-((x(3)>=X3)&(xp(2)>=0))...;
完全なコード:
function xp=uzdevums1(t,x)
%parametr values
r1 = 0.1; r2 = 1; r3 = 0.2;
K1=100;K2 = 100; K3 = 100;
X2=25;X3=10;
speedx2 = 0.02; speedx3=0.02;
%ode system
xp=zeros(3,1);
xp(1)=r1*(1-x(1)/(x(2)+x(3)))*x(1);
xp(2)=r2*(1-x(2)/K2)*x(2)-((x(2)>=X2)&(xp(3)>=0)&xp(1)>0)*x(2)*x(1)*speedx2;
xp(3)=r3*(1-x(3)/K3)*x(3)-((x(3)>=X3)&(xp(2)>=0))*x(3)*x(1)*speedx3;
シェルから: [T,X]=ode45('uzdevums1',[0 60],[10 80 20]); xp(2) のブール式 (緑の線の導関数) は X2=25 に近づくまで true にする必要がありますが、xp(3) のブール式 (赤の線の導関数) は xp(2) が変化するまで false にする必要があります。サイン。
赤い線 = x3 は問題ありません.xp(2) の符号が変わると、ブール式の式が真になり、赤い線が方向を変えますが、緑の線はそうしません... つまり、x(2)>=X2 の両方(これで問題ありません) および xp(3)>=0 (これはわかりません)
つまり、赤い線が下がっていますが、なぜ xp(3)>=0 になるのでしょうか?
2番目の写真では、xp(1)>0を追加し、ブール式が最終的にfalseになります...しかし、xp(3)が符号を変更したのはなぜですか?!
ありがとう