Deterministické modely růstu a existenčního boje Modely růstu > unassign('x','t','a','g','k'); Nechť značí velikost růstu populace v čase . Předpokládáe, že plňuje rovnici: > r[1]:=diff(x(t),t)=a*x(t)*g(x(t)/k); pro nějkou funkci a konstanty a . Rovnice vyjadřuje, jak rychlost růstu populce závisí na její velikosti Malthusův předpoklad Za předpokladu, že funkce je konstantní g:=y->1; má rovnice tvar: Malt:=r[1]; a její řešení je: M:=dsolve(Malt); g:='g': > C1:=solve(subs(t=0,a=.4,k=1,rhs(M))=10); > plot(subs(_C1=C1,a=.4,rhs(M)),t=0..10); nakreslíme řešení pro různé počáteční podmínky: > with(DEtools); ivs:=[seq(x(0)=i*10,i=-1..5)]; DEplot( subs(a=.4,Malt), x(t), t=0..10, ivs ); #phaseportrait( subs(a=.4,Malt), x(t), t=0..10, ivs ); Verhulstův přdpoklad (logistická křivka) > g:=y->1-y; Verh:=r[1]; V:=dsolve(Verh); g:='g': H. Hotelling, stanovil v roce 1940 hodnotu parametr; a=0.031239, b=67.5352, k= pro po4et obzvatel v USA. > C1:=solve(subs(t=0,a=.4,k=1,rhs(V))=1); > plot(subs(_C1=10,a=.4,k=1,rhs(V)),t=0..10); > InlexniBod=solve( simplify(diff(rhs(V),t,t))=0 ,t); > assume(k>0,a>0,_C1>0); #with(RealDomain); Limit(rhs(V),t=infinity)=limit(rhs(V),t=infinity); > with(plots); p1:=plot(subs(_C1=10,a=.4,k=1,{rhs(V),k}),t=0..20): p2:=textplot([17,1.02,"saturační hranice"],align={above,right}): display({p1,p2}); unassign('k','a','_C1'); > ivs:=[seq(x(0)=i*.1,i=0..15)]; DEplot( subs(a=.4,k=1,Verh), x(t), t=0..10, ivs, animatecurves = true ); > Gompertzův předpoklad > g:=y->-ln(y); with(PDEtools,declare); declare(x(t),prime=t);; Gomp:=r[1]; infolevel[dsolve] := 3; #odeadvisor(Gomp, help); G:=simplify(dsolve(Gomp)); g:='g': Methods for first order ODEs: --- Trying classification methods --- trying a quadrature trying 1st order linear trying Bernoulli trying separable <- separable successful > C1:=solve(subs(t=0,a=.4,k=1,rhs(G))=.2); > with(RealDomain); G2:=dsolve({Gomp,x(0)=.1}); Methods for first order ODEs: --- Trying classification methods --- trying a quadrature trying 1st order linear trying Bernoulli trying separable <- separable successful > plot(subs(_C1=10,a=.4,k=1,_Z2=10,{rhs(G),rhs(G)}),t=0..10); > infolevel[dsolve] := 0; ivs:=[seq(x(0)=i*.1,i=0..15)]; DEplot( subs(a=.4,k=1,Gomp), x(t), t=0..10, ivs, animatecurves = true ); Warning, plot may be incomplete, the following errors(s) were issued: cannot evaluate the solution past the initial point, problem may be complex, initially singular or improperly set up > xxx:=subs(a=.4,k=1,Gomp); zzz:=dsolve({xxx,x(0)=.1},numeric); > f:=t->op(2,zzz(t)); > plot(rhs(zzz(t)[2]),t=0..10); Error, invalid input: rhs received zzz(t)[2], which is not valid for its 1st argument, expr > aaa:=rhs(zzz(t)[2]); > Error, invalid input: rhs received zzz(t)[2], which is not valid for its 1st argument, expr > plot(aaa,t=0..10); Warning, unable to evaluate the function to numeric values in the region; see the plotting command's help page to ensure the calling sequence is correct Plotting error, empty plot > Dvě populace soupeřící o obživu > with(DEtools);unassign('x','t','a','k','c','_r'); > _r[1]:=diff(x[1](t),t)=a[1]*x[1](t)*(k[1]-x[1](t)-c[1]*x[2](t))/k[1]; _r[2]:=diff(x[2](t),t)=a[2]*x[2](t)*(k[2]-x[2](t)-c[2]*x[1](t))/k[2]; > dfieldplot(subs(k[1]=105,k[2]=64,a[1]=1.124,a[2]=.794,c[1]=1.64,c[2]=.61,[_r[1],_r[2]]), [x[1](t),x[2](t)],t=-2..2, x[1]=39..40.5, x[2]=39..40.5, arrows=SMALL, title=``, color=[.3*x[2](t)*(x[1](t)-1),x[1](t)*(1-x[2](t)),.1]); > A:='A';B:='B'; xxx:=solve({k[2]=A,k[1]/c[1]=B,k[2]/c[2]=E,k[1]=F},{k[1],k[2],c[1],c[2]}); > > dfieldplot(subs( subs(A=1,B=2,E=1,F=2,xxx), a[1]=2.,a[2]=1, [_r[1],_r[2]]), [x[1](t),x[2](t)],t=-2..2, x[1]=-.2..3, x[2]=-.1..2, arrows=SMALL, title=`Limitni stav je [k[1],0]`, color=[.3*x[2](t)*(x[1](t)-1),x[1](t)*(1-x[2](t)),.1]); dfieldplot(subs( subs(A=2,B=1,E=1,F=2,xxx), a[1]=2.,a[2]=1, [_r[1],_r[2]]), [x[1](t),x[2](t)],t=-2..2, x[1]=-.2..2.3, x[2]=-.1..2.3, arrows=SMALL, title=`Limitni stavy [k[1],0], nebo [0,k[2]] zaviseji na poc. podm.`, color=[.3*x[2](t)*(x[1](t)-1),x[1](t)*(1-x[2](t)),.1]); dfieldplot(subs( subs(A=1,B=2,E=2,F=1,xxx), a[1]=2.,a[2]=1, [_r[1],_r[2]]), [x[1](t),x[2](t)],t=-2..2, x[1]=.4..0.8, x[2]=0.5..1.2, arrows=SMALL, title=`Limitni stav je [(k[1]-c[1]*k[2])/(1-c[1]*c[2]),(k[2]-c[2]*k[1])/(1-c[1]*c[2])]`, color=[.3*x[2](t)*(x[1](t)-1),x[1](t)*(1-x[2](t)),.1]); dfieldplot(subs( subs(A=2,B=1,E=2,F=1,xxx), a[1]=2.,a[2]=1, [_r[1],_r[2]]), [x[1](t),x[2](t)],t=-.2..2, x[1]=-.2..2.1, x[2]=-.1..2, arrows=SMALL, title=`Limitni stav je [0,k[2]]`, color=[.3*x[2](t)*(x[1](t)-1),x[1](t)*(1-x[2](t)),.1]); > > >