Contents
1.feladat
A kőhajításnál vegyük figyelembe a légellenállást is, ami jó közelítéssel a sebességgel egyenesen arányos (valamely k arányossági tényezővel), azaz most y''(t)=-9.8-k*y'(t). Ezt átírjuk rendszerré, hasonlóan az előbbiekhez a sebesség lesz az új változó, azaz: y'=v; v'=-9.8-k*v; A k értéke legyen 0.1. Derítsük ki, hogy mennyi idő alatt esik le a kő a földre.
MEGOLDÁS
function dyv = ko2(t,yv) %yv(1), a magasság: y(t) %yv(2) a függőleges sebesség: v(t) k=0.1; dyv = [yv(2); -9.8-k*yv(2)]; %fontos, hogy oszlopvektorként adjuk meg
function [ertek,megalle,irany] = esemeny(t,y) % Ez a függvény veszi észre, hogy elérjük a 0 magasságot, % és megállítja a megoldót ekkor. ertek = y(1)-0; % a 0 magasságot keresem, de lehetne más érték is megalle = 1; % állítsa-e meg a megoldót irany = 0; % csak ha csökken: -1, bármikor amikor eléri: 0, csak ha nő: 1
beallitasok = odeset('Events',@esemeny); [T4,Y4] = ode45(@ko,[0 10],[0,20],beallitasok); [T5,Y5] = ode45(@ko2,[0 10],[0,20],beallitasok); plot(T4,Y4(:,1), 'rO') T4(end) hold on plot(T5,Y5(:,1), 'bO') T5(end) hold off
ans = 4.0816 ans = 3.8369
2.feladat
Tegyük fel, hogy két halfaj él egy területen: egy növényevő és egy ragadozó. Ekkor a halászás hatását úgy írhatjuk le, hogy mindkét faj egy hányadát elveszítjük egy adott idő alatt. Ha Lotka-Volterra modellt használunk, akkor mindkét fajnál megjelenik negatív tag; a növényevőknél egy -e*N(t) illetve ragadozóknál egy -e*P(t) tag. Oldjuk meg ezen új egyenletet Matlabban, ha e=0.05. Ábrázoljuk az új rendszer fázisportréját a régivel egy képen.
MEGOLDÁS
function dy = lotvol2(t,y) r=0.5; K=2; a=0.1; b=0.3; c=0.5; e=0.05; dy = [ r*(1-y(1)/K)*y(1)-a*y(1)*y(2)-e*y(1);... -b*y(2)+c*y(1)*y(2)-e*y(2)];
beallitasok = odeset('RelTol',1e-8); [T,Y]=ode45(@lotvol,[0,60],[1,1],beallitasok); [T2,Y2]=ode45(@lotvol2,[0,60],[1,1],beallitasok); plot(Y(:,1),Y(:,2)) plot(Y(:,1),Y(:,2)) hold on, plot(Y2(:,1),Y2(:,2),'r') hold off %Figyelemre méltó, hogy a növényevők száma nőtt...