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:

(1+1n)n.

Gdyby dopuścić rosnącą w roku liczbę n wpłat i wypłat, to ILE wypłacimy? Potrzebujemy sprawdzić istnienie i obliczyć

limn(1+1n)n.

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 an=(1+1n)n. Mamy więc

e=limn(1+1n)n .

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 bn=1+11!+12!+13!++1n!).

Rozważając x1==xn=1+1n oraz xn+1=1, w nierówności Cauchyego pomiędzy średnimi otrzymujemy

1+1n++1+1n+1n+1((1+1n)(1+1n)1)1/(n+1),

a stąd

(n+2n+1)n+1(1+1n)n

więc również

(1+1n+1)n+1(1+1n)n

i an+1an. Czyli ciąg (an) jest niemalejący.

Połóżmy bn=(1+1n)n+1 i zauważmy, że anbn=1(nn+1)n+1=1(11n+1)n+1.

Z nierówności pomiędzy średnimi zastosowanej do x1==xn+1=11n+1 oraz xn+2=1 otrzymujemy, że:

11n+1++11n+1+1n+2((11n+1)(11n+1)1)1/(n+2).

Stąd (n+1n+2)n+2(11n+1)n+1, a więc też

(11n+2)n+2(11n+1)n+1.

Czyli ciąg ((11n+1)n+1)nN jest niemalejący. Ponieważ bn=1(11n+1)n+1, to możemy wywnioskować że ciąg (bn) jest nierosnący, a stąd

a1a2anbnb2b1.

Ciąg (an) jest więc niemalejący i ograniczony z góry (np. przez b1), 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 ann, to (1+1an)anne,

(b) jeżeli bnn, to (1+1bn)bnne,

(c) jeżeli cnn, to (1+1cn)cnne.

A teraz: dowodzimy wybranego z tych wzorów.

Zadanie 4.1. Obliczyć granicę ciągu

an=(n2+3n2+1)3n2+3.

Rozwiązanie. Przekształcimy do postaci pozwalającej skorzystać z powyższych własności:

an=(n2+3n2+1)3n2+3=(1+2n2+1)(n2+12)6=((1+2n2+1)(n2+12))6e6,

gdzie wykorzystaliśmy, że (1+2n2+1)(n2+12)e, gdy n.

Zadanie 4.2. Oblicz granicę ciągu (nn+1)n.

Rozwiązanie: ponieważ limnnn+1=1, to limn(nn+1)n=[1].

Przekształcimy wyraz badanego ciągu tak, aby pozbyć się symbolu nieoznaczonego i w granicy odnaleźć liczbę e

(nn+1)n=(n+1n)n=[(1+1n)n]1.

Czyli

limn(nn+1)n=e1.

Zadanie 4.3. Oblicz granicę limn(1+1n)an+b dla aR{0}.

Rozwiązanie: skoro limn(1+1n)an+b=[1±], gdzie znak w wykładniku zależy od znaku liczby a, spróbujemy wykorzystać liczbę e:

(1+1n)an+b=[(1+1n)n]a(1+1n)b.

Obliczamy granicę

limn(1+1n)an+b=[ea1b]=ea.

Zadanie 4.4. Obliczyć granicę ciągu an=(3n13n+1)n+3.

Rozwiązanie: tu również przekształcimy wyraz ciągu

an=(3n13n+1)n+3=(3n1+223n+1)n+3=(123n+1)3n+1223+83,

czyli

an=((123n+1)3n+12)23(123n+1)83,

a stąd ane231, \ gdy n.

Zadanie 4.5 Zbadać monotoniczność ciągu (an), gdzie an=1n2+2.

Rozwiązanie: jest oczywiste, że dla każdej liczby naturalnej n prawdziwe są nierówności

(n+1)2+2=(n2+2)+(2n+1)>n2+2 ,
1n2+2>1(n+1)2+2 ,
an>an+1 .

Wykazaliśmy więc, że ciąg (an) jest malejący.

Zadanie 4.6. Obliczyć granicę ciągu (an), gdzie an=nn.

Rozwiązanie. Oszacujemy z dołu wyrażenie (1+1n)n. Z dwumianu Newtona możemy napisać nierówności,

(1+1n)n>1+n1n>n>1 ,

(1+1n)2n>n>1,

(1+1n)2>nn>1.

Ale limn(1+1n)=1, więc po zastosowaniu twierdzenia o trzech ciągach otrzymujemy

limnnn=1 .

Zadanie 4.7 Dany jest ciąg (sn), gdzie

sn=1+11!+12!++1n! .

Wykazać, że ciąg (sn), jest zbieżny.

Rozwiązanie. Ponieważ sn+1=sn+1(n+1)! więc stwierdzamy, że ciąg (sn) jest rosnący. Aby wykazać, że jest on ograniczony z góry napiszmy

sn=1+11!+12!++1n!<1+120+121+122++12n1=
=1+1(12)n112=1+2(1(12)n)<3 .

Wykazaliśmy, że ciąg (sn) jest rosnący i ograniczony z góry, a więc jest zbieżny, czyli istnieje limnsn=s.

Zadania samodzielne.

(1) Oblicz granicę:

(a)

an=(11n)n

(b)

an=(11n2)n

(c)

an=(3n+53n+2)n

(d)

an=(1+1n2n+1)n2+2

(e)

an=(1+n+1n)n+3.

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 log10b=logb z logarytmami naturalnymi logeb=lnb. Mamy następujące wzory:

logb=lnbln10 ,lnb=logbloge ..

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=e12lna,

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 an oznacza pozycję cząsteczki po n sekundach. Podać rekurencyjną zależność dla an wiedząc, że a0=3, zaś a3=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 n1 niech tn 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 tn.

Zadanie (5). Oblicz granicę ciągów (lub wykaż, że nie istnieje).

a) an=12n+21

b) bn=n3100n21n2+4

c) cn=7n210000n+22n2+256n7

d) dn=(17)n

e) en=2n+9

f) fn=10n217n+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ą 711 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:

2,2p1,2(p1)2,2(p1)3,

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,1mg?

Zadanie (10). Bezpośrednio za pomocą twierdzenia Cauchyego o nierówności pomiędzy średnimi oraz twierdzenia o 3 ciągach wykaż, że limn3n=1. Czy tak samo można zbadać granicę limnnn=1?

Zadanie (11). Niech ciągi (an) i (bn) spełniają warunek

an+bn3=(2+3)n.

Obliczyć granicę limnanbn.

Zadanie (12). Niech x>0 oraz

an=xan1,a1=x.

Obliczyć granicę ciągu (an).

Zadanie (13). Jeśli istnieje, to znaleźć wartość parametru t, dla którego zachodzi:

limn(3nt3n+5)2n=e5.

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:

(a) xn+1=5n+1,
(b) xn+1=2xn+3n,
(c) xn+1=4xn+1n+1,
(d) xn+1=xnn+2,
(e) xn+1=xn2
(f) xn+1=(xn)n+1.

Zadanie (16). Zbadać zbieżność ciagów rekurencyjnych i określić ich granice przy zadanym wyborze pierwszego wyrazu:

(a)

an+1=5an2+an53,a1{1,3,6,1819},

(b)

bn+1=7bn3,b1[0,+),

(c)

cn+1=sincn.c1R,

(d)

dn+1=10dn294,d1{2,4}.

Zadanie (17). Rozwiązać równania rekurencyjne:

(a) xn+1=(n+3)3xn,(b) xn+1=17nxn,(c) xn+1=35n+4xn,(d) xn+1=22n+2xn,(e) xn+1=52n+1xn,(f) xn+1=(n+2)2(n+3)3xn,(g) xn+1=3n(n+1)xn,(h) xn+1=(11n+3)xn,(i) xn+1=1+3n+13xn.

Zadanie (18). Rozwinąć w ułamki łańcuchowe: 53, 2, 7.

Zadanie (19). Przygotuj symulacje (programy) obliczania liczb Fibonacciego metodą rekurencyjną oraz wzorem ogólnym (tu przyjmij 5 jako stałą np. 2,236068, podobnie można od razu postąpić z 1+52). Dla jakiego najmniejszego kroku n oba wyniki będą się różnić?

Zadanie (20). Dany jest wielomian

wn(x)=anxn+an1xn1++a1x+a0.

Stosując algorytm Hornera uzyskujemy wzór

wn(x)=(anxn1+an1xn2++a1)x+a0.

Wyprowadzić wzór rekurencyjny na tę procedurę.

Odp. wn(x)=wn1(x)x+a0 dla n1 i w0(x)=a0

Polecana literatura:#

  1. M. Mrozek, ‘’Analiza matematyczna I. Notatki do wykładu matematyki komputerowej’’, UJ, Kraków, 2013.

  2. P. Strzelecki, ‘’Analiza matematyczna I’’, UW, Warszawa, 2012.

  3. M. Moszyński, ‘’Analiza matematyczna dla informatyków’’, UW, Warszawa, 2010.

  4. M. Oberguggenberger, A. Ostermann, ‘’Analysis for Computer Scientists’’, Springer, London, 2011.

  5. A. Ralston, ‘’Wstęp do analizy numerycznej’’, PWN, Warszawa, 1983.

  6. D.B. Small, J.M. Hosnack, ‘’Ćwiczenia z analizy matematycznej z zastosowaniem systemów obliczeń symbolicznych’’, WNT, Warszawa, 1995.

  7. A. Sendlewski - zliczanie rekurencyjne

  8. M.M. Sysło, praca z uczniem uzdolnionym

  9. skrypt: prof. Jaworskiego, prof. Palki i prof. Szymańskiego

  10. materiał prof. Strzeleckiego - strony 300-308.