[C++] Modelowane rownan rozniczkowych

Shadow303
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 9 maja 2012, o 13:21
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 2 razy

[C++] Modelowane rownan rozniczkowych

Post autor: Shadow303 »

Witam mam ogromny problem dostałem zadanie z którym nie sposób mogę sobie poradzić szukałem czytałem ale nadal nie potrafię tego zrozumieć wiec zwracam się do wasz szanowni koledzy i koleżanki dla części z was pewnie to nie problem by wytłumaczyć zagadnienie aby taki ciężko kapujący człowiek jak ja zrozumiał to tyle tytułem wstępu :

zadania mianowicie jest takie:
mam zrobić program ale to jest najmniej istotne ponieważ z tym sobie dam rade
prowadzący podał nam taka zależność przy obliczaniu kolejnych wartości:
\(\displaystyle{ y_{k+1} =y_{k} + Tf(y_{k},u_{k})}\)

umożliwia to wyznaczenie \(\displaystyle{ y_{1},y_{2}}\).. mając warunek początkowy \(\displaystyle{ y_{0}}\) i ciąg sterujący (sygnał wejściowy) \(\displaystyle{ u_{1},u_{2}}\)...

Treść zadania:

Rozważmy populacje królików o liczebności \(\displaystyle{ x_{1}}\) na pewnym obszarze. Teoretycznie, liczebnosc
królików zwiekszałaby sie nieograniczenie według równania

\(\displaystyle{ \frac{dx_{1}}{dt} = kx_{1}}\)

przy załozeniu niewyczerpanych zasobów pozywienia. Jednak na obszarze tym grasuja lisy, dla
których króliki sa zródłem pozywienia. Po uwzglednieniu faktu, ze lisy poluja na króliki, mamy

\(\displaystyle{ \frac{dx_{1}}{dt} = kx_{1}-ax_{2}}\)

gdzie \(\displaystyle{ x_{2}}\) oznacza licznosc populacji lisów na rozwazanym obszarze. Rozwój populacji lisów,
które by przezyc, musza miec pod dostatkiem królików, przedstawiamy równaniem

\(\displaystyle{ \frac{dx_{2}}{dt} = -hx_{2}+bx_{1}}\)

Dane sa wartosci stałych:\(\displaystyle{ k = 1, h = 3, a = b = 2}\) i warunki poczatkowe \(\displaystyle{ x1(0) = x2(0) = 10.}\)


kompletnie nie wiem jak się za to zabrać dodam tylko ze program mam wypluwać punkty z których zostanie utworzony wykres raz jeszcze proszę o pomoc jest to dla mnie ważne by to zrozumieć i wykonać
Ostatnio zmieniony 14 maja 2012, o 13:02 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
dexter90
Użytkownik
Użytkownik
Posty: 391
Rejestracja: 11 lis 2011, o 09:48
Płeć: Mężczyzna
Pomógł: 32 razy

[C++] Modelowane rownan rozniczkowych

Post autor: dexter90 »

No, ale ja nadal nie rozumiem w czym masz problem. Masz równania do rozwiązania, wartości początkowe, krok, musisz to zaimplementować. Np. użyć metody Eulera albo RK rzędzu np. II. Btw. to o czym mowa nosi nazwę Model Lotki Voltery. Służę pomocą.
Shadow303
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 9 maja 2012, o 13:21
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 2 razy

[C++] Modelowane rownan rozniczkowych

Post autor: Shadow303 »

No tak ale nie potrafię właśnie rozwiązać równania różniczkowego
dexter90
Użytkownik
Użytkownik
Posty: 391
Rejestracja: 11 lis 2011, o 09:48
Płeć: Mężczyzna
Pomógł: 32 razy

[C++] Modelowane rownan rozniczkowych

Post autor: dexter90 »

Wykładowca, każe Ci je rozwiązać numerycznie, zatem polecam wpisać w google Method Euler example, Method Euler for equation differential etc. Nie wiem w czym masz konkretnie problem, w ogóle nie potrafisz rozwiązywać równań różniczkowych? Jeżeli różne skrypty nie pomogą, odpowiedz w temacie.
Shadow303
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 9 maja 2012, o 13:21
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 2 razy

[C++] Modelowane rownan rozniczkowych

Post autor: Shadow303 »

nigdy się z tym nie zetknąłem dlatego zadałem pytanie mniej więcej rozumiem idee ale nie wiem za nic w świecie jak zabrać się za to zadanie pod względem matematycznym jeśli byś mi wskazał jak to robić może doszedł bym sam do pozostałych 2 zadań jakie jeszcze mam
dexter90
Użytkownik
Użytkownik
Posty: 391
Rejestracja: 11 lis 2011, o 09:48
Płeć: Mężczyzna
Pomógł: 32 razy

[C++] Modelowane rownan rozniczkowych

Post autor: dexter90 »

Assume:

\(\displaystyle{ x'_{1}=x' \\ x'_{2}=y'}\), dalej

\(\displaystyle{ \begin{cases} x'=kx-y \\ y'=-hy+bx \end{cases}}\)

Mamy warunek początkowy:

\(\displaystyle{ x(0)=0 \\ y(0)=10 \\ h=3 \\ k=1 \\ a=b=2}\), podstawiając, mamy:

\(\displaystyle{ \begin{cases} x'=x-2y \\ y'=-3y+2x \end{cases}}\), i przechodzimy do numerycznego rozwiązywania metodą Eulera, z krokiem \(\displaystyle{ \xi=0.5}\) -> taki standardowy, ale od niego zależy dokładność obliczeń. W miarę eksperymentowania można się nim bawić, chodź cała metoda nie gwarantuje nam zbieżności.

\(\displaystyle{ x_{n+1}=x_{n}+\xi f(x_{n},y_{n}) \\ y_{n+1}=y_{n}+\xi f(x_{n},y_{n})}\)

Pierwsza iteracja:

\(\displaystyle{ x_{1}=0+0.5(0-2\cdot 10)=-10 \\ y_{1}=10+0.5(-3*10+2*0)=-5}\)

Druga iteracja:

\(\displaystyle{ x_{2}=x_{1}+0.5f(x_{1},y_{1}) \\ y_{2}=y_{1}+0.5f(x_{1},y_{1})}\)

Jak już zrozumiałeś algorytm Eulera, poznaj metodę RK, i weź się za implementację np. w BCB, Formatka i rysowanie pixel po pixelu.
Shadow303
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 9 maja 2012, o 13:21
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 2 razy

[C++] Modelowane rownan rozniczkowych

Post autor: Shadow303 »

dziękuje ci niezmiernie mi pomogłeś w tej kwestii naprawdę jesteś wielki DZIĘKUJE raz jeszcze bo w sumie nie musiałeś a i tak pomogłeś

pozdrawiam i raz jeszcze dziękuje
ODPOWIEDZ