Matematyka dyskretna 1/Wykład 7: Funkcje tworzące: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
(Nie pokazano 53 wersji utworzonych przez 4 użytkowników) | |||
Linia 1: | Linia 1: | ||
{{przyklad||| | {{przyklad||| | ||
Słynny matematyk Georg Pólya rozważał problem polegający na policzeniu wszystkich możliwych sposobów, na które można rozmienić 50 centów używając jednocentówek <math> | Słynny matematyk Georg Pólya rozważał problem polegający na policzeniu wszystkich możliwych sposobów, na które można rozmienić 50 centów używając jednocentówek <math>(1)</math>, pięciocentówek <math>(5)</math>, | ||
dziesięciocentówek <math> | dziesięciocentówek <math>(10)</math>, ćwierćdolarówek <math>(25)</math>, oraz półdolarówki <math>(50)</math>. Rozważania te doprowadziły go do użycia analitycznych metod funkcji tworzących w zaproponowanym przez niego rozwiązaniu. W tym i następnym wykładzie poznamy te metody i zobaczymy jak mogą być pomocne w zliczaniu rożnych obiektów kombinatorycznych. | ||
Wracając do problemu rozmieniania monet, wygodnie nam będzie posiadać jeszcze monetę <math> | Wracając do problemu rozmieniania monet, wygodnie nam będzie posiadać jeszcze monetę <math>[0]</math>, którą możemy interpretować jako brak monet. Wypiszmy teraz (nadużywając trochę notacji) nieskończoną sumę wszystkich możliwości rozmiany dowolnej kwoty za pomocą jednocentówek | ||
<center><math>A_1= | <center><math>A_1=[0]+(1)+(1)(1)+(1)(1)(1)+(1)(1)(1)(1)+\ldots | ||
</math></center> | </math></center> | ||
Linia 13: | Linia 13: | ||
<center><math>A_5= | <center><math>A_5=[0]+(5)+(5)(5)+(5)(5)(5)+(5)(5)(5)(5)+\ldots | ||
</math></center> | </math></center> | ||
Wtedy zbiór par <math>A_1 \times A_5</math> jest zbiorem wszystkich możliwości rozmiany kwoty | Wtedy zbiór par <math>A_1 \times A_5</math> jest zbiorem wszystkich możliwości rozmiany kwoty przy użyciu dowolnie wielu jednocentówek oraz pięciocentówek. | ||
<center><math>\ | <center><math>\begin{align} B= A_1 \times A_5 | ||
&= | &=\left([0]+(1)+(1)(1)+(1)(1)(1)+(1)(1)(1)(1)+\ldots\right)\\ | ||
&\times\left([0]+(5)+(5)(5)+(5)(5)(5)+(5)(5)(5)(5)+\ldots\right)\\ | |||
&= | &=[0]+(1)+(5)+(1)(1)+(1)(5)+(5)(5)+(1)(1)(1)+\ldots | ||
\ | \end{align}</math></center> | ||
Sumy wszystkich możliwości rozmiany za pomocą dziesięciocentówek <math> | Sumy wszystkich możliwości rozmiany za pomocą dziesięciocentówek <math>(10)</math>, ćwierćdolarówek <math>(25)</math>, oraz półdolarówek <math>(50)</math> wyglądają następująco: | ||
<center><math>\ | <center><math>\begin{align} A_{10} &= [0]+(10)+(10)(10)+(10)(10)(10)+(10)(10)(10)(10)+\ldots\\ | ||
A_{25} &= | A_{25} &= [0]+(25)+(25)(25)+(25)(25)(25)+(25)(25)(25)(25)+\ldots\\ | ||
A_{50} &= | A_{50} &= [0]+(50)+(50)(50)+(50)(50)(50)+(50)(50)(50)(50)+\ldots | ||
\ | \end{align}</math></center> | ||
Dodając kolejno monety <math> | Dodając kolejno monety <math>(10)</math>, <math>(25)</math>, i na końcu <math>(50)</math> do możliwych rozmian, uzyskujemy odpowiednio: | ||
<center><math>\ | <center><math>\begin{align} C&=B\times\left([0]+(10)+(10)(10)+(10)(10)(10)+(10)(10)(10)(10)+\ldots\right)\\ | ||
D&= | D&=C\times\left([0]+(25)+(25)(25)+(25)(25)(25)+(25)(25)(25)(25)+\ldots\right)\\ | ||
E&= | E&=D\times\left([0]+(50)+(50)(50)+(50)(50)(50)+(50)(50)(50)(50)+\ldots\right)\\ | ||
&= | &=[0]+(1)+(5)+(10)+(25)+(50)+(1)(1)+(1)(5)+(1)(10)+\ldots | ||
\ | \end{align}</math></center> | ||
Grupując teraz składniki sumy <math>E</math> w podsumy o tych samych wartościach dostajemy wyrażenie: | Grupując teraz składniki sumy <math>E</math> w podsumy o tych samych wartościach dostajemy wyrażenie:}} | ||
{{wzor|int|1| | {{wzor|int|1| | ||
<math>\begin{array} {rcl} | <math>\begin{array} {rcl} | ||
E&=&\big( | E&=&\big((1)\big)+\big((1)(1)\big)+\big((1)(1)(1)\big)+\big((1)(1)(1)(1)\big)\\ | ||
&&+\big( | &&+\big((1)(1)(1)(1)(1)+(5)\big)\\ | ||
&&+\big( | &&+\big((1)(1)(1)(1)(1)(1)+(5)(1)\big)+\ldots | ||
\end{array} | \end{array} | ||
</math>}} | </math>}} | ||
Zliczając zaś tylko składniki w podsumie odpowiadającej wartości <math>n</math> centów, otrzymujemy liczbę sposobów, na które można rozmienić <math>n</math> centów przy użyciu monet <math> | Zliczając zaś tylko składniki w podsumie odpowiadającej wartości <math>n</math> centów, otrzymujemy liczbę sposobów, na które można rozmienić <math>n</math> centów przy użyciu monet <math>(1)</math>, <math>(5)</math>, <math>(10)</math>, <math>(25)</math>, oraz <math>(50)</math>. Pomysłem pochodzącym od Pólya, było zastąpienie monety <math>(1)</math> przez zmienną <math>x</math>, monety <math>(5)</math> przez <math>x\cdot x\cdot x\cdot x\cdot x=x^5</math> i analogicznie <math>(10)</math> przez <math>x^{10}</math>, <math>(25)</math> przez <math>x^{25}</math>, oraz <math>(50)</math> przez <math>x^{50}</math>. Uzyskujemy w ten sposób nieskończony szereg zmiennej <math>x</math>: | ||
<center><math>\ | <center><math>\begin{align}{E}(x)&=\left(1+x+x^2+x^3\ldots \right)\cdot\left(1+x^5+x^{10}+x^{15}\ldots \right)\cdot\left(1+x^{10}+x^{20}+x^{30}\ldots \right)\\ | ||
&\cdot \left(1+x^{25}+x^{50}+x^{75}\ldots\right)\cdot \left(1+x^{50}+x^{100}+x^{150}\ldots \right)\\ | |||
&= | &=1+x+x^2+x^3+x^4+2x^5+2x^6+2x^7+2x^8+2x^9+4x^{10}+\ldots | ||
\ | \end{align}</math></center> | ||
Godne zauważenia jest, że liczba różnych możliwych sposobów rozmiany <math>n</math> centów (równa liczbie grup monet w odpowiednim nawiasie we wzorze ([[#int|1]])) jest równa współczynnikowi stojącemu przy jednomianie <math>x^n</math>. | Godne zauważenia jest, że liczba różnych możliwych sposobów rozmiany <math>n</math> centów (równa liczbie grup monet w odpowiednim nawiasie we wzorze ([[#int|1]])) jest równa współczynnikowi stojącemu przy jednomianie <math>x^n</math>. | ||
{{kotwica|funktw|'''Funkcja tworząca'''}} <math> | {{kotwica|funktw|'''Funkcja tworząca'''}} <math>{G}(x)</math> dla ciągu liczb rzeczywistych (lub zespolonych) <math>\left(g_0,g_1,g_2,g_3,\ldots\right)</math> to szereg funkcyjny zmiennej rzeczywistej (lub zespolonej) <math>x</math> postaci | ||
<center><math> | <center><math>{G}(x)=\sum_{n=0}^{\infty}{g_nx^n}=g_0+g_1x+g_2x^2+g_3x^3+g_4x^4+\ldots</math></center> | ||
</math></center> | |||
Na oznaczenie współczynnika <math>n</math>-tego wyrazu szeregu <math> | Na oznaczenie współczynnika <math>n</math>-tego wyrazu szeregu <math>{G}(x)</math> używać będziemy oznaczenia <math>{x^n}{G}(x)=g_n</math>. | ||
{{uwaga|Jak traktowac funkcje tworzące|| | {{uwaga|Jak traktowac funkcje tworzące|| | ||
Na funkcje tworzące można spojrzeć dwoiście. Pierwszym sposobem jest potraktowanie <math> | Na funkcje tworzące można spojrzeć dwoiście. Pierwszym sposobem jest potraktowanie <math>{G}(x)</math> jako szeregu liczb rzeczywistych | ||
(lub ogólniej zespolonych). Oczywistym pytaniem jest tu kwestia zbieżności szeregu <math> | (lub ogólniej zespolonych). Oczywistym pytaniem jest tu kwestia zbieżności szeregu <math>{G}(x)=\sum_{n=0}^{\infty}{g_nx^n}</math>. Z wykładu Analiza Matematyczna wiemy, że szereg <math>{G}(x)</math> jest zbieżny, jeśli istnieje stała <math>M\geq0</math> ograniczająca wszystkie skończone początkowe sumy, tzn. | ||
<center><math>\left\ | <center><math>\left\vert g_0\right\vert+\left\vert g_1x\right\vert+\left\vert g_2x^2\right\vert+\ldots+\left\vert g_nx^n\right\vert\leq M | ||
</math></center> | </math></center> | ||
zachodzi dla dowolnego <math>n\geq0</math>. Ponadto jeśli dla pewnej liczby <math>x_0\in\mathbb{R}</math> szereg <math> | zachodzi dla dowolnego <math>n\geq0</math>. Ponadto jeśli dla pewnej liczby <math>x_0\in\mathbb{R}</math> szereg <math>{G}(x_0)=g_0+g_1x_0+g_2x_0^2+\ldots</math> jest zbieżny, to i także szereg <math>{G}(x_1)=g_0+g_1x_1+g_2x_1^2+\ldots</math> jest zbieżny dla dowolnego <math>x_1\in\mathbb{R}</math> spełniającego <math>\left\vert x_1\right\vert\leq\left\vert x_0\right\vert</math>. Możemy więc określić ''promień zbieżności'' szeregu jako taką liczbę <math>r\in\mathbb{R}_*\cup{\left\{ {\infty} \right\}\ }={0,+\infty}</math>, że jeśli <math>\left\vert x\right\vert<r</math>, to <math>{G}(x)</math> jest zbieżny. | ||
Szereg <math>{G}(x)=g_0+g_1x+g_2x^2+\ldots</math> można więc potraktować jako funkcję | |||
<center><math>G:\left(-r,r\right)\longrightarrow\mathbb{R}</math>,</center> | |||
o wartościach <math>{G}(x)=\lim_{n\rightarrow\infty}{\left(g_0+g_1x+g_2x^2+\ldots+g_nx^n\right)}</math>. Oczywiście <math>{G}(0)=g_0</math>, więc dla <math>x=0</math> szereg <math>{G}(x)</math> jest zbieżny. | |||
</math></ | |||
Drugim podejściem, bardziej użytecznym w praktycznych obliczeniach i przekształceniach jest spojrzenie na szereg <math>{G}(x)=g_0+g_1x+g_2x^2+\ldots</math> jako formę zapisu ciągu <math>\left(g_0,g_1,g_2,\ldots\right)</math>, czyli jedynie jako ciąg symboli. Równości pomiędzy odpowiednimi wzorami służą rozwiązaniu problemów kombinatorycznych, | |||
Drugim podejściem, bardziej użytecznym w praktycznych obliczeniach i przekształceniach jest spojrzenie na szereg <math> | |||
tak więc traktujemy je jako równości dwu wyrażeń, a nie jako równość dwu funkcji rzeczywistych, pomimo że mają one uzasadnienia w języku analizy matematycznej. | tak więc traktujemy je jako równości dwu wyrażeń, a nie jako równość dwu funkcji rzeczywistych, pomimo że mają one uzasadnienia w języku analizy matematycznej. | ||
Jak zobaczymy na wielu przykładach, funkcje tworzące są bardzo użytecznym narzędziem przy wyznaczaniu wartości elementów ciągu. Jeśli bowiem <math> | Jak zobaczymy na wielu przykładach, funkcje tworzące są bardzo użytecznym narzędziem przy wyznaczaniu wartości elementów ciągu. Jeśli bowiem <math>{G}(x)=g_0+g_1x+g_2x^2+\ldots</math> jest funkcją tworzącą ciągu <math>\left(g_0,g_1,g_2,g_3,\ldots\right)</math>, oraz w jakiś sposób będziemy w stanie poznać postać zwartą funkcji <math>G(x)</math>, to rozwijając tę postać zwartą w szereg Taylora, poznamy kolejne współczynniki tego rozwinięcia. A współczynniki te, to właśnie kolejne wyrazy naszego ciągu. | ||
Będziemy się zajmowali jedynie tymi funkcjami, dla których promień zbieżności <math>r>0</math>. Ponadto będziemy pomijać problem zbieżności oraz wartość <math>r</math> promienia zbieżności, skupiając się jedynie na przekształceniach wzorów. Poniżej zebrane zostały te własności, które często wykorzystywane są w takich przekształceniach. | Będziemy się zajmowali jedynie tymi funkcjami, dla których promień zbieżności <math>r>0</math>. Ponadto będziemy pomijać problem zbieżności oraz wartość <math>r</math> promienia zbieżności, skupiając się jedynie na przekształceniach wzorów. Poniżej zebrane zostały te własności, które często wykorzystywane są w takich przekształceniach. | ||
Linia 111: | Linia 105: | ||
{{obserwacje|7.1|obs 7.1| | {{obserwacje|7.1|obs 7.1| | ||
Dla dwu funkcji tworzących <math> | Dla dwu funkcji tworzących <math>{F}(x)=f_0+f_1x+f_2x^2+\ldots</math> | ||
oraz <math> | oraz <math>{G}(x)=g_0+g_1x+g_2x^2+\ldots</math> mamy: | ||
<center><math>\ | <center><math>\begin{align}{F}(x)={G}{x}&\Leftrightarrow f_0=g_0,\ f_1=g_1,\ f_2=g_2,\ \ldots\\ | ||
&&\\ | &&\\ | ||
\alpha\cdot | \alpha\cdot{F}(x)+\beta\cdot{G}{x}&= \sum_{n=0}^{\infty}{\left(\alpha\cdot f_n+\beta\cdot g_n\right)x^n}\\ | ||
&= | &=\left(\alpha\cdot f_0+\beta\cdot g_0\right) + \left(\alpha\cdot f_1+\beta\cdot g_1\right)x + \left(\alpha\cdot f_2+\beta\cdot g_2\right)x^2 + \ldots\\ | ||
&&\\ | &&\\ | ||
{F}(x)\cdot{G}(x)&=\sum_{n=0}^{\infty}\left(\sum_{k=0}^n f_k g_{n-k}\right) x^n\\ | |||
&= | &= f_0g_0 + \left(f_0g_1+f_1g_0\right)x\\ | ||
& + \left(f_0g_2+f_1g_1+f_2g_0\right)x^2\\ | |||
& + \left(f_0g_3+f_1g_2+f_2g_1+f_3g_0\right)x^3+\ldots\\ | |||
\ | \end{align}</math></center>}} | ||
Wyrażenie <math> | Wyrażenie <math>{F}(x)\cdot{G}(x)</math> nazywać będziemy splotem szeregów <math>{F}(x)</math> oraz <math>{G}(x)</math>. | ||
{{twierdzenie|7.2|tw 7.2| | {{twierdzenie|7.2|tw 7.2| | ||
Linia 133: | Linia 127: | ||
<center><math> | <center><math>{G}(x)=g_0+g_1x+g_2x^2+g_3x^3+\ldots | ||
</math></center> | </math></center> | ||
ma odwrotną względem mnożenia (splotu), tzn. istnieje funkcja tworząca <math> | ma odwrotną względem mnożenia (splotu), tzn. istnieje funkcja tworząca <math>{U}(x)</math> taka, że <math>{U}(x){G}(x)=1</math>, | ||
wtedy i tylko wtedy, gdy <math>g_0\neq0</math>. | wtedy i tylko wtedy, gdy <math>g_0\neq0</math>. | ||
}} | }} | ||
Linia 145: | Linia 139: | ||
{{obserwacje|7.3|obs 7.3| | {{obserwacje|7.3|obs 7.3| | ||
Dla dwu funkcji tworzących <math> | Dla dwu funkcji tworzących <math>{F}(x)=f_0+f_1x+f_2x^2+\ldots</math> oraz <math>{G}(x)=g_0+g_1x+g_2x^2+\ldots</math> mamy:}} | ||
oraz <math> | |||
{{wzor|wzor_2|2| | |||
<math>x^m{G}(x)=0+\ldots+0x^{m-1}+g_0x^m+g_1x^{m+1}+g_2x^{m+2}+\ldots</math>}} | |||
{{wzor|wzor_3|3| | |||
<math>\frac{{G}(x)-\sum_{i=0}^{m-1}{g_ix^i}}{x^{m}}=g_m+g_{m+1}x+g_{m+2}x^{2}+g_{m+3}x^{3}+g_{m+4}x^{4}+\ldots</math>}} | |||
{{wzor|wzor_4|4| | |||
<math>{G}(\alpha x)=g_0+g_1\alpha x+g_2\alpha^2x^2+g_3\alpha^3x^3+g_4\alpha^4x^4+\ldots</math>}} | |||
{{wzor|wzor_5|5| | |||
<math>{G'}(x)=g_1+2g_2x+3g_3x^2+4g_4x^3+5g_5x^4+\ldots</math>}} | |||
{{wzor|wzor_6|6| | |||
<math>\int {G}(x)dx = 0+g_0x+\frac{1}{2}g_1x^2+\frac{1}{3}g_2x^3+\frac{1}{4}g_3x^4+\ldots</math>}} | |||
{{wzor|wzor_7|7| | |||
\frac{ | <math>\frac{{G}(x)}{1-x}=g_0+\left(g_0+g_1\right)x+\left(g_0+g_1+g_2\right)x^2+\ldots</math>}} | ||
Linia 165: | Linia 168: | ||
<center><math>\left(1+x\right)^m | <center><math>\left(1+x\right)^m | ||
={m \choose 0}x^0 + {m \choose 1}x + {m \choose 2}x^2+\ldots+{m \choose m-1}x^{m-1}+{m \choose m}x^m | ={m \choose 0}x^0 + {m \choose 1}x + {m \choose 2}x^2+\ldots+{m \choose m-1}x^{m-1}+{m \choose m}x^m | ||
=\sum_{n=0}^\infty {m \choose n}x^n. | =\sum_{n=0}^m {m \choose n}x^n</math></center> | ||
Przyjrzyjmy się teraz rozwinięciu w szereg funkcji <math>\left(1+x\right)^y</math>, gdzie <math>y\in\mathbb{R}</math> jest parametrem. Rozwinięcie takie okaże się bardzo przydatne w rozwiązywaniu wielu przykładów. Aby poznać ciąg odpowiadający tej funkcji wprowadźmy definicję. | |||
{{kotwica|usymdwu|'''Uogólniony symbol dwumianowy'''}} <math>{ y \choose n }</math>, gdzie <math>y\in\mathbb{R}</math> oraz <math>n\in\mathbb{N}</math> jest oznaczeniem na | |||
<center><math>{ y \choose n }= \frac{y^{\underline{n}}}{n!}= | |||
\frac{y\cdot\left(y-1\right)\cdot\ldots\cdot\left(y-\left(n-1\right)\right)}{1\cdot2\cdot\ldots\cdot\left(n-1\right)\cdot n}</math></center> | |||
{{uwaga||| | |||
Oczywiście dla <math>y\in\mathbb{N}</math> spełniającego dodatkowo <math>y\geq n</math>, uogólniony symbol dwumianowy <math>{ y \choose n }</math> jest liczbą <math>n</math>-elementowych podzbiorów zbioru <math>y</math>-elementowego. | |||
}} | |||
{{twierdzenie|7.4|tw 7.4| | |||
Dla liczby rzeczywistej <math>y</math> oraz liczby naturalnej <math>n</math> zachodzi | |||
<center><math>\left(1+x\right)^y=\sum_{n=0}^{\infty}{ y \choose n }x^n</math></center> | |||
}} | |||
{{wniosek|7.5|wn 7.5| | |||
Dla liczby naturalnej <math>m</math> zachodzi | |||
<center><math>\frac{1}{\left(1-x\right)^{m+1}}=\sum_{n=0}^{\infty}{ m+n \choose n }x^n</math></center>}} | |||
{{dowod||| | |||
Dowód zostawiony jest jako ćwiczenie [[Matematyka dyskretna 1/Ćwiczenia 7: Funkcje tworzące#cw_3|3]]. | |||
}} | |||
{{przyklad||| | |||
Policzmy sumę | |||
<center><math>\sum_{k=0}^nk^2=1+4+9+\ldots+n^2</math></center> | |||
Zacznijmy od znalezienia zwartej postaci funkcji tworzącej | |||
<math>{G}(x)=\sum_{n=0}^{\infty}n^2x^n</math>. Korzystając z [[#wn_7.5|Wniosku 7.5]] otrzymujemy:}} | |||
{{wzor|wzor_8|8| | |||
<math>\frac{1}{1-x} = \sum_{n=0}^{\infty}{n \choose n}x^n=\sum_{n=0}^{\infty}x^n</math>,}} | |||
{{wzor|wzor_9|9| | |||
<math>\frac{1}{\left(1-x\right)^2} = \sum_{n=0}^{\infty}{n+1 \choose n}x^n= \sum_{n=0}^{\infty}nx^n+\sum_{n=0}^{\infty}x^n</math>}} | |||
Po przekształceniu równości ([[#wzor_9|9]]) uzyskuje się | |||
{{wzor|wzor_10|10| | |||
<math> | |||
\sum_{n=0}^{\infty}nx^n= \frac{1}{\left(1-x\right)^2} | |||
-\frac{1}{1-x}</math>}} | |||
Powołując się ponownie na [[#wn_7.5|Wniosek 7.5]] otrzymujemy | |||
<center><math>\frac{1}{\left(1-x\right)^3} | |||
=\sum_{n=0}^{\infty}{ n+2 \choose n}x^n | |||
=\frac{1}{2}\sum_{n=0}^{\infty}n^2x^n+\frac{3}{2}\sum_{n=0}^{\infty}nx^n+\sum_{n=0}^{\infty}x^n</math>,</center> | |||
co w połączeniu z równościami ([[#wzor_9|9]]) oraz ([[#wzor_10|10]]) | |||
daje zwartą postać funkcji tworzącej <math>{G}(x)</math> dla ciągu <math>1,4,9,\ldots,n^2,\ldots</math>: | |||
<center><math>{G}(x)=\sum_{n=0}^{\infty}n^2x^n | |||
=\frac{2}{\left(1-x\right)^3}-\frac{3}{\left(1-x\right)^2}+\frac{1}{1-x}</math></center> | |||
Naszym zadaniem było jednakże policzenie funkcji tworzącej <math>H(x)</math> dla ciągu <math>1,1+4,1+4+9,\ldots,1+4+9+\ldots+n^2,\ldots</math>, tzn. ciągu sum początkowych wyrazów ciągu <math>1,4,9,\ldots,n^2,\ldots</math>. Aby uzyskać <math>{H}(x)</math> wystarczy więc skorzystać ze wzoru ([[#wzor_7|7]]) i podzielić <math>{G}(x)</math> przez <math>1-x</math>. | |||
Tak więc poszukiwanym rozwiązaniem są współczynniki funkcji tworzącej | |||
<center><math>{H}(x)=\frac{{G}(x)}{1-x} | |||
=\frac{2}{\left(1-x\right)^4}-\frac{3}{\left(1-x\right)^3}+\frac{1}{\left(1-x\right)^2}</math></center> | |||
Korzystając po raz kolejny z [[#wn_7.5|Wniosku 7.5]] otrzymujemy | |||
<center><math>\begin{align}{H}(x) | |||
&=2\sum_{n=0}^{\infty}{n+3 \choose n}x^n-3\sum_{n=0}^{\infty}{n+2 \choose n}x^n+\sum_{n=0}^{\infty}{n+1 \choose n}x^n\\ | |||
&=\sum_{n=0}^{\infty}\left(\frac{1}{3}n^3+\frac{1}{2}n^2+\frac{1}{6}n\right)x^n. | |||
\end{align}</math></center> | |||
W konsekwencji zachodzi równość | |||
<center><math>\sum_{k=1}^nk^2={x^n}{H}(x)=\frac{2n^3+3n+n}{6}</math></center> | |||
{{przyklad||| | |||
Wracamy do przykładu z monetami. Występowały tam funkcje tworzące postaci | |||
<center><math>{A_k}(x) = 1+x^k+x^{2k}+x^{3k}+\ldots</math>,</center> | |||
dla <math>k=1,5,10,25</math> i <math>50</math>. | |||
Z równości ([[#wzor_7|7]]) wiemy, że | |||
<center><math>1+x^k+x^{2k}+x^{3k}+\ldots, =\frac{1}{1-x^k} | |||
</math></center> | |||
tak więc: | |||
<center><math>\begin{align}{A}(x)= {A_1}(x)&= \frac{1}{1-x},\\ | |||
{B}(x)= {A}(x)\cdot {A_5}(x) &=\frac{{A}(x)}{1-x^5},\\ | |||
{C}(x)= {B}(x)\cdot {A_{10}}(x) &=\frac{{B}(x)}{1-x^{10}},\\ | |||
{D}(x)= {C}(x)\cdot {A_{25}}(x) &=\frac{{C}(x)}{1-x^{25}},\\ | |||
{E}(x)= {D}(x)\cdot {A_{50}}(x) &=\frac{{D}(x)}{1-x^{50}}, | |||
\end{align}</math></center> | |||
skąd natychmiast: | |||
<center><math>\begin{align}{A}(x)&=1+x{A}(x),\\ | |||
{B}(x)&={A}(x)+x^5{B}(x),\\ | |||
{C}(x)&={B}(x)+x^{10}{C}(x),\\ | |||
{C}(x)&={D}(x)+x^{25}{C}(x),\\ | |||
{D}(x)&={E}(x)+x^{50}{D}(x). | |||
\end{align}</math></center> | |||
Równości te dają zależności między współczynnikami: | |||
<center><math>a_n=1,\quad b_n=a_n+b_{n-5},\quad c_n=b_n+c_{n-10},\quad | |||
d_n=c_n+d_{n-25},\quad</math><math>\quad e_n=d_n+e_{n-50}</math></center> | |||
Wykorzystując te zależności rekurencyjne możemy wypełnić następującą tabelę:}} | |||
<center><math> | |||
\begin{array}{|c||c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|} | |||
\hline | |||
n & 0 & 5 & 10 & 15 & 20 & 25 & 30 & 35 & 40 & 45 & 50 & 55 & 60 & 65 & 70 & 75 & 80 & 85 & 90 & 95 & 100\\ | |||
\hline\hline | |||
a_n & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1\\ | |||
\hline | |||
b_n & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 & 21\\ | |||
\hline | |||
c_n & 1 & 2 & 4 & 6 & 9 & 12 & 16 & 10 & 25 & 30 & 36 & 42 & 49 & 56 & 64 & 72 & 81 & & 100 & & 121\\ | |||
\hline | |||
d_n & 1 & & & & & 13 & & & & & 49 & & & & & 121 & & & & & 242\\ | |||
\hline | |||
e_n & 1 & & & & & & & & & & 50 & & & & & & & & & & 292\\ | |||
\hline | |||
\end{array} | |||
</math></center> | |||
Pół dolara można rozmienić na <math>50</math> sposobów. | |||
Z kolei rozmieniać jednego dolara można na aż <math>292</math> sposoby. | |||
Do problemu tego wrócimy jeszcze w następnym wykładzie. | |||
==Funkcje tworzące w rozwiązywaniu zależności rekurencyjnych== | |||
{{przyklad||| | |||
Rozważmy ciąg Fibonacci'ego, tzn. ciąg <math>\left(f_0,f_1,f_2,f_3,\ldots\right)</math> zdefiniowany w następujący sposób: | |||
<center><math>\begin{align} f_0&=0,\\ | |||
f_1&=1,\\ | |||
f_n&=f_{n-1}+f_{n-2}\quad\text{dla}\ n\geq 2. | |||
\end{align}</math></center> | |||
Znamy już postać zwartą jego wyrazów. Tym razem zobaczymy jak można ją otrzymać używając funkcji tworzących. Zależności rekurencyjne dla <math>f_n</math> przekładają się natychmiast na następujące równanie, jakie musi spełniać funkcja tworząca <math>{F}(x)</math> dla ciągu Fibonacci'ego | |||
<center><math>{F}(x) | |||
=\sum_{n=0}^{\infty}f_nx^n | |||
=x+\sum_{n=2}^{\infty}\left(f_{n-1}+f_{n-2}\right)x^n=x+x{F}(x)+x^2{F}(x)</math></center> | |||
Przekształcając powyższe równanie otrzymujemy:}} | |||
{{wzor|wzor_11|11| | |||
<math> | |||
{F}(x)=\frac{x}{1-x-x^2}</math>}} | |||
Celem, który chcemy osiągnąć to wykorzystanie funkcji <math>\frac{x}{1-x-x^2}</math> do przedstawienia współczynników <math>f_n</math> w postaci zwartej. | |||
Pierwszym krokiem będzie rozłożenie ułamka w równaniu ([[#wzor_11|11]]) | |||
na sumę ułamków o mianownikach będących funkcjami liniowymi | |||
<center><math>{F}(x)=\frac{x}{1-x-x^2} | |||
=\frac{x}{\left(1-z_0 x\right)\left(1-z_1 x\right)} | |||
=\frac{1}{\sqrt{5}}\left(\frac{1}{\left(1-z_0 x\right)}-\frac{1}{\left(1-z_1 x\right)}\right)</math>,</center> | |||
gdzie <math>z_0=\frac{1+\sqrt{5}}{2}</math> jest złotą liczbą oraz <math>z_1=\frac{1-\sqrt{5}}{2}</math> liczbą do niej sprzężoną. Korzystając z równania ([[#wzor_7|7]]) otrzymujemy teraz | |||
<center><math>{F}(x) | |||
=\frac{1}{\sqrt{5}}\left(\sum_{n=0}^{\infty}{{z_0}^nx^n}-\sum_{n=0}^{\infty}{{z_1}^nx^n}\right) | |||
=\frac{1}{\sqrt{5}}\sum_{n=0}^{\infty}{\left({z_0}^n-{z_1}^n\right)x^n}</math></center> | |||
Tak więc dostajemy szybko znaną nam już postać zwartą <math>f_n=\frac{1}{\sqrt{5}}\left({z_0}^n-{z_1}^n\right)</math>. | |||
Podczas rozwiązywania przykładu związanego z liczbami Fibonacci'ego | |||
natrafiliśmy na problem polegający na przedstawieniu w postaci szeregu wyrażenia | |||
<math>\frac{x}{1-x-x^2}</math>. | |||
Przyjrzymy się dokładniej tego typu wyrażeniom. | |||
{{kotwica|stwiel|'''Stopień wielomianu'''}} <math>deg{{P}(x)}=n</math>, | |||
jeśli <math>{P}(x)=p_0+p_1x+\ldots+p_nx^n</math>. | |||
{{kotwica|funkwym|'''Funkcja wymierna'''}} <math>{R}(x)</math> to funkcja postaci <math>\frac{{P}(x)}{{Q}(x)}</math>, gdzie <math>{P}(x)</math> oraz <math>{Q}(x)\neq0</math> są wielomianami skończonego stopnia. | |||
{{obserwacje|7.6|obs 7.6| | |||
Niech <math>A(x)</math> oraz <math>{B}(x)</math> będą wielomianami | |||
<math>deg{{A}(x)}\geq deg{{B}(x)}</math>. Wtedy istnieją wielomiany <math>{Q}(x)</math> oraz <math>{R}(x)</math> takie, że | |||
<center><math>{A}(x)={Q}(x){B}(x)+{R}(x)</math>,</center> | |||
gdzie <math>deg{{R}(x)}< deg{{A}(x)}=deg{{Q}(x)}+deg{{B}(x)}</math>.}} | |||
{{przyklad||| | |||
Niech | |||
<center><math>{A}(x)=3x^5+5x^4+2x^3+x^2+2\quad\text{oraz}\quad{B}(x)=x^3+2x^2-1</math>.</center> | |||
Wtedy wielomiany | |||
<center><math>{Q}(x)=3x^2-x+3\quad\text{oraz}\quad{R}(x)=x+2 | |||
</math></center> | |||
spełniają | |||
<center><math>\begin{align} {A}(x) & =3x^5+5x^4+2x^3+x^2+2\\ | |||
& =(3x^2-x+3) \cdot (x^3+2x^2-1)+x+2\\ | |||
& ={Q}(x){B}(x)+{R}(x). | |||
\end{align}</math></center> | |||
Ponadto <math>deg{{A}(x)}=5=2+3=deg{{Q}(x)}+deg{{B}(x)}</math>.}} | |||
{{wniosek|7.7|wn 7.7| | |||
Niech <math>{P}(x)</math> oraz <math>{Q}(x)</math> będą wielomianami takimi, że <math>deg{{P}(x)}\geq deg{{Q}(x)}</math>. Wtedy funkcję wymierną <math>{R}(x)={P}(x)/ {Q}(x)</math>, można przedstawić w postaci | |||
<center><math>{R}(x)=\frac{{P}(x)}{{Q}(x)}={A}(x)+\frac{{B}(x)}{{Q}(x)}</math>,</center> | |||
dla pewnych wielomianów <math>{A}(x)</math> oraz <math>{B}(x)</math> | |||
spełniających <math>deg{{B}(x)}<deg{{Q}(x)}</math>.}} | |||
Będziemy więc skupiali się jedynie nad takimi funkcjami wymiernymi <math>{R}(x)={P}(x)/{Q}(x)</math> dla których <math>deg{{P}(x)}<deg{{Q}(x)}</math>. | |||
{{twierdzenie|7.8|tw 7.8| | |||
Niech <math>{P}(x)</math> oraz <math>{Q}(x)</math> będą wielomianami takimi, że | |||
* <math>deg{{P}(x)}<deg{{Q}(x)}</math>, | |||
* <math>{Q}(x)={S}(x){T}(x)</math>, gdzie oba wielomiany <math>{S}(x),{T}(x)</math> są stopnia co najmniej <math>2</math>, | |||
* <math>q_0\neq0</math>. | |||
Wtedy istnieją wielomiany <math>{A}(x)</math> oraz <math>{B}(x)</math> takie, że <math>deg{{A}(x)}<deg{{S}(x)}</math> i | |||
<math>deg{{B}(x)}<deg{{T}(x)}</math> oraz | |||
<center><math>\frac{{P}(x)}{{Q}(x)} | |||
=\frac{{A}(x)}{{S}(x)}+\frac{{B}(x)}{{T}(x)}</math></center> | |||
}} | |||
{{uwaga||| | |||
[[#tw_7.8|Twierdzenie 7.8]] pozwala na rozbijanie skomplikowanych funkcji wymiernych na sumę prostszych. | |||
}} | |||
{{wniosek|[Metoda rozwijania funkcji wymiernej w szereg]|| | |||
Rozważmy funkcję wymierną w postaci | |||
<center><math>{R}(x)=\frac{{P}(x)}{{Q}(x)}</math>,</center> | |||
gdzie <math>deg{{P}(x)}<deg{{Q}(x)}</math>, oraz <math>q_0\neq0</math>. Załóżmy ponadto, że wielomian <math>{Q}(x)</math> rozkłada się na następujący iloczyn czynników liniowych | |||
<center><math>{Q}(x) | |||
=q_0\left(1-\rho_1x\right)^{m_1}\cdot\left(1-\rho_2x\right)^{m_2}\cdot\ldots\cdot\left(1-\rho_kx\right)^{m_k}</math></center> | |||
Warto wspomnieć, że dalecy nie każdy wielomian ma taki rozkład. Na przykład <math>1+x^2</math> jest nierozkładalny i nieliniowy. Wykorzystując parokrotnie [[#tw_7.8|Twierdzenie 7.8]] otrzymujemy wielomiany <math>{P_1}(x),\ldots,{P_k}(x)</math> takie, że | |||
<center><math>{R}(x) | |||
=\frac{{P}(x)}{{Q}(x)}=\frac{{P_1}(x)}{\left(1-\rho_1x\right)^{m_1}}+\frac{{P_2}(x)}{\left(1-\rho_2x\right)^{m_2}}+\ldots+\frac{{P_k}(x)}{\left(1-\rho_kx\right)^{m_k}}</math>,</center> | |||
gdzie <math>deg{{P_i}(x)}<m_i</math>. Na mocy [[#obs_7.6|Obserwacji 7.6]] możemy sprowadzić wielomian <math>{P_i}(x)</math> do | |||
<center><math>\begin{align}{P_i}(x)&={P_i^1}(x)\left(1-\rho_ix\right)+\gamma_{m_i}\\ | |||
&={P_i^2}(x)\left(1-\rho_ix\right)^2+\gamma_{m_i-1}\left(1-\rho_ix\right)+\gamma_{m_i}\\ | |||
&\vdots\\ | |||
&=\gamma_1\left(1-\rho_ix\right)^{m_i-1}+\ldots+\gamma_{m_i-1}\left(1-\rho_ix\right)+\gamma_{m_i}, | |||
\end{align}</math></center> | |||
gdzie <math>m_i\geq deg{{P_i}(x)}>deg{{P_i^1}(x)}>deg{{P_i^2}(x)}>\ldots</math>. W konsekwencji otrzymamy | |||
<center><math>{R}(x)= \sum_{i=1}^k{\left(\frac{\gamma_{i,1}}{1-\rho_ix}+\frac{\gamma_{i,2}}{\left(1-\rho_ix\right)^2}+\ldots+\frac{\gamma_{i,m_i}}{\left(1-\rho_ix\right)^{m_i}}\right)}</math></center> | |||
Mnożąc teraz obie strony przez | |||
<center><math>{Q}(x)/q_0=\left(1-\rho_1x\right)^{m_1}\cdot\left(1-\rho_2x\right)^{m_2}\cdot\ldots\cdot\left(1-\rho_kx\right)^{m_k} | |||
</math></center> | </math></center> | ||
i porównując współczynniki przy odpowiadających potęgach <math>x^i</math> uzyskujemy pewien układ równań, rozwiązanie którego da nam poszukiwane współczynniki <math>\gamma_{i,j}</math>. Z drugiej strony, z [[#wn_7.5|Wniosku 7.5]] wynika, że | |||
<center><math>\frac{1}{\left(1-\rho x\right)^{m+1}} | |||
=\sum_{n=1}^{\infty}{ { m+n \choose m } \rho^n x^n} | |||
</math></center> | |||
i w konsekwencji:}} | |||
{{wzor|wzor_12|12| | |||
<math> | |||
[x^n]{R}(x)= \sum_{i=1}^k{\left(\gamma_{i,1}+ | |||
\gamma_{i,2}{n+1\choose 1}+ | |||
\ldots+ | |||
\gamma_{i,m_i}{n+m_i-1\choose m_i - 1} | |||
\right)}\rho_i^n</math>}} | |||
{{przyklad||| | |||
Opisaną wyżej metodę ogólną zilustrujemy na przykładzie funkcji | |||
<center><math>{R}(x)=\frac{x^2}{1-x-x^2+x^3}</math></center> | |||
Wielomian <math>1-x-x^2+x^3</math> ma jeden podwójny pierwiastek <math>x=1</math> oraz jeden pojedynczy <math>x=-1</math>. Poznana metoda rozwijania funkcji wymiernej w szereg daje więc | |||
<center><math>{R}(x) | |||
=\frac{x^2}{\left(1-x\right)^2\cdot\left(1+x\right)}=\frac{\alpha}{1-x}+\frac{\beta}{\left(1-x\right)^2}+\frac{\gamma}{1+x}</math></center> | |||
Mnożąc obie strony przez <math>\left(1-x\right)^2\cdot\left(1+x\right)</math> otrzymujemy: | |||
<center><math>x^2=\alpha\left(1-x^2\right)+\beta\left(1+x\right)+\gamma\left(1-2x+x^2\right)</math></center> | |||
Dwa wielomiany są równe, gdy współczynniki przy odpowiadających potęgach są sobie równe. Wartości <math>\alpha, \beta, \gamma</math> można więc wyliczyć z układu równań | |||
<center><math>\left\lbrace\begin{array} {rrrcl} | |||
\alpha & +\ \beta & +\ \gamma & = & 0\\ | |||
\alpha & & -\ 2\gamma & = & 0\\ | |||
& -\ \beta & +\ \gamma & = & 1. | |||
\end{array} \right.</math></center> | |||
Rozwiązaniem powyższego układu są wartości <math>\alpha=-\frac{1}{4},\ | |||
\beta=\frac{1}{2},\ \gamma=-\frac{1}{4}</math>. W konsekwencji otrzymujemy szereg | |||
<center><math>\begin{align}{R}(x)&=\sum_{n=0}^{\infty}\left(-\frac{1}{4}+\frac{1}{2}\left(n+1\right) - \frac{1}{4}\left(-1\right)^n\right)x^n\\ | |||
&=x^2+x^3+2x^4+2x^5+3x^6+3x^7+4x^8+\ldots. | |||
\end{align}</math></center> | |||
Jeżeli mianownik <math>{Q}(x)</math> funkcji wymiernej <math>{R}(x)=\frac{{P}(x)}{{Q}(x)}</math> posiada jedynie pierwiastki jednokrotne, to następne twierdzenie znacznie przyspiesza rozkład <math>{R}(x)</math> na sumę.}} | |||
{{twierdzenie|7.9|tw 7.9| | |||
Jeśli <math>{R}(x)={P}(x)/{Q}(x)</math>, gdzie <math>{Q}(x)=q_0\cdot\left(1-\rho_1x\right)\cdot\ldots\cdot\left(1-\rho_1x\right)</math> i liczby <math>\rho_1,\ldots,\rho_l</math> są parami różne, to w przypadku gdy <math>{P}(x)</math> jest wielomianem stopnia mniejszego niż <math>l</math>, zachodzi | |||
<center><math>{x^n}{R}(x) | |||
=a_1\rho_1^n+\ldots+a_l\rho_l^n, | |||
\quad\text{dla}\ a_k=\frac{-\rho_k\cdot{P}(1/\rho_k)}{{Q'}(1/\rho_k)}</math></center> | |||
}} | |||
{{przyklad||| | |||
Mianownik <math>{Q}(x)</math> funkcji wymiernej | |||
<center><math>{R}(x)=\frac{{P}(x)}{{Q}(x)}=\frac{2x}{1-5x-2x^2+24x^3}</math></center> | |||
ma trzy różne pierwiastki i można <math>{R}(x)</math> przedstawić jako | |||
<center><math>{R}(x)=\frac{2x}{\left(1+2x\right)\left(1-3x\right)\left(1-4x\right)}</math></center> | |||
Na mocy [[#tw_7.9|Twierdzenia 7.9]] otrzymujemy więc, że | |||
<center><math>{x^n}{R}(x)=-\frac{2}{15}\left(-2\right)^n-\frac{6}{5}3^n+\frac{4}{3}4^n</math></center>}} | |||
Jak widzieliśmy na przykładzie ciągu Fibonacci'ego, funkcje tworzące mogą być bardzo pomocne przy szukaniu postaci zwartej pewnych ciągów zadanych rekurencyjnie. | |||
{{kotwica|jednlin|'''Jednorodne, liniowe równanie rekurencyjne'''}} to równanie postaci | |||
<center><math>\left\lbrace | |||
\begin{array} {rcl} | |||
r_0&=&c_0,\\ | |||
&\cdots&\\ | |||
r_{k-1}&=&c_{k-1},\\ | |||
r_n&=&a_1r_{n-1}+a_2r_{n-2}+\ldots+a_kr_{n-k}\quad\text{dla}\ n\geq k, | |||
\end{array} | |||
\right.</math></center> | |||
gdzie <math>c_0,\ldots,c_{k-1},a_1,\ldots,a_k</math> są liczbami rzeczywistymi (niezależnymi od parametru rekurencyjnego <math>n</math>). | |||
Rozważmy najpierw przypadek, gdy <math>k=2</math>, tzn. równanie postaci | |||
{{wzor|wzor 13|13| | |||
<math> | |||
\left\lbrace | |||
\begin{array} {rcl} | |||
r_0&=&c_0,\\ | |||
r_1&=&c_1,\\ | |||
r_n&=&a_1r_{n-1}+a_2r_{n-2}\quad\text{dla}\ n\geq 2. | |||
\end{array} | |||
\right.</math>}} | |||
Przykładem takiego równania była zależność opisująca ciąg Fibonacci'ego. Zastosowanie ostatniej równości z ([[#wzor_13|13]]) do funkcji tworzącej ciągu <math>\left(r_0,r_1,r_2,\ldots\right)</math> daje: | |||
<center><math>\begin{align}{R}(x)&=r_0+r_1x+r_2x^2+r_3x^3+\ldots+r_nx^n+\ldots\\ | |||
&=c_0+c_1x+\left(a_1r_1+a_2r_0\right)x^2+\ldots+\left(a_1r_{n-1}+a_2r_{n-2}\right)x^n+\ldots\\ | |||
&=c_0+\left(c_1-a_1c_0\right)x+a_1x{R}(x)+a_2x^2{R}(x), | |||
\end{align}</math></center> | |||
tak więc | |||
<center><math>{R}(x)= \frac{c_0+\left(c_1-a_1c_0\right)x}{1-a_1x-a_2x^2} | |||
</math></center> | |||
Dla funkcji <math>{A}(x)=1-a_1x-a_2x^2=\left(1-\rho_1x\right)\left(1-\rho_2x\right)</math> mogą zajść trzy przypadki: | |||
* <math>\rho_1 \neq \rho_2</math> są różnymi liczbami rzeczywistymi. Wtedy | |||
<center><math>r_n= \alpha\rho_1^n+\beta\rho_2^n</math>,</center> | |||
gdzie <math>\alpha</math> oraz <math>\beta</math> są liczbami rzeczywistymi. | |||
* <math>\rho_1 = \rho_2</math>. Wtedy | |||
<center><math>r_n= \left(\alpha n+\beta\right)\rho_1^n</math>,</center> | |||
gdzie <math>\alpha</math> oraz <math>\beta</math> są liczbami rzeczywistymi. | |||
* <math>\bigtriangledown</math> Wartości <math>\rho_1</math> oraz <math>\rho_2</math> są różnymi liczbami zespolonymi. W tym wypadku całe rozumowanie przeprowadzone wcześniej dla liczb rzeczywistych pozostaje w mocy, tyle że dokonywane jest teraz na liczbach zespolonych. Dostajemy więc | |||
<center><math>r_n= \alpha\rho_1^n+\beta\rho_2^n</math></center> | |||
gdzie <math>\alpha</math> oraz <math>\beta</math> są pewnymi liczbami zespolonymi. Przypadek pierwszy jest więc szczególną sytuacją obecnego przypadku. Może być jednak rozważany bez znajomości liczb zespolonych. | |||
Wracamy teraz do ogólnego, jednorodnego liniowego równania rekurencyjnego. | |||
Analogicznie do przypadku, gdy <math>k=2</math>, otrzymujemy że | |||
<center><math>{R}(x)= \frac{{P}(x)}{1-a_1x-a_2x^2-\ldots-a_kx^k}</math>,</center> | |||
gdzie <math>{P}(x)</math> jest wielomianem co najwyżej stopnia <math>k-1</math>, zależnym od wartości <math>c_0,\ldots,c_{k-1},a_1,\ldots,a_k</math>. | |||
Korzystając z ogólnej metody rozwijania funkcji wymiernej w szereg, możemy odzyskać wyrazy ciągu <math>r_n</math>, jako współczynniki <math>[x^n]{R}(x)</math> zgodnie z równaniem ([[#wzor_12|12]]). | |||
{{przyklad||| | |||
Równanie rekurencyjne ma następującą postać | |||
<center><math>\left\lbrace | |||
\begin{array} {rcl} | |||
r_0&=&0,\\ | |||
r_1&=&0,\\ | |||
r_2&=&1,\\ | |||
r_n&=&r_{n-1}+r_{n-2}-r_{n-3}\quad\text{dla}\ n\geq 3. | |||
\end{array} | |||
\right.</math></center> | |||
Ostatnia zależność prowadzi do funkcji tworzącej <math>{R}(x)</math> spełniającej | |||
<center><math>{R}(x)=x^2 + x{R}(x) + x^2{R}(x) - x^3{R}(x)</math></center> | |||
Po dokonaniu prostego wyliczenia dostajemy: | |||
<center><math>{R}(x)=\frac{x^2}{1-x-x^2+x^3}</math></center> | |||
W przykładzie omawianym przy okazji metody rozwijania funkcji wymiernej w szereg, wyliczyliśmy współczynniki <math>[x^n]{R}(x)</math>, a zatem mamy: | |||
<center><math>r_n=-\frac{1}{4}+\frac{1}{2}\left(n+1\right) - \frac{1}{4}\left(-1\right)^n\quad\text{dla dowolnego}\ n=0,1,2,3,\ldots</math></center>}} |
Aktualna wersja na dzień 22:35, 15 wrz 2023
Przykład
Słynny matematyk Georg Pólya rozważał problem polegający na policzeniu wszystkich możliwych sposobów, na które można rozmienić 50 centów używając jednocentówek , pięciocentówek , dziesięciocentówek , ćwierćdolarówek , oraz półdolarówki . Rozważania te doprowadziły go do użycia analitycznych metod funkcji tworzących w zaproponowanym przez niego rozwiązaniu. W tym i następnym wykładzie poznamy te metody i zobaczymy jak mogą być pomocne w zliczaniu rożnych obiektów kombinatorycznych.
Wracając do problemu rozmieniania monet, wygodnie nam będzie posiadać jeszcze monetę , którą możemy interpretować jako brak monet. Wypiszmy teraz (nadużywając trochę notacji) nieskończoną sumę wszystkich możliwości rozmiany dowolnej kwoty za pomocą jednocentówek
i analogicznie przeanalizujmy sumę dla pieciocentówek
Wtedy zbiór par jest zbiorem wszystkich możliwości rozmiany kwoty przy użyciu dowolnie wielu jednocentówek oraz pięciocentówek.
Sumy wszystkich możliwości rozmiany za pomocą dziesięciocentówek , ćwierćdolarówek , oraz półdolarówek wyglądają następująco:
Dodając kolejno monety , , i na końcu do możliwych rozmian, uzyskujemy odpowiednio:
(1)
Zliczając zaś tylko składniki w podsumie odpowiadającej wartości centów, otrzymujemy liczbę sposobów, na które można rozmienić centów przy użyciu monet , , , , oraz . Pomysłem pochodzącym od Pólya, było zastąpienie monety przez zmienną , monety przez i analogicznie przez , przez , oraz przez . Uzyskujemy w ten sposób nieskończony szereg zmiennej :
Godne zauważenia jest, że liczba różnych możliwych sposobów rozmiany centów (równa liczbie grup monet w odpowiednim nawiasie we wzorze (1)) jest równa współczynnikowi stojącemu przy jednomianie .
Funkcja tworząca dla ciągu liczb rzeczywistych (lub zespolonych) to szereg funkcyjny zmiennej rzeczywistej (lub zespolonej) postaci
Na oznaczenie współczynnika -tego wyrazu szeregu używać będziemy oznaczenia .
Na funkcje tworzące można spojrzeć dwoiście. Pierwszym sposobem jest potraktowanie jako szeregu liczb rzeczywistych (lub ogólniej zespolonych). Oczywistym pytaniem jest tu kwestia zbieżności szeregu . Z wykładu Analiza Matematyczna wiemy, że szereg jest zbieżny, jeśli istnieje stała ograniczająca wszystkie skończone początkowe sumy, tzn.
zachodzi dla dowolnego . Ponadto jeśli dla pewnej liczby szereg jest zbieżny, to i także szereg jest zbieżny dla dowolnego spełniającego . Możemy więc określić promień zbieżności szeregu jako taką liczbę , że jeśli , to jest zbieżny.
Szereg można więc potraktować jako funkcję
o wartościach . Oczywiście , więc dla szereg jest zbieżny.
Drugim podejściem, bardziej użytecznym w praktycznych obliczeniach i przekształceniach jest spojrzenie na szereg jako formę zapisu ciągu , czyli jedynie jako ciąg symboli. Równości pomiędzy odpowiednimi wzorami służą rozwiązaniu problemów kombinatorycznych, tak więc traktujemy je jako równości dwu wyrażeń, a nie jako równość dwu funkcji rzeczywistych, pomimo że mają one uzasadnienia w języku analizy matematycznej.
Jak zobaczymy na wielu przykładach, funkcje tworzące są bardzo użytecznym narzędziem przy wyznaczaniu wartości elementów ciągu. Jeśli bowiem jest funkcją tworzącą ciągu , oraz w jakiś sposób będziemy w stanie poznać postać zwartą funkcji , to rozwijając tę postać zwartą w szereg Taylora, poznamy kolejne współczynniki tego rozwinięcia. A współczynniki te, to właśnie kolejne wyrazy naszego ciągu.
Będziemy się zajmowali jedynie tymi funkcjami, dla których promień zbieżności . Ponadto będziemy pomijać problem zbieżności oraz wartość promienia zbieżności, skupiając się jedynie na przekształceniach wzorów. Poniżej zebrane zostały te własności, które często wykorzystywane są w takich przekształceniach.
Obserwacja 7.1
Dla dwu funkcji tworzących oraz mamy:
Wyrażenie nazywać będziemy splotem szeregów oraz .
Twierdzenie 7.2
Funkcja tworząca postaci
ma odwrotną względem mnożenia (splotu), tzn. istnieje funkcja tworząca taka, że ,
wtedy i tylko wtedy, gdy .
Następne własności są bardzo pomocne w dokonywanych przekształceniach funkcji tworzących.
Obserwacja 7.3
(2)
(3)
(4)
(5)
(6)
(7)
Funkcje tworzące w zliczaniu
Widzieliśmy już, że dla
Przyjrzyjmy się teraz rozwinięciu w szereg funkcji , gdzie jest parametrem. Rozwinięcie takie okaże się bardzo przydatne w rozwiązywaniu wielu przykładów. Aby poznać ciąg odpowiadający tej funkcji wprowadźmy definicję.
Uogólniony symbol dwumianowy , gdzie oraz jest oznaczeniem na
Oczywiście dla spełniającego dodatkowo , uogólniony symbol dwumianowy jest liczbą -elementowych podzbiorów zbioru -elementowego.
Twierdzenie 7.4
Dla liczby rzeczywistej oraz liczby naturalnej zachodzi
Wniosek 7.5
Dla liczby naturalnej zachodzi
Dowód
Dowód zostawiony jest jako ćwiczenie 3.

Przykład
Policzmy sumę
Zacznijmy od znalezienia zwartej postaci funkcji tworzącej
, (8)
(9)
Po przekształceniu równości (9) uzyskuje się
(10)
Powołując się ponownie na Wniosek 7.5 otrzymujemy
co w połączeniu z równościami (9) oraz (10)
daje zwartą postać funkcji tworzącej dla ciągu :
Naszym zadaniem było jednakże policzenie funkcji tworzącej dla ciągu , tzn. ciągu sum początkowych wyrazów ciągu . Aby uzyskać wystarczy więc skorzystać ze wzoru (7) i podzielić przez .
Tak więc poszukiwanym rozwiązaniem są współczynniki funkcji tworzącej
Korzystając po raz kolejny z Wniosku 7.5 otrzymujemy
W konsekwencji zachodzi równość
Przykład
Wracamy do przykładu z monetami. Występowały tam funkcje tworzące postaci
dla i .
Z równości (7) wiemy, że
tak więc:
skąd natychmiast:
Równości te dają zależności między współczynnikami:
Pół dolara można rozmienić na sposobów.
Z kolei rozmieniać jednego dolara można na aż sposoby.
Do problemu tego wrócimy jeszcze w następnym wykładzie.
Funkcje tworzące w rozwiązywaniu zależności rekurencyjnych
Przykład
Rozważmy ciąg Fibonacci'ego, tzn. ciąg zdefiniowany w następujący sposób:
Znamy już postać zwartą jego wyrazów. Tym razem zobaczymy jak można ją otrzymać używając funkcji tworzących. Zależności rekurencyjne dla przekładają się natychmiast na następujące równanie, jakie musi spełniać funkcja tworząca dla ciągu Fibonacci'ego
(11)
Celem, który chcemy osiągnąć to wykorzystanie funkcji do przedstawienia współczynników w postaci zwartej.
Pierwszym krokiem będzie rozłożenie ułamka w równaniu (11)
na sumę ułamków o mianownikach będących funkcjami liniowymi
gdzie jest złotą liczbą oraz liczbą do niej sprzężoną. Korzystając z równania (7) otrzymujemy teraz
Tak więc dostajemy szybko znaną nam już postać zwartą .
Podczas rozwiązywania przykładu związanego z liczbami Fibonacci'ego natrafiliśmy na problem polegający na przedstawieniu w postaci szeregu wyrażenia . Przyjrzymy się dokładniej tego typu wyrażeniom.
Stopień wielomianu , jeśli .
Funkcja wymierna to funkcja postaci , gdzie oraz są wielomianami skończonego stopnia.
Obserwacja 7.6
Niech oraz będą wielomianami . Wtedy istnieją wielomiany oraz takie, że
Przykład
Niech
Wtedy wielomiany
spełniają
Wniosek 7.7
Niech oraz będą wielomianami takimi, że . Wtedy funkcję wymierną , można przedstawić w postaci
dla pewnych wielomianów oraz
Będziemy więc skupiali się jedynie nad takimi funkcjami wymiernymi dla których .
Twierdzenie 7.8
Niech oraz będą wielomianami takimi, że
- ,
- , gdzie oba wielomiany są stopnia co najmniej ,
- .
Wtedy istnieją wielomiany oraz takie, że i oraz
Twierdzenie 7.8 pozwala na rozbijanie skomplikowanych funkcji wymiernych na sumę prostszych.
Wniosek [Metoda rozwijania funkcji wymiernej w szereg]
Rozważmy funkcję wymierną w postaci
gdzie , oraz . Załóżmy ponadto, że wielomian rozkłada się na następujący iloczyn czynników liniowych
Warto wspomnieć, że dalecy nie każdy wielomian ma taki rozkład. Na przykład jest nierozkładalny i nieliniowy. Wykorzystując parokrotnie Twierdzenie 7.8 otrzymujemy wielomiany takie, że
gdzie . Na mocy Obserwacji 7.6 możemy sprowadzić wielomian do
gdzie . W konsekwencji otrzymamy
Mnożąc teraz obie strony przez
i porównując współczynniki przy odpowiadających potęgach uzyskujemy pewien układ równań, rozwiązanie którego da nam poszukiwane współczynniki . Z drugiej strony, z Wniosku 7.5 wynika, że
(12)
Przykład
Opisaną wyżej metodę ogólną zilustrujemy na przykładzie funkcji
Wielomian ma jeden podwójny pierwiastek oraz jeden pojedynczy . Poznana metoda rozwijania funkcji wymiernej w szereg daje więc
Mnożąc obie strony przez otrzymujemy:
Dwa wielomiany są równe, gdy współczynniki przy odpowiadających potęgach są sobie równe. Wartości można więc wyliczyć z układu równań
Rozwiązaniem powyższego układu są wartości . W konsekwencji otrzymujemy szereg
Twierdzenie 7.9
Jeśli , gdzie i liczby są parami różne, to w przypadku gdy jest wielomianem stopnia mniejszego niż , zachodzi
Przykład
Mianownik funkcji wymiernej
ma trzy różne pierwiastki i można przedstawić jako
Na mocy Twierdzenia 7.9 otrzymujemy więc, że
Jak widzieliśmy na przykładzie ciągu Fibonacci'ego, funkcje tworzące mogą być bardzo pomocne przy szukaniu postaci zwartej pewnych ciągów zadanych rekurencyjnie.
Jednorodne, liniowe równanie rekurencyjne to równanie postaci
gdzie są liczbami rzeczywistymi (niezależnymi od parametru rekurencyjnego ).
Rozważmy najpierw przypadek, gdy , tzn. równanie postaci
(13)
Przykładem takiego równania była zależność opisująca ciąg Fibonacci'ego. Zastosowanie ostatniej równości z (13) do funkcji tworzącej ciągu daje:
tak więc
Dla funkcji mogą zajść trzy przypadki:
- są różnymi liczbami rzeczywistymi. Wtedy
gdzie oraz są liczbami rzeczywistymi.
- . Wtedy
gdzie oraz są liczbami rzeczywistymi.
- Wartości oraz są różnymi liczbami zespolonymi. W tym wypadku całe rozumowanie przeprowadzone wcześniej dla liczb rzeczywistych pozostaje w mocy, tyle że dokonywane jest teraz na liczbach zespolonych. Dostajemy więc
gdzie oraz są pewnymi liczbami zespolonymi. Przypadek pierwszy jest więc szczególną sytuacją obecnego przypadku. Może być jednak rozważany bez znajomości liczb zespolonych.
Wracamy teraz do ogólnego, jednorodnego liniowego równania rekurencyjnego. Analogicznie do przypadku, gdy , otrzymujemy że
gdzie jest wielomianem co najwyżej stopnia , zależnym od wartości .
Korzystając z ogólnej metody rozwijania funkcji wymiernej w szereg, możemy odzyskać wyrazy ciągu , jako współczynniki zgodnie z równaniem (12).
Przykład
Równanie rekurencyjne ma następującą postać
Ostatnia zależność prowadzi do funkcji tworzącej spełniającej
Po dokonaniu prostego wyliczenia dostajemy:
W przykładzie omawianym przy okazji metody rozwijania funkcji wymiernej w szereg, wyliczyliśmy współczynniki , a zatem mamy: