15. Rekurencja 4.
Contents
15. Rekurencja 4.#
Treści kształcenia. Ciągi zadane rekurencyjnie w informatyce. Granice ciągów, algorytmy obliczania granic (problem zbieżności). Problem stopu w algorytmach. Interpretacja geometryczna (programy). Ciągi monotoniczne i ograniczone. Liczba Eulera.
Efekty kształcenia: Student potrafi operować ciągami rekurencyjnymi, badać ich zbieżność i granice. Potrafi określić podstawowe wady i zalety takich ciągów w zastosowaniach informatycznych.
Wracamy do ogólnych zagadnień dotyczacych ciągów, a właściwie do mało docenianego twierdzenia o ciagach monotonicznych i ograniczonych. Oto jego kolejne zastosowania.
Nie wolno sądzić, że omawiane przez nas twierdzenie o ciągach monotonicznych i ograniczonych ma zastosowania wyłącznie dla ciągów rekurencyjnych. Jest o wiele więcej jego zastosowań.
Za każdym razem, gdy symulacja komputerowa daje przypuszczenie, że ciąg jest zbieżny musimy to sprawdzić i to najlepsze (choć niejedyne) narzędzie.
Podamy tu jedynie najbardziej znane zastosowanie.
Liczba \(e\). Jest taki znany problem z czasów Bernoulliego: czy składając do banku na procent składany pewną kwotę wypłata może być dowolnie duża (i bank zbankrutuje…) (analogia z ‘’wdowim groszem’’)? To musiał zbadać matematyk.
Czyli: wpłacamy do banku powiedzmy 1 zł z oprocentowaniem - i tu celowo jaskrawy dobór na \(100\%\). Po roku byłoby to 2 zł, a jeśli dopuścimy wypłaty w dowolnym momencie proporcjonalnie do czasu trzymania pieniędzy w banku uzyskamy np. po pół roku 1,5 zł, a więc po ponownym złożeniu na pół roku tej kwoty będzie 2,25 zł (czyli: więcej!). Dzieląc na \(n\) okresów mamy po roku:
Gdyby dopuścić rosnącą w roku liczbę \(n\) wpłat i wypłat, to ILE wypłacimy? Potrzebujemy sprawdzić istnienie i obliczyć
Obliczanie procentu składanego:
R=RealField(50)
nmax = 1000
for n in range(1,nmax+1):
x = 1+R(1)/n
prod = R(1)
for i in range(1,n+1):
prod*=x
if n>=988:
print("s[%s] = %s"%(n,prod))
s[988] = 2.7169074548544
s[989] = 2.7169088432311
s[990] = 2.7169102287989
s[991] = 2.7169116115775
s[992] = 2.7169129915712
s[993] = 2.7169143687841
s[994] = 2.7169157432289
s[995] = 2.7169171149188
s[996] = 2.7169184838526
s[997] = 2.7169198500446
s[998] = 2.7169212134999
s[999] = 2.7169225742255
s[1000] = 2.7169239322344
Liczba \(e\) nazywana jest także liczbą Nepera (lub: Eulera) i definiowana jest jako granica ciągu \(a_n = \left(1+\frac {\displaystyle 1}{\displaystyle n}\right )^n\). Mamy więc
Istnienie tej granicy wynika właśnie z faktu, że ten ciąg JEST monotoniczny i ograniczony.
Uwaga: liczba \(e\) praktycznie nie powinna być obliczana (również na komputerze) z definicji! To bardzo wolno zbieżny algorytm i pojawią się znacznie lepsze (ale: na analizie matematycznej jako granica ciągu \(b_n = 1 + \frac{1}{1!} + \frac{1}{2!} + \frac{1}{3!} + \ldots + \frac{1}{n!}\)).
Rozważając \(x_1 = \dots = x_n = 1+\tfrac{1}{n}\) oraz \(x_{n+1} = 1,\) w nierówności Cauchyego pomiędzy średnimi otrzymujemy
a stąd
więc również
i \(a_{n+1}\geqslant a_n.\) Czyli ciąg \((a_n)\) jest niemalejący.
Połóżmy \(b_n = \left(1+\tfrac{1}{n}\right)^{n+1}\) i zauważmy, że \(a_n\leqslant b_n = \frac{1}{\left(\tfrac{n}{n+1}\right)^{n+1}} = \frac{1}{\left(1-\tfrac{1}{n+1}\right)^{n+1}}.\)
Z nierówności pomiędzy średnimi zastosowanej do \(x_1 = \dots = x_{n+1} = 1-\frac{1}{n+1}\) oraz \(x_{n+2} = 1\) otrzymujemy, że:
Stąd \(\left( \tfrac{n+1}{n+2} \right)^{n+2} \geqslant \left(1-\tfrac{1}{n+1}\right)^{n+1},\) a więc też
Czyli ciąg \(\Big( (1-\tfrac{1}{n+1})^{n+1}\Big)_{n\in\mathbb N}\) jest niemalejący. Ponieważ \(b_n = \frac{1}{(1-\frac{1}{n+1})^{n+1}},\) to możemy wywnioskować że ciąg \((b_n)\) jest nierosnący, a stąd
Ciąg \((a_n)\) jest więc niemalejący i ograniczony z góry (np. przez \(b_1\)), a więc jest zbieżny.
Dalsze informacje: np. poz. [1.] strony 146-150.
Skrypt ilustracyjny liczby \(e\).
Można wykazać, że (zrobić wybrane na tablicy):
(a) jeżeli \(a_n\underset {n\to\infty}\to \infty\), to \(\left (1+\frac {\displaystyle 1}{\displaystyle {a_n}}\right)^{a_n} \underset {n\to\infty}\to e\),
(b) jeżeli \(b_n\underset {n\to\infty}\to -\infty\), to \(\left (1+\frac {\displaystyle 1}{\displaystyle {b_n}}\right )^{b_n} \underset {n\to\infty}\to e\),
(c) jeżeli \(\mid c_n\mid\underset {n\to\infty}\to \infty\), to \(\left (1+\frac {\displaystyle 1}{\displaystyle {c_n}}\right )^{c_n}\underset {n\to\infty}\to e\).
A teraz: dowodzimy wybranego z tych wzorów.
Zadanie 4.1. Obliczyć granicę ciągu
Rozwiązanie. Przekształcimy do postaci pozwalającej skorzystać z powyższych własności:
gdzie wykorzystaliśmy, że \(\left( 1 + \frac{2}{n^2 + 1}\right)^{\left(\frac{n^2 + 1}{2}\right)}\to e\), gdy \(n \to \infty\).
Zadanie 4.2. Oblicz granicę ciągu \( \left(\frac{n}{n+1}\right)^n .\)
Rozwiązanie: ponieważ \( \lim\limits_{n\to \infty}{\frac{n}{n+1}}=1 \), to \( \lim\limits_{n\to \infty}{\left(\frac{n}{n+1}\right)^n}=\left[1^{\infty}\right] \).
Przekształcimy wyraz badanego ciągu tak, aby pozbyć się symbolu nieoznaczonego i w granicy odnaleźć liczbę \(e\)
Czyli
Zadanie 4.3. Oblicz granicę \( \lim\limits_{n\to \infty}{\left(1+\frac{1}{n}\right)^{an+b}} \) dla \( a\in \mathbb{R}\setminus \{0\} \).
Rozwiązanie: skoro \( \lim\limits_{n\to \infty}{\left(1+\frac{1}{n}\right)^{an+b}}= \left[1^{\pm \infty}\right] \), gdzie znak w wykładniku zależy od znaku liczby \( a \), spróbujemy wykorzystać liczbę \(e\):
Obliczamy granicę
Zadanie 4.4. Obliczyć granicę ciągu \(a_n = \left(\frac{3n-1}{3n+1}\right)^{n+3}\).
Rozwiązanie: tu również przekształcimy wyraz ciągu
czyli
a stąd \(a_n \to e^{-\frac{2}{3}}\cdot 1\), \ gdy \(n \to \infty\).
Zadanie 4.5 Zbadać monotoniczność ciągu \((a_n)\), gdzie \(a_n=\frac {\displaystyle 1}{\displaystyle {\sqrt {n^2+2}}}\).
Rozwiązanie: jest oczywiste, że dla każdej liczby naturalnej \(n\) prawdziwe są nierówności
Wykazaliśmy więc, że ciąg \((a_n)\) jest malejący.
Zadanie 4.6. Obliczyć granicę ciągu \((a_n)\), gdzie \(a_n=\root n\of n\).
Rozwiązanie. Oszacujemy z dołu wyrażenie \(\left (1+\frac {\displaystyle 1}{\displaystyle {\sqrt n}}\right )^n\). Z dwumianu Newtona możemy napisać nierówności,
\(\left (1+\frac {\displaystyle 1}{\displaystyle {\sqrt n}}\right )^n > 1+n\frac{\displaystyle 1}{\displaystyle {\sqrt n}} > \sqrt n > 1\) ,
\(\left (1+\frac {\displaystyle 1}{\displaystyle {\sqrt n}}\right )^{2n} > n > 1\),
\(\left (1+\frac {\displaystyle 1}{\displaystyle {\sqrt n}}\right )^2 > \root n\of n > 1\).
Ale \(\lim_{n\to\infty}\left(1+\frac {\displaystyle 1}{\displaystyle {\sqrt n}}\right )=1\), więc po zastosowaniu twierdzenia o trzech ciągach otrzymujemy
Zadanie 4.7 Dany jest ciąg \((s_n)\), gdzie
Wykazać, że ciąg \((s_n)\), jest zbieżny.
Rozwiązanie. Ponieważ \(s_{n+1}=s_n+\frac {\displaystyle 1}{\displaystyle {(n+1)!}}\) więc stwierdzamy, że ciąg \((s_n)\) jest rosnący. Aby wykazać, że jest on ograniczony z góry napiszmy
Wykazaliśmy, że ciąg \((s_n)\) jest rosnący i ograniczony z góry, a więc jest zbieżny, czyli istnieje \( \lim_{n\to\infty}s_n=s\).
Zadania samodzielne.
(1) Oblicz granicę:
(a)
(b)
(c)
(d)
(e)
I jeszcze taki skrypt z kilkoma ciągami o granicy \(e\)
Liczbę \(e\) przyjmuje się jako podstawę tzw. logarytmów naturalnych oznaczanych symbolem \(\ln\).}
Korzystając z definicji logarytmów możemy podać wzory na zamianę znanych ze szkoły średniej logarytmów dziesiętnych \(\log_{10} b = \log b\) z logarytmami naturalnymi \(\log_e b= \ln b\). Mamy następujące wzory:
Uwaga: zarówno liczba \(e\) jak i logarytmy naturalne są bardzo ważne w matematyce i informatyce. Wspomnijmy tylko, że omawiana przez nas operacja obliczania pierwiastka z liczby w wielu zastosowaniach (np. kalkulatory naukowe) jest obliczana następująco:
a więc musimy jak najdokładniej obliczyć \(e\) (i znać zasady logarytmowania, ale - jak się okaże to bywa prostsze niż obliczanie pierwiastka).
Zbiór zadań.#
Zadanie (1). W pewnym mieście pewien człowiek zachorował na … grypę. Załóżmy, że każda chora osoba zaraża codziennie 4 zdrowe osoby. Ile będzie chorych \(n\) dniach? Podaj rozwiązanie w postaci jawnej i rekurencyjnej.
Zadanie (2). Pewna cząsteczka porusza się w kierunku poziomym i w każdej sekundzie pokonuje odległość równą podwojonej odległości pokonanej w sekundzie poprzedzającej. Niech \(a_n\) oznacza pozycję cząsteczki po \(n\) sekundach. Podać rekurencyjną zależność dla \(a_n\) wiedząc, że \(a_0 = 3\), zaś \(a_3 = 10\).
Zadanie (3). Każda poruszająca się piłka wprawia w ruch w ciągu sekundy 3 inne piłki, przy czym po 2 sekundach zatrzymuje się. W chwili ,,zero’’ jest jedna poruszająca się piłka. Niech \(p(n)\) oznacza liczbę poruszających się piłek po \(n\) sekundach. Podać rekurencyjną definicję ciągu \(p(n)\).
Zadanie (4). Dla każdego \(n \geq 1\) niech \(t_n\) oznacza liczbę ciągów długości \(n\) zbudowanych z symboli 0,1,2, w których żadne dwie jedynki nie występują obok siebie. Znaleźć zależność rekurencyjną dla \(t_n\).
Zadanie (5). Oblicz granicę ciągów (lub wykaż, że nie istnieje).
a) \(a_n = \frac{1}{2n+21}\)
b) \(b_n = \frac{n^3-100n^2-1}{n^2+4}\)
c) \(c_n = \frac{7n^2-10000n+2}{2n^{2}+256n-7}\)
d) \(d_n = \left(\frac{1}{7}\right)^{n}\)
e) \(e_n = \sqrt{2n+9}\)
f) \(f_n = \sqrt{\frac{10n^2-1}{7n+3}}\)
Zadanie (6). Czwarty wyraz ciągu arytmetycznego jest równy 8. Oblicz sumę 12 początkowych wyrazów tego ciągu.
Zadanie (7). Piłka, odbijając się od ziemi osiąga za każdym razem wysokość wynoszącą \(\frac{7}{11}\) poprzedniej wysokości. Jak wysoko wzniosła się po drugim uderzeniu, jeżeli po ósmym odbiła się na wysokość 374 cm?
Zadanie (8). Dany jest ciąg geometryczny postaci:
Wyznacz wszystkie wartości \(p\), dla których granicą tego ciągu jest liczba: a) 1, b) 2, c) 0.
Zadanie (9). Okres połowicznego rozpadu pierwiastka to okres, po którym z danej ilości pierwiastka pozostaje jego połowa. Dla radu (\(Ra\ 226\)) wynosi on 1560 lat. Ile lat co najmniej trzeba czekać, aby z \(1g\) radu zostało mniej niż \(0,1 mg\)?
Zadanie (10). Bezpośrednio za pomocą twierdzenia Cauchyego o nierówności pomiędzy średnimi oraz twierdzenia o 3 ciągach wykaż, że \(\lim_{n \to \infty}\sqrt[n]{3} = 1.\) Czy tak samo można zbadać granicę \(\lim_{n \to \infty}\sqrt[n]{n} = 1\)?
Zadanie (11). Niech ciągi \((a_n)\) i \((b_n)\) spełniają warunek
Obliczyć granicę \(\lim_{n \to \infty}\frac{a_n}{b_n}\).
Zadanie (12). Niech \(x > 0\) oraz
Obliczyć granicę ciągu \((a_n)\).
Zadanie (13). Jeśli istnieje, to znaleźć wartość parametru \(t\), dla którego zachodzi:
Zadanie (14). [Sendlewski] Pasek kodu kreskowego tworzą na przemian kreski czarne i białe. Kod ten zawsze zaczyna się i kończy czarną kreską. Każda z kresek (czy to czarna, czy biała) ma grubość 1 albo 2. Ile jest pasków długości \(n\) o różnych kodach (kody zawsze czytamy od lewej do prawej strony)?
\(===>\) … kolejne ciekawe przykłady można znaleźć w książce A. Sendlewski - zliczanie rekurencyjne
Zadanie (15). Rozwiązać równania rekurencyjne przyjmując dowolny wyraz początkowy:
Zadanie (16). Zbadać zbieżność ciagów rekurencyjnych i określić ich granice przy zadanym wyborze pierwszego wyrazu:
(a)
(b)
(c)\(^*\)
(d)
Zadanie (17). Rozwiązać równania rekurencyjne:
Zadanie (18). Rozwinąć w ułamki łańcuchowe: \(\frac{5}{3}\), \(\sqrt{2}\), \(\sqrt{7}\).
Zadanie (19). Przygotuj symulacje (programy) obliczania liczb Fibonacciego metodą rekurencyjną oraz wzorem ogólnym (tu przyjmij \(\sqrt{5}\) jako stałą np. \(2,236068\), podobnie można od razu postąpić z \(\frac{1+\sqrt{5}}{2}\)). Dla jakiego najmniejszego kroku \(n\) oba wyniki będą się różnić?
Zadanie (20). Dany jest wielomian
Stosując algorytm Hornera uzyskujemy wzór
Wyprowadzić wzór rekurencyjny na tę procedurę.
Odp. \(w_n (x) = w_{n-1} (x) \cdot x + a_0\) dla \(n \geqslant 1\) i \(w_0(x) = a_0\)
Polecana literatura:#
M. Mrozek, ‘’Analiza matematyczna I. Notatki do wykładu matematyki komputerowej’’, UJ, Kraków, 2013.
P. Strzelecki, ‘’Analiza matematyczna I’’, UW, Warszawa, 2012.
M. Moszyński, ‘’Analiza matematyczna dla informatyków’’, UW, Warszawa, 2010.
M. Oberguggenberger, A. Ostermann, ‘’Analysis for Computer Scientists’’, Springer, London, 2011.
A. Ralston, ‘’Wstęp do analizy numerycznej’’, PWN, Warszawa, 1983.
D.B. Small, J.M. Hosnack, ‘’Ćwiczenia z analizy matematycznej z zastosowaniem systemów obliczeń symbolicznych’’, WNT, Warszawa, 1995.