PROBLEM I
W 1798 Malthus zaproponował prosty model wzrostu populacji (problem maltuzjański, wykładniczy), w którym założono, że populacja składa się jednego, jednorodnego gatunku.
Z powyższych założeń otrzymujemy, że:
x'(t) = kx(t)
k = u - z
gdzie „x(t)” jest wielkością populacji w danym momencie, „u” wskaźnikiem urodzeń,
a „z” wskaźnikiem zgonów.
Ponieważ model ten prowadzi do nieograniczonego, wykładniczego rozrostu populacji został wzbogacony założeniem o skończonej dostępności zasobów, tzw. problem logistyczny opisany równaniem:
x’(t) = kx(t)(A-x(t))
Problemy obliczeniowe
1. Narysuj przebieg x(t) dla obu modeli dla różnych k (<0, >0, =0). Do jakich wniosków prowadzą oba modele? Podaj rozwiązanie analityczne i przeanalizuj rozwiązanie.
2. Dla jakich x, x’(t) = 0? Co to oznacza? Czy są to punkty stabilne, czy nie?
3. W roku 1950 populacja Polski wynosiła ok. 25.008 mln, w 1970 32.642 mln, a w 1990 38.183 mln. Ile według wzoru Malthusa, a ile według modelu logistycznego powinna wynosić populacja Polski obecnie, a ile za 30 lat?
4. Dodatkowe. Rozwiąż układ metodą różnić skończonych przy pomocy Excela.
Cel
Celem zadania jest wyznaczenie równań różniczkowych zwyczajnych w celu rozwiązania zadanych powyżej problemów.
Założenia
Ustalenie prawej strony równania różniczkowego
Określenie wektora czasu
Obliczenie wartości funkcji w kolejnych czasach t
Wartość funkcji w czasie to warunek początkowy
Ustalić początek całkowania, tolerancję błędu
Obliczenia i rozwiązania problemów
Ad.1 Prosty model wzrostu populacji wg. Malthusa: x’(t) = kx(t) (wykładniczy). Przyjęto przedział
t [0,2] oraz y0 = 1. Za k podstawiono kolejno wartości: 2, 0 i -2, a następnie obliczono ts oraz cs.
k1 = 2 % warunek 1: k>0, tu przykładowo k = 2
ode = @(ts,cs)[k1*cs] % "ode" = ordinary differential equation
% [t,y]=ode45(ode, tspan, y0); tpan:[0,2]
[ts,cs] = ode45(ode,[0, 2], 1)
figure(1)
plot (ts, cs, 'b')
xlabel('ts')
ylabel('cs')
title('Wykres funkcji x''(t)=kx(t) dla k=2')
k2 = 0 % warunek 2: k=0
ode = @(ts,cs)[k2*cs]
[ts,cs] = ode45(ode,[0, 2], 1)
figure(2)
plot (ts, cs, 'c')
xlabel('ts')
ylabel('cs')
title('Wykres funkcji x''(t)=kx(t) dla k=0')
k3 = -2 % warunek 3: k<0, tu przykładowo k = -2
ode = @(ts,cs)[k3*cs]
[ts,cs] = ode45(ode,[0, 2], 1)
figure(3)
plot (ts, cs, 'r')
xlabel('ts')
ylabel('cs')
title('Wykres funkcji x''(t)=kx(t) dla k=-2')
Tabela 1. Zestawienie wartości ts i cs dla różnych k.
k = 2 | k = 0 | k = -2 |
---|---|---|
ts | cs | ts |
0 | 1.0000 | 0 |
0.0251 | 1.0515 | 0.0500 |
0.0502 | 1.1057 | 0.1000 |
0.0754 | 1.1627 | 0.1500 |
0.1005 | 1.2226 | 0.2000 |
0.1505 | 1.3511 | 0.2500 |
0.2005 | 1.4932 | 0.3000 |
0.2505 | 1.6503 | 0.3500 |
0.3005 | 1.8239 | 0.4000 |
0.3505 | 2.0157 | 0.4500 |
0.4005 | 2.2277 | 0.5000 |
0.4505 | 2.4619 | 0.5500 |
0.5005 | 2.7209 | 0.6000 |
0.5505 | 3.0070 | 0.6500 |
0.6005 | 3.3233 | 0.7000 |
0.6505 | 3.6728 | 0.7500 |
0.7005 | 4.0591 | 0.8000 |
0.7505 | 4.4860 | 0.8500 |
0.8005 | 4.9578 | 0.9000 |
0.8505 | 5.4792 | 0.9500 |
0.9005 | 6.0554 | 1.0000 |
0.9505 | 6.6923 | 1.0500 |
1.0005 | 7.3961 | 1.1000 |
1.0505 | 8.1740 | 1.1500 |
1.1005 | 9.0336 | 1.2000 |
1.1505 | 9.9837 | 1.2500 |
1.2005 | 11.0337 | 1.3000 |
1.2505 | 12.1941 | 1.3500 |
1.3005 | 13.4766 | 1.4000 |
1.3505 | 14.8940 | 1.4500 |
1.4005 | 16.4604 | 1.5000 |
1.4505 | 18.1915 | 1.5500 |
1.5005 | 20.1047 | 1.6000 |
1.5505 | 22.2192 | 1.6500 |
1.6005 | 24.5560 | 1.7000 |
1.6505 | 27.1386 | 1.7500 |
1.7005 | 29.9927 | 1.8000 |
1.7505 | 33.1472 | 1.8500 |
1.8005 | 36.6333 | 1.9000 |
1.8505 | 40.4860 | 1.9500 |
1.9005 | 44.7439 | 2.0000 |
1.9254 | 47.0268 | |
1.9502 | 49.4262 | |
1.9751 | 51.9480 | |
2.0000 | 54.5984 |
Wnioski
Model wykładniczego rozrostu populacji wg. Malthusa ukazuje różne zachowywanie się populacji w zależności od liczby zgonów i urodzeń. Jeśli współczynnik k, będący różnicą między ilością urodzeń i zgonów, jest większy od zera (liczba urodzeń > liczba zgonów), to populacja zwiększa się. Jeśli natomiast współczynnik k jest mniejszy od zera (liczba urodzeń < liczba zgonów), populacja zmniejsza się. W przypadku współczynnika k równego zero (liczba urodzeń = liczba zgonów) wielkość populacji nie zmienia się.
Model Malthusa zakłada, że populacja jest jednorodna, tzn. składa się z jednego, jednorodnego gatunku. Pochodna x’(t) = 0 w przypadku, gdy x = 0. Wynika to z faktu, że aby mogły zachodzić zmiany na populacji, x ≠ 0. X równy zero oznacza, że populacja nie istnieje.
Nie policzono, ile według wzoru Malthusa, a ile według modelu logistycznego powinna wynosić populacja Polski obecnie (2013), a ile za 30 lat (2043).
Nie rozwiązano układu metodą różnic skończonych przy pomocy Excela.
PROBLEM II
Do zbiornika wpływa woda z szybkością 10 l/min. Zawartość zbiornika jest mieszana, a następnie opuszcza go z szybkością 10 l/min. Do zbiornika dodawana jest również sól w ilości 0.1 kg/min. Początkowo zbiornik zawiera 10 kg soli w 100 l wody.
Problemy obliczeniowe
Ułóż równanie różniczkowe opisujące problem.
Podaj rozwiązanie numeryczne.
Ile soli będzie w zbiorniku po 1 h?
Jakie jest zachowanie asymptotyczne modelu?
Cel
Celem problemu jest: ułożenie równania różniczkowego opisującego problem, podanie rozwiązania numerycznego, obliczenie ilości soli w zbiorniku po czasie 1h oraz sprawdzenie, jakie jest zachowanie asymptotyczne modelu.
Założenia
in=$\ 10\ \frac{l}{\min}$ (prędkość przepływu na wejściu)
out =$\ 10\ \frac{l}{\min}$ (prędkość przepływu na wyjściu)
Cpocz.= $\frac{10\text{kg}}{100l} = \ 0,1\frac{\text{kg}}{l}$ (stężenie początkowe soli w zbiorniku)
Cin= $0,1\frac{\text{kg}}{\min}*\frac{\ 1}{100\ l} = \frac{1}{1000}\ \frac{\text{kg}}{l*min}$
Cout= $\frac{1\ }{10}\text{c\ }\frac{\text{kg}}{l*min}$
Obliczenia i rozwiązania problemów
Równanie różniczkowe opisujące problem:
$$\frac{dc}{\text{dt}} = c_{\text{in}} - c_{\text{out}} = \frac{1}{1000} - \frac{1}{10}c$$
Rozwiązanie numeryczne:
$$10\frac{\text{dc}}{\text{dt}} = \frac{1}{100} - c$$
$$\int_{}^{}\frac{\text{dc}}{c - \frac{1}{100}} = - \int_{}^{}{\frac{1}{10}d}t$$
$$lnC + \ln\left( c - \frac{1}{100} \right) = - \frac{1}{10}t$$
$$c\left( c - \frac{1}{100} \right) = e^{- \frac{t}{10}}$$
$$c = \frac{e^{- \frac{0}{10}}}{\frac{1}{10} - \frac{1}{100}} = \frac{100}{9}$$
$$c\left( t \right) = \frac{9}{100}e^{- \frac{t}{10}} + \frac{1}{100}$$
$$\operatorname{}{c\left( t \right) = \frac{1}{100}\frac{\text{kg}}{l}}$$
Obliczenie stężenia soli w zbiorniku po 1h wg. wzoru:
$c\left( t \right) = \frac{9}{100}e^{- \frac{t}{10}} + \frac{1}{100}$ za t podstawiając 60 (minut).
Treść skryptu programu MATLAB:
C_soli = 9/100*exp(-6)+1/100
Wydruk z okna programu MATLAB:
C_soli = 0.0102
Wnioski
Policzono początkowe stężenie soli w zbiorniku oraz stężenie soli na wlocie do zbiornika i na wylocie ze zbiornika.
Ułożono równanie różniczkowe opisujące problem.
$$c\left( t \right) = \frac{9}{100}e^{- \frac{t}{10}} + \frac{1}{100}$$
Używając powyższego równania obliczono stężenie soli w zbiorniku po czasie 1h.
Nie określono, jakie jest zachowanie asymptotyczne modelu.
Równania różniczkowe zwyczajne pozwalają opisać zmienności parametrów procesu w czasie (tu: stężenie soli).