Vinnaren i pepparkakshustävlingen!
2016-01-28, 21:08
  #1
Medlem
Hej,

Är ganska ny när det kommer till matlab och behöver lite hjälp. Jobbar med en laborations uppgift i ett system av första ordningens differential ekvationer och är inte riktigt med på hur flödet går i följande kod:

f1=@(u1,u2)2*u1-u1.*u2;
f2=@(u1,u2)u2+0.4*u1.*u2-u2.^2;

f=@(t,u)[f1(u(1),u(2))
f2(u(1),u(2))];

T=8; tspan=linspace(0,T,8);

u0=[0.1;0.1];

[t,U]=ode45(f,tspan,u0);

plot(t,U(:,1),'b',t,U(:,2),'g')

Det som jag tror jag förstått är: f1 och f2 får två vektorer som argument som den beräknar och returnerar ett derivata värde för den aktuella tiden t som räknas upp i ODE45 utifrån tspan. Vad som sedan sker i t är jag osäker på, speciellt:

[f1(u(1),u(2))
f2(u(1),u(2))];

vad sker där?

Tack på förhand,

Mvh Daniel
Citera
2016-01-29, 10:33
  #2
Medlem
Ingen?
Citera
2016-02-03, 21:07
  #3
Medlem
Ska se ifall jag kan ge dig insikt här Daniel.


Det du behöver veta är att ODE45 är en differentialekvationslösare. Den löser differentialekvationer på det sättet att om du har t.ex. det enklaste systemet u' + u = 0 så ger den dig värden på u som är lösningar. Differentialekvationer hittar du säkert mer om i kurslitteraturen eller är redan bekant med.


f=@(t,u)[f1(u(1),u(2))
f2(u(1),u(2))];

Det som händer här är att det defineras en funktion (det här brukar kallas för lambdadefinitioner eller anonym definition ibland, språket varierar och jag minns inte exakt vad som är relevant för Matlab). Den definieras som så att det är en vektor med två entries, och den beror på t och u. Ekvationssystemet skrivs om på ett sätt som gör så att man kan stoppa in det i funktionen ODE45. Omskrivningen är förstås funktionellt ekvivalent med f1 och f2.

Det som händer är att du har ett ekvationssystem som skrivs om på en form som ODE45 kan lösa, och du får en lösning till differentialekvationssystemet. Både för u1 och u2.
Citera
2016-02-04, 18:53
  #4
Medlem
Tack för hjälpen
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback