20.07.2013 Views

Software matematic

Software matematic

Software matematic

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

6.5. Tratarea evenimentelor 153<br />

valul de timp specificat, nici o solut¸ie nu este afis¸ată. Situat¸ia se poate evita utilizând<br />

facilitatea de localizare a evenimentelor, as¸a cum se poate vedea în script-ul următor.<br />

Pozit¸iile init¸iale, drumurile celor două animale s¸i pozit¸ia finală apar în figura 6.13.<br />

tspan = [0,10]; y0=[3,0];<br />

k=1.1;<br />

opt = odeset(’RelTol’,1e-6,’AbsTol’,1e-6’,’Events’,@events);<br />

[tfox,yfox,te,ye,ie] = ode45(@fox2,tspan,y0,opt,k);<br />

plot(yfox(:,1),yfox(:,2)), hold on<br />

plot(sqrt(1+tfox).*cos(tfox),sqrt(1+tfox).*...<br />

sin(tfox),’--’)<br />

plot([3,1],[0,0],’o’)<br />

plot(yfox(end,1),yfox(end,2),’*’)<br />

axis equal, axis([-3.5,3.5,-2.5,3.1])<br />

legend(’Vulpe’,’Iepure’,0), hold off<br />

Aici s-a utilizat funct¸ia odeset pentru a seta erorile s¸i a specifica funct¸ia de localizare<br />

a evenimentelor. Membrul drept s¸i funct¸ia de localizare a evenimentelor se dau<br />

în sursa MATLAB 6.4. Ele sunt memorate în fis¸iere distincte. În funct¸ia de locali-<br />

Sursa MATLAB 6.4 Funct¸iile fox2 s¸i events pentru problema de urmărire<br />

function yprime = fox2(t,y,k)<br />

%FOX2 simulare urmarire vulpe iepure<br />

% YPRIME = FOX2(T,Y,K).<br />

r = sqrt(1+t)*[cos(t); sin(t)];<br />

r_p = (0.5/sqrt(1+t)) * [cos(t)-2*(1+t)*sin(t);...<br />

sin(t)+2*(1+t)*cos(t)];<br />

dist = max(norm(r-y),1e-6);<br />

factor = k*norm(r_p)/dist;<br />

yprime = factor*(r-y);<br />

function [value,isterminal,direction] = events(t,y,k)<br />

%EVENTS Functie eveniment pentru FOX2.<br />

% Localizare cand vulpea este aproape de iepure.<br />

r = sqrt(1+t)*[cos(t); sin(t)];<br />

value = norm(r-y) - 1e-4; % vulpea aproape de iepure.<br />

isterminal = 1; % oprire integrare.<br />

direction = -1; % valoarea descreste catre 0.<br />

zare events se calculează distant¸a dintre animale minus pragul de eroare 1e-4. S-a<br />

ales direction=-1 pentru că distant¸a trebuie să descrească. Parametrii de ies¸ire

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!