Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
von_neumann Forumaš(ica)
Pridružen/a: 27. 05. 2008. (21:26:18) Postovi: (3)16
|
Postano: 22:15 uto, 27. 5. 2008 Naslov: Lotka-volterra |
|
|
reba mi pomoc u vezi jednog zadatka s diferencijalnim jednadzbama, pa ako bi netko bio dovoljno dobar da mi makar ukratko skicira kako bi se to trebalo rijesiti, bio bi jako zahvalan.
Dakle, radi se o zadatku gdje treba nacrtat graf za lotka volterra prey-hunter model.
Sada umjesto onog standardnoga sustava gdje imamo y1' = ay1 - by1y2 (prey) i y2' = cy1y2 - dy2(hunter) sustava promatramo linearizirani sustav u kojem imamo dolje navedeno.
y1'= (-db/c)y2
y2'=(ac/b)* y1
Sada ako imamo a=3,1 d=2,2 i c i d proizvoljne uz uvjet da je y1(prey)=200 a y2(hunter)=100 na pocetku treba napraviti graf.
Sada ako bih ja to stavio u excel tablicu s gornjim koeficijentima i pokusao nacrtat graf dobijem neku besmislicu koja ide u beskonacnost. Postoji li neki drugi nacin rjesavanja toga?
Ne studiram na pmf-u, a na faksu nikad nismo radili diferencijalne jednadzbe, jedina literatura mi je gugl. tj skuzio sam kako to otprilike funkcionira, ali sve to ide u beskonacnost....
reba mi pomoc u vezi jednog zadatka s diferencijalnim jednadzbama, pa ako bi netko bio dovoljno dobar da mi makar ukratko skicira kako bi se to trebalo rijesiti, bio bi jako zahvalan.
Dakle, radi se o zadatku gdje treba nacrtat graf za lotka volterra prey-hunter model.
Sada umjesto onog standardnoga sustava gdje imamo y1' = ay1 - by1y2 (prey) i y2' = cy1y2 - dy2(hunter) sustava promatramo linearizirani sustav u kojem imamo dolje navedeno.
y1'= (-db/c)y2
y2'=(ac/b)* y1
Sada ako imamo a=3,1 d=2,2 i c i d proizvoljne uz uvjet da je y1(prey)=200 a y2(hunter)=100 na pocetku treba napraviti graf.
Sada ako bih ja to stavio u excel tablicu s gornjim koeficijentima i pokusao nacrtat graf dobijem neku besmislicu koja ide u beskonacnost. Postoji li neki drugi nacin rjesavanja toga?
Ne studiram na pmf-u, a na faksu nikad nismo radili diferencijalne jednadzbe, jedina literatura mi je gugl. tj skuzio sam kako to otprilike funkcionira, ali sve to ide u beskonacnost....
|
|
[Vrh] |
|
Luuka Forumaš(ica)
Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol:
Lokacija: Hakuna Matata
|
Postano: 22:44 uto, 27. 5. 2008 Naslov: |
|
|
Ponešto možeš naći na ovom [url=http://en.wikipedia.org/wiki/Lotka-Volterra_equation]linku[/url]
A probaj nacrtat nešto sa konkkretnim brojevima (a,b,c,d) pa vidi dal ti crta besmislice...
a bi ovdje bilo brzina rađanja plijena, b brzina kojom populacija plijena pada pod utjecajem grabežljivaca, c brzina kojom populacija grabežljivaca raste pod utjecajem plijena (kojeg jedu) i d brzina umiranja grabežljivaca. Laički rečeno :D
Ponešto možeš naći na ovom linku
A probaj nacrtat nešto sa konkkretnim brojevima (a,b,c,d) pa vidi dal ti crta besmislice...
a bi ovdje bilo brzina rađanja plijena, b brzina kojom populacija plijena pada pod utjecajem grabežljivaca, c brzina kojom populacija grabežljivaca raste pod utjecajem plijena (kojeg jedu) i d brzina umiranja grabežljivaca. Laički rečeno
_________________ "Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy
|
|
[Vrh] |
|
goranm Forumaš(ica)
Pridružen/a: 12. 11. 2002. (20:09:12) Postovi: (906)16
Spol:
|
Postano: 1:10 sri, 28. 5. 2008 Naslov: |
|
|
Ovakav linearan sustav se može svesti na diferencijalne jednadžbe drugog reda.
[latex]y_1=\dfrac{b}{ac}y_2' \Rightarrow y_1'=\dfrac{b}{ac}y_2''[/latex]
i to uvrštavamo u preostalu jednadžbu i dobivamo
[latex]\dfrac{b}{ac}y_2''=-\dfrac{db}{c}y_2 \Rightarrow y_2''+day_2=0[/latex]
Karakteristična jednadžba gornje dif. jdn. drugog reda je
[latex]x^2+da=0,[/latex] to jest [latex]x=\pm i \sqrt{da}[/latex] pa je [latex]y_2[/latex] dan kao kombinacija trigonometrijskih funkcija sin i cos, to jest
[latex]y_2(t)=A \cdot \cos{(\sqrt{da} \cdot t)}+B \cdot \sin{(\sqrt{da} \cdot t)}[/latex]
To je periodična funkcija koja ne ide u beskonačnost i upravo tako (periodično) trebaju izgledati i y1 i y2 u lotka-volterra modelu. A i B se određuju iz početnih uvjeta, y2(0)=100 i [latex]y_2'(t)=\dfrac{ac}{b}y_1(t) \Rightarrow y_2'(0)=\dfrac{ac}{b}\cdot 200[/latex]
Analogno se dolazi do jednadžbe rješenja za y1, no ako se treba samo crtati, možda je lakše nacrtati u nekom programu koji je bolje prilagođen matematici nego što je Excel, npr. Mathematica ili Maple u kojima se direktno mogu rješavati sustavi, egzaktno ili numerički.
Rješenje sustava je
[latex]y_1(t)=C \cdot \cos{(\sqrt{da} \cdot t)}+D \cdot \sin{(\sqrt{da} \cdot t)}[/latex]
[latex]y_2(t)=A \cdot \cos{(\sqrt{da} \cdot t)}+B \cdot \sin{(\sqrt{da} \cdot t)}[/latex]
Konstante A,B,C i D se određuju iz početnih uvjeta, tj.
[latex]y_1(0)=200,~y_1'(0)=-\frac{db}{c}\cdot 100 \\
y_2(0)=100,~y_2'(0)=\frac{ac}{b}\cdot 200.
[/latex]
Sada, ovisno o izboru parametara a,b,c i d graf bi trebao izgledati kao dvije "sinusoide" jedna iznad druge.
Evo kako Mathematica rješava problem za a=3,b=c=1,d=2:
[img]http://degiorgi.math.hr/forum/files/lotvol_163.jpg[/img]
Ovakav linearan sustav se može svesti na diferencijalne jednadžbe drugog reda.
i to uvrštavamo u preostalu jednadžbu i dobivamo
Karakteristična jednadžba gornje dif. jdn. drugog reda je
to jest pa je dan kao kombinacija trigonometrijskih funkcija sin i cos, to jest
To je periodična funkcija koja ne ide u beskonačnost i upravo tako (periodično) trebaju izgledati i y1 i y2 u lotka-volterra modelu. A i B se određuju iz početnih uvjeta, y2(0)=100 i
Analogno se dolazi do jednadžbe rješenja za y1, no ako se treba samo crtati, možda je lakše nacrtati u nekom programu koji je bolje prilagođen matematici nego što je Excel, npr. Mathematica ili Maple u kojima se direktno mogu rješavati sustavi, egzaktno ili numerički.
Rješenje sustava je
Konstante A,B,C i D se određuju iz početnih uvjeta, tj.
Sada, ovisno o izboru parametara a,b,c i d graf bi trebao izgledati kao dvije "sinusoide" jedna iznad druge.
Evo kako Mathematica rješava problem za a=3,b=c=1,d=2:
_________________ The Dude Abides
Description: |
|
Filesize: |
28.73 KB |
Viewed: |
148 Time(s) |
|
|
|
[Vrh] |
|
von_neumann Forumaš(ica)
Pridružen/a: 27. 05. 2008. (21:26:18) Postovi: (3)16
|
Postano: 20:23 sri, 28. 5. 2008 Naslov: Pokusaj 1 dielomicno uspio |
|
|
Bok, puno hvala na ovak iscrpnom i detaljnom odgovoru, ali
ne mogu nikak natjerat mathematicu da mi izracuna za
200 zeceva i 100 lisica (a = 3.1, d = 2.2), b=c=1
Natipkao sam
nase = DSolve[{y1'[t] == -2.2*y2[t], y2'[t] == 3.1*y1[t], y1[0] == 200, y1'[0] == -220, y2[0] == 100, y2'[0] == 620}, {y1[t],y2[t]}, t]
i dobijem odgovor
DSolve::bvnul: For some branches of the general solution, the given \
boundary conditions lead to an empty solution. >>
sto god to bilo
probao sam s a=d=2.2 i tu dobijem rjesenje, ali mi to ne pomaze bash jer je zadano 3.1 i 2.2.
Takodjer mi nije jasan tvoj graf ... ovo je populaciski model, nije mi jasno
kako u šumi može biti - 200 zeceva ili lisica, graf izgleda kao i svi primjeri koje sam vidio na netu samo sto tvoj sijece os x, a svi primjeri na netu daju pozitivne vrijednosti i za minimume i maksimume. Mozes to popravit ili razjasnit ?
Unaprijed hvala na pojasnjenju.
Bok, puno hvala na ovak iscrpnom i detaljnom odgovoru, ali
ne mogu nikak natjerat mathematicu da mi izracuna za
200 zeceva i 100 lisica (a = 3.1, d = 2.2), b=c=1
Natipkao sam
nase = DSolve[{y1'[t] == -2.2*y2[t], y2'[t] == 3.1*y1[t], y1[0] == 200, y1'[0] == -220, y2[0] == 100, y2'[0] == 620}, {y1[t],y2[t]}, t]
i dobijem odgovor
DSolve::bvnul: For some branches of the general solution, the given \
boundary conditions lead to an empty solution. >>
sto god to bilo
probao sam s a=d=2.2 i tu dobijem rjesenje, ali mi to ne pomaze bash jer je zadano 3.1 i 2.2.
Takodjer mi nije jasan tvoj graf ... ovo je populaciski model, nije mi jasno
kako u šumi može biti - 200 zeceva ili lisica, graf izgleda kao i svi primjeri koje sam vidio na netu samo sto tvoj sijece os x, a svi primjeri na netu daju pozitivne vrijednosti i za minimume i maksimume. Mozes to popravit ili razjasnit ?
Unaprijed hvala na pojasnjenju.
|
|
[Vrh] |
|
goranm Forumaš(ica)
Pridružen/a: 12. 11. 2002. (20:09:12) Postovi: (906)16
Spol:
|
Postano: 20:51 sri, 28. 5. 2008 Naslov: Re: Pokusaj 1 dielomicno uspio |
|
|
[quote="von_neumann"]Bok, puno hvala na ovak iscrpnom i detaljnom odgovoru, ali
ne mogu nikak natjerat mathematicu da mi izracuna za
200 zeceva i 100 lisica (a = 3.1, d = 2.2), b=c=1
Natipkao sam
nase = DSolve[{y1'[t] == -2.2*y2[t], y2'[t] == 3.1*y1[t], y1[0] == 200, y1'[0] == -220, y2[0] == 100, y2'[0] == 620}, {y1[t],y2[t]}, t]
i dobijem odgovor
DSolve::bvnul: For some branches of the general solution, the given \
boundary conditions lead to an empty solution. >>
sto god to bilo
probao sam s a=d=2.2 i tu dobijem rjesenje, ali mi to ne pomaze bash jer je zadano 3.1 i 2.2.[/quote]
Ako nije rješivo direktno, onda probaj numerčki sa funkcijom NDSolve, znači
[code:1]nase = NDSolve[{y1'[t] == -2.2*y2[t], y2'[t] == 3.1*y1[t], y1[0] == 200, y2[0] == 100}, {y1[t], y2[t]}, {t, 0, 10}]
Plot[{y1[t] /. nase, y2[t] /. nase}, {t, 0, 10}]
[/code:1]
(za numeričko računanje dovoljna su dva uvjeta). Ovaj put kao rezultat ispisuje interpolirajuće funkcije, no to nije pretjerano bitno kod crtanja grafa.
[quote]
Takodjer mi nije jasan tvoj graf ... ovo je populaciski model, nije mi jasno
kako u šumi može biti - 200 zeceva ili lisica, graf izgleda kao i svi primjeri koje sam vidio na netu samo sto tvoj sijece os x, a svi primjeri na netu daju pozitivne vrijednosti i za minimume i maksimume. Mozes to popravit ili razjasnit ?
Unaprijed hvala na pojasnjenju.[/quote]
Rezultat je takav jer sustav koji je zadan nije pravi Lotka-Volterra model - uklonjeni su nelinearni članovi koji spašavaju situaciju. Ako bi riješio pravi LV model i postavio početne uvjete i koeficijente koji odgovaraju situaciji u stvarnosti, dobio bi graf koji ne ide ispod x osi.
U pravom LV modelu niti jedan graf ne ide ispod x osi jer ako u nekom trenutku npr. lisice izumru, to jest ako graf za y2 prvi dotakne x-os, tada nema grabežljivaca koji love zečeve pa se zečevi razmnožavaju eksponencijalno. Prevedeno u jednadžbe, to znači da u jednadžbi za zečeve, [latex]y_1'(t)=\alpha y_1(t)-\beta y_1(t)y_2(t)[/latex] nelinearni član nestaje jer je y2 jednak nuli za svaki t poslije onog trenutka u kojemu su izumrle lisice, pa onda imamo diferencijalnu jednadžbu kojoj je rješenje eksponencijalna funkcija, a eksponencijalna funkcija je uvijek iznad x osi.
Ako zečevi prvi izumru, to jest ako graf za y1 prvi dotakne x-os, tada u drugoj jednadžbi nestaje nelinarni član [latex]y_1(t)y_2(t)[/latex] budući je y1(t) jednak nuli za svaki t poslije onog trenutka u kojem su nestali svi zečevi. Kako se lisice neće imati čime hraniti, njihov broj će eksponencijalno padati (opet zato jer nema tog nelinearnog člana) i čim se za neki t dogodi da je y2(t)=0, za svaki slijedeći t će prirast (odnosno smrtnost) lisica biti 0 pa graf za y2 neće ići ispod x osi.
von_neumann (napisa): | Bok, puno hvala na ovak iscrpnom i detaljnom odgovoru, ali
ne mogu nikak natjerat mathematicu da mi izracuna za
200 zeceva i 100 lisica (a = 3.1, d = 2.2), b=c=1
Natipkao sam
nase = DSolve[{y1'[t] == -2.2*y2[t], y2'[t] == 3.1*y1[t], y1[0] == 200, y1'[0] == -220, y2[0] == 100, y2'[0] == 620}, {y1[t],y2[t]}, t]
i dobijem odgovor
DSolve::bvnul: For some branches of the general solution, the given \
boundary conditions lead to an empty solution. >>
sto god to bilo
probao sam s a=d=2.2 i tu dobijem rjesenje, ali mi to ne pomaze bash jer je zadano 3.1 i 2.2. |
Ako nije rješivo direktno, onda probaj numerčki sa funkcijom NDSolve, znači
Kod: | nase = NDSolve[{y1'[t] == -2.2*y2[t], y2'[t] == 3.1*y1[t], y1[0] == 200, y2[0] == 100}, {y1[t], y2[t]}, {t, 0, 10}]
Plot[{y1[t] /. nase, y2[t] /. nase}, {t, 0, 10}]
|
(za numeričko računanje dovoljna su dva uvjeta). Ovaj put kao rezultat ispisuje interpolirajuće funkcije, no to nije pretjerano bitno kod crtanja grafa.
Citat: |
Takodjer mi nije jasan tvoj graf ... ovo je populaciski model, nije mi jasno
kako u šumi može biti - 200 zeceva ili lisica, graf izgleda kao i svi primjeri koje sam vidio na netu samo sto tvoj sijece os x, a svi primjeri na netu daju pozitivne vrijednosti i za minimume i maksimume. Mozes to popravit ili razjasnit ?
Unaprijed hvala na pojasnjenju. |
Rezultat je takav jer sustav koji je zadan nije pravi Lotka-Volterra model - uklonjeni su nelinearni članovi koji spašavaju situaciju. Ako bi riješio pravi LV model i postavio početne uvjete i koeficijente koji odgovaraju situaciji u stvarnosti, dobio bi graf koji ne ide ispod x osi.
U pravom LV modelu niti jedan graf ne ide ispod x osi jer ako u nekom trenutku npr. lisice izumru, to jest ako graf za y2 prvi dotakne x-os, tada nema grabežljivaca koji love zečeve pa se zečevi razmnožavaju eksponencijalno. Prevedeno u jednadžbe, to znači da u jednadžbi za zečeve, nelinearni član nestaje jer je y2 jednak nuli za svaki t poslije onog trenutka u kojemu su izumrle lisice, pa onda imamo diferencijalnu jednadžbu kojoj je rješenje eksponencijalna funkcija, a eksponencijalna funkcija je uvijek iznad x osi.
Ako zečevi prvi izumru, to jest ako graf za y1 prvi dotakne x-os, tada u drugoj jednadžbi nestaje nelinarni član budući je y1(t) jednak nuli za svaki t poslije onog trenutka u kojem su nestali svi zečevi. Kako se lisice neće imati čime hraniti, njihov broj će eksponencijalno padati (opet zato jer nema tog nelinearnog člana) i čim se za neki t dogodi da je y2(t)=0, za svaki slijedeći t će prirast (odnosno smrtnost) lisica biti 0 pa graf za y2 neće ići ispod x osi.
_________________ The Dude Abides
|
|
[Vrh] |
|
von_neumann Forumaš(ica)
Pridružen/a: 27. 05. 2008. (21:26:18) Postovi: (3)16
|
|
[Vrh] |
|
protein Forumaš(ica)
Pridružen/a: 27. 05. 2011. (11:52:47) Postovi: (1)16
|
|
[Vrh] |
|
|