Test Arka: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Arek (dyskusja | edycje)
Nie podano opisu zmian
Arek (dyskusja | edycje)
Nie podano opisu zmian
Linia 1: Linia 1:
==Problemy ze wzorami na osiłku==
==Problemy ze wzorami na osiłku==
<math>\displaystyle M</math> <math>M'</math> <math>M' </math>
<math>\displaystyle M</math> <math>\displaystyle M'</math> <math>\displaystyle M' </math>
<math>{\large a^{\sum_{i=1}^{10}i}}</math>
<math>{\large a^{\sum_{i=1}^{10}i}}</math>



Wersja z 08:41, 22 sie 2006

Problemy ze wzorami na osiłku

M M M Parser nie mógł rozpoznać (nieznana funkcja „\large”): {\displaystyle {\large a^{\sum_{i=1}^{10}i}}}

A powinno to wyglądać tak: http://www.ii.uj.edu.pl/~pawlik1/MediaWiki


zxczxczxczxc

Konwersja Arka Konwersja Arka 2 Konwersja Arka 3



{thm}{Twierdzenie} {obs}[thm]{Obserwacja} {con}[thm]{Wniosek}

{article} {../makraB}

Funkcje tworzące

Przykład [Uzupelnij]

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 (1), pięciocentówek (5), dziesięciocentówek (10), ćwierćdolarówek (25), oraz półdolarówki (50). 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ę [0], 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

A1=[0]+(1)+(1)(1)+(1)(1)(1)+(1)(1)(1)(1)+

i analogicznie przeanalizujmy sumę dla pieciocentówek

A5=[0]+(5)+(5)(5)+(5)(5)(5)+(5)(5)(5)(5)+

Wtedy zbiór par A1×A5 jest zbiorem wszystkich możliwości rozmiany kwoty mając do dyspozycji dowolnie wiele jednocentówek oraz pięciocentówek.

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \aligned B= A_1 \times A_5 &=&\left( \left[0\right]+\left( 1 \right)+\left( 1 \right)\left( 1 \right)+\left( 1 \right)\left( 1 \right)\left( 1 \right)+\left( 1 \right)\left( 1 \right)\left( 1 \right)\left( 1 \right)+\ldots \right)\\ &&\times\left( \left[0\right]+\left( 5 \right)+\left( 5 \right)\left( 5 \right)+\left( 5 \right)\left( 5 \right)\left( 5 \right)+\left( 5 \right)\left( 5 \right)\left( 5 \right)\left( 5 \right)+\ldots \right)\\ &=&\left[0\right]+\left( 1 \right)+\left( 5 \right)+\left( 1 \right)\left( 1 \right)+\left( 1 \right)\left( 5 \right)+\left( 5 \right)\left( 5 \right)+\left( 1 \right)\left( 1 \right)\left( 1 \right)+\ldots \endaligned}

Sumy wszystkich możliwości rozmiany za pomocą dziesięciocentówek (10), ćwierćdolarówek (25), oraz półdolarówek (50) wyglądają następująco:

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \aligned A_{10} &=& \left[0\right]+\left( 10 \right)+\left( 10 \right)\left( 10 \right)+\left( 10 \right)\left( 10 \right)\left( 10 \right)+\left( 10 \right)\left( 10 \right)\left( 10 \right)\left( 10 \right)+\ldots\\ A_{25} &=& \left[0\right]+\left( 25 \right)+\left( 25 \right)\left( 25 \right)+\left( 25 \right)\left( 25 \right)\left( 25 \right)+\left( 25 \right)\left( 25 \right)\left( 25 \right)\left( 25 \right)+\ldots\\ A_{50} &=& \left[0\right]+\left( 50 \right)+\left( 50 \right)\left( 50 \right)+\left( 50 \right)\left( 50 \right)\left( 50 \right)+\left( 50 \right)\left( 50 \right)\left( 50 \right)\left( 50 \right)+\ldots. \endaligned}

Dodając kolejno monety (10), (25), i na końcu (50) do możliwych rozmian uzyskujemy odpowiednio:

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \aligned C&=&B\times\left( \left[0\right]+\left( 10 \right)+\left( 10 \right)\left( 10 \right)+\left( 10 \right)\left( 10 \right)\left( 10 \right)+\left( 10 \right)\left( 10 \right)\left( 10 \right)\left( 10 \right)+\ldots \right)\\ D&=&C\times\left( \left[0\right]+\left( 25 \right)+\left( 25 \right)\left( 25 \right)+\left( 25 \right)\left( 25 \right)\left( 25 \right)+\left( 25 \right)\left( 25 \right)\left( 25 \right)\left( 25 \right)+\ldots \right)\\ E&=&D\times\left( \left[0\right]+\left( 50 \right)+\left( 50 \right)\left( 50 \right)+\left( 50 \right)\left( 50 \right)\left( 50 \right)+\left( 50 \right)\left( 50 \right)\left( 50 \right)\left( 50 \right)+\ldots \right)\\ &=&\left[0\right]+\left( 1 \right)+\left( 5 \right)+\left( 10 \right)+\left( 25 \right)+\left( 50 \right)+\left( 1 \right)\left( 1 \right)+\left( 1 \right)\left( 5 \right)+\left( 1 \right)\left( 10 \right)+\ldots \endaligned}

Grupując teraz składniki sumy E w podsumy o tych samych wartościach dostajemy wyrażenie:

E=((1))+((1)(1))+((1)(1)(1))+((1)(1)(1)(1))+((1)(1)(1)(1)(1)+(5))+((1)(1)(1)(1)(1)(1)+(5)(1))+

Zliczając zaś tylko składniki w podsumie odpowiadającej wartości n centów, otrzymujemy liczbę sposobów, na które można rozmienić n centów przy użyciu monet (1), (5), (10), (25), oraz (50). Pomysłem pochodzącym od Pólya, było zastąpienie monety (1) przez zmienną x, monety (5) przez xxxxx=x5 i analogicznie (10) przez x10, (25) przez x25, oraz (50) przez x50. Uzyskujemy w ten sposób nieskończony szereg zmiennej x:

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \aligned E\!\left( x \right)&=&\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 \endaligned}

Godne zauważenia jest, że liczba różnych możliwych sposobów rozmiany n centów (równa liczbie grup monet w odpowiednim nawiasie we wzorze (Uzupelnic int wzor S|)) jest równa współczynnikowi stojącemu przy jednomianie xn.

Funkcja tworząca G(x) dla ciągu liczb rzeczywistych (lub zespolonych) (g0,g1,g2,g3,) to szereg funkcyjny zmiennej rzeczywistej (lub zespolonej) x postaci

G(x)=n=0gnxn=g0+g1x+g2x2+g3x3+g4x4+.

Na oznaczenie współczynnika n-tego wyrazu szeregu G(x) używać będziemy oznaczenia [xn]G(x)=gn.

Uwaga [Uzupelnij]

Na funkcje tworzące można spojrzeć dwoiście. Pierwszym sposobem jest potraktowanie G(x) jako szeregu liczb rzeczywistych (lub ogólniej zespolonych). Oczywistym pytaniem jest tu kwestia zbieżności szeregu G(x)=n=0gnxn. Z wykładu Analiza Matematyczna wiemy, że szereg G(x) jest zbieżny wtedy i tylko wtedy, gdy istnieje stała M0 ograniczająca wszystkie skończone początkowe sumy, tzn.

|g0|+|g1x|+|g2x2|++|gnxn|M

zachodzi dla dowolnego n0. Ponadto jeśli dla pewnej liczby x0 szereg G(x0)=g0+g1x0+g2x02+ jest zbieżny, to i także szereg G(x1)=g0+g1x1+g2x12+ jest zbieżny dla dowolnego x1 spełniającego |x1||x0|. Możemy więc określić promień zbieżności szeregu jako taką liczbę r*{}=[0,+], że

  • jeśli x<r, to G(x) jest zbieżny;
  • jeśli x>r, to G(x) jest rozbieżny.

Szereg G(x)=g0+g1x+g2x2+ można więc potraktować jako funkcję

G:(r,r),

o wartościach G(x)=limn(g0+g1x+g2x2++gnxn). Oczywiście G(0)=g0, więc dla x=0 szereg G(x) jest zbieżny.

Drugim podejściem, bardziej użytecznym w praktycznych obliczeniach i przekształceniach jest spojrzenie na szereg G(x)=g0+g1x+g2x2+ jako formę zapisu ciągu (g0,g1,g2,), 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 G(x)=g0+g1x+g2x2+ jest funkcją tworzącą ciągu (g0,g1,g2,g3,), oraz w jakiś sposób będziemy w stanie poznać postać zwartą funkcji G(x), 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 r>0. Ponadto będziemy pomijać problem zbieżności oraz wartość r 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 [Uzupelnij]

Dla dwu funkcji tworzących F(x)=f0+f1x+f2x2+ oraz G(x)=g0+g1x+g2x2+ mamy:

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \aligned F\!\left( x \right)= G\!\left( x \right)&\Leftrightarrow& f_0=g_0,\ f_1=g_1,\ f_2=g_2,\ \ldots\\ &&\\ \alpha\cdot F\!\left( x \right)+\beta\cdot G\!\left( x \right)&=& \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\!\left( x \right)\cdot G\!\left( x \right)&=&\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\\ \endaligned}

Wyrażenie F(x)G(x) nazywać będziemy splotem szeregów F(x) oraz G(x).

Twierdzenie [Uzupelnij]

Funkcja tworząca postaci

G(x)=g0+g1x+g2x2+g3x3+

ma odwrotną względem mnożenia (splotu), tzn. istnieje funkcja tworząca U(x) taka, że U(x)G(x)=1, wtedy i tylko wtedy, gdy g00.

Następne własności są bardzo pomocne w dokonywanych przekształceniach funkcji tworzących.

Obserwacja [Uzupelnij]

Dla dwu funkcji tworzących F(x)=f0+f1x+f2x2+ oraz G(x)=g0+g1x+g2x2+ mamy:

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \aligned x^m G\!\left( x \right)&=&0+\ldots+0x^{m-1}+g_0x^m+g_1x^{m+1}+g_2x^{m+2}+\ldots\\ \frac{ G\!\left( x \right)-\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\\ G\!\left( \alpha x \right)&=&g_0+g_1\alpha x+g_2\alpha^2x^2+g_3\alpha^3x^3+g_4\alpha^4x^4+\ldots\\ G'\!\left( x \right)&=&g_1+2g_2x+3g_3x^2+4g_4x^3+5g_5x^4+\ldots\\ \int G\!\left( x \right)dx &=& 0+g_0x+\frac{1}{2}g_1x^2+\frac{1}{3}g_2x^3+\frac{1}{4}g_3x^4+\ldots\\ \frac{ G\!\left( x \right)}{1-x}&=&g_0+\left( g_0+g_1 \right)x+\left( g_0+g_1+g_2 \right)x^2+\ldots \endaligned}

Funkcje tworzące w zliczaniu

Widzieliśmy już, że dla n

(1+x)m=(m0)x0+(m1)x+(m2)x2++(mm1)xm1+(mm)xm=n=0(mn)xn.

Przyjrzyjmy się teraz rozwinięciu w szereg funkcji (1+x)y, gdzie y 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 (yn), gdzie y oraz n jest oznaczeniem na

Parser nie mógł rozpoznać (błąd składni): {\displaystyle { 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}. }
Uwaga [Uzupelnij]

Oczywiście dla y spełniającego dodatkowo yn, uogólniony symbol dwumianowy (yn) jest liczbą n-elementowych podzbiorów zbioru y-elementowego.

Twierdzenie [Uzupelnij]

Dla liczby rzeczywistej y oraz liczby naturalnej n zachodzi

(1+x)y=n=0(yn)xn.

Wniosek [Uzupelnij]

Dla liczby naturalnej m zachodzi

1(1x)m+1=n=0(m+nn)xn.

Dowód [Uzupelnij]

Dowód zostawiony jest jako ćwiczenie [ex][ex newton for integer].

Przykład [Uzupelnij]

Policzmy sumę

k=0nk2=1+4+9++n2.

Zacznijmy od znalezienia zwartej postaci funkcji tworzącej G(x)=n=0n2xn. Korzystając z Wniosku Uzupelnic con newton for integer| otrzymujemy:

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \aligned \frac{1}{1-x}&=&\sum_{n=0}^{\infty}{n \choose n}x^n=\sum_{n=0}^{\infty}x^n,\\ \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. \endaligned}

Po przekształceniu równości (Uzupelnic eq 11|) uzyskuje się

n=0nxn=1(1x)211x.

Powołując się ponownie na Wniosek Uzupelnic con newton for integer| otrzymujemy

1(1x)3=n=0(n+2n)xn=12n=0n2xn+32n=0nxn+n=0xn,

co w połączeniu z równościami (Uzupelnic eq 11|) oraz (Uzupelnic eq 122|) daje zwartą postać funkcji tworzącej G(x) dla ciągu 1,4,9,,n2,:

G(x)=n=0n2xn=2(1x)33(1x)2+11x.

Naszym zadaniem było jednakże policzenie funkcji tworzącej H(x) dla ciągu 1,1+4,1+4+9,,1+4+9++n2,, tzn. ciągu sum początkowych wyrazów ciągu 1,4,9,,n2,. Aby uzyskać H(x) wystarczy więc skorzystać ze wzoru (Uzupelnic eq 1 przez 1-x|) i podzielić G(x) przez 1x. Tak więc poszukiwanym rozwiązaniem są współczynniki funkcji tworzącej

H(x)=G(x)1x=2(1x)43(1x)3+1(1x)2.

Korzystając po raz kolejny z Wniosku Uzupelnic con newton for integer| otrzymujemy

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \aligned H\!\left( x \right) &=&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. \endaligned}

W konsekwencji zachodzi równość

k=1nk2=[xn]H(x)=2n3+3n+n6.

Przykład [Uzupelnij]

Wracamy do przykładu z monetami. Występowały tam funkcje tworzące postaci

Ak(x)=1+xk+x2k+x3k+,

dla k=1,5,10,25 i 50. Z równości (Uzupelnic eq 1 przez 1-x|) wiemy, że

1+xk+x2k+x3k+,=11xk

tak więc:

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \aligned A\!\left( x \right)= A_1\!\left( x \right)&=& \frac{1}{1-x},\\ B\!\left( x \right)= A\!\left( x \right)\cdot A_5\!\left( x \right) &=&\frac{ A\!\left( x \right)}{1-x^5},\\ C\!\left( x \right)= B\!\left( x \right)\cdot A_{10}\!\left( x \right) &=&\frac{ B\!\left( x \right)}{1-x^{10}},\\ D\!\left( x \right)= C\!\left( x \right)\cdot A_{25}\!\left( x \right) &=&\frac{ C\!\left( x \right)}{1-x^{25}},\\ E\!\left( x \right)= D\!\left( x \right)\cdot A_{50}\!\left( x \right) &=&\frac{ D\!\left( x \right)}{1-x^{50}}, \endaligned}

skąd natychmiast:

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \aligned A\!\left( x \right)&=&1+x A\!\left( x \right),\\ B\!\left( x \right)&=& A\!\left( x \right)+x^5 B\!\left( x \right),\\ C\!\left( x \right)&=& B\!\left( x \right)+x^{10} C\!\left( x \right),\\ C\!\left( x \right)&=& D\!\left( x \right)+x^{25} C\!\left( x \right),\\ D\!\left( x \right)&=& E\!\left( x \right)+x^{50} D\!\left( x \right). \endaligned}

Równości te dają zależności między współczynnikami:

an=1,bn=an+bn5,cn=bn+cn10,dn=cn+dn25,en=dn+en50.

Wykorzystując te zależności rekurencyjne możemy wypełnić następującą tabelę:

{-2cm}

{

Funkcje tworzące w rozwiązywaniu zależności rekurencyjnych.

Przykład [Uzupelnij]

Rozważmy ciąg Fibonacci'ego, tzn. ciąg (f0,f1,f2,f3,) zdefiniowany w następujący sposób:

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \aligned f_0&=&0,\\ f_1&=&1,\\ f_n&=&f_{n-1}+f_{n-2}\quad\textrm{dla}\ n\geq2. \endaligned}

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 fn przekładają się natychmiast na następujące równanie, jakie musi spełniać funkcja tworząca F(x) dla ciągu Fibonacci'ego

F(x)=n=0fnxn=x+n=2(fn1+fn2)xn=1+x+xF(x)+x2F(x).

Przekształcając powyższe równanie otrzymujemy:

F(x)=x1xx2.

Celem, który chcemy osiągnąć to wykorzystanie funkcji x1xx2 do przedstawienia współczynników fn w postaci zwartej. Pierwszym krokiem będzie rozłożenie ułamka w równaniu (Uzupelnic eq fib|) na sumę ułamków o mianownikach będących funkcjami liniowymi

F(x)=x1xx2=x(1φx)(1φx)=15(1(1φx)1(1φx)),

gdzie φ=1+52 jest złotą liczbą oraz φ=152 liczbą do niej sprzężoną. Korzystając z równania (Uzupelnic eq 1 przez 1-x|) otrzymujemy teraz

F(x)=15(n=1φnxnn=1φnxn)=15n=1(φnφn)xn.

Tak więc dostajemy szybko znaną nam już postać zwartą fn=15(φnφn).

Podczas rozwiązywania przykładu związanego z liczbami Fibonacci'ego natrafiliśmy na problem polegający na przedstawieniu w postaci szeregu wyrażenia x1xx2. Przyjrzymy się dokładniej tego typu wyrażeniom.

Stopień wielomianu Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\sf deg}\ P\!\left( x \right)=n} , jeśli P(x)=p0+p1x++pnxn.

Funkcja wymierna R(x) to funkcja postaci P(x)Q(x), gdzie P(x) oraz Q(x)0 są wielomianami skończonego stopnia.

Obserwacja [Uzupelnij]

Niech A(x) oraz B(x) będą wielomianami Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\sf deg}\ A\!\left( x \right)\geq {\sf deg}\ B\!\left( x \right)} . Wtedy istnieją wielomiany Q(x) oraz R(x) takie, że

A(x)=Q(x)B(x)+R(x),

gdzie Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\sf deg}\ R\!\left( x \right)<{\sf deg}\ A\!\left( x \right)={\sf deg}\ Q\!\left( x \right)+{\sf deg}\ B\!\left( x \right)} .

Przykład [Uzupelnij]

Niech

A(x)=3x5+5x4+2x3+x2+2orazB(x)=x3+2x21.

Wtedy wielomiany

Q(x)=3x2x+3orazR(x)=x+2

spełniają

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \aligned A\!\left( x \right)&=&3x^5+5x^4+2x^3+x^2+2\\ &=&\left( 3x^2-x+3 \right)\cdot\left( x^3+2x^2-1 \right)+x+2\\ &=& Q\!\left( x \right) B\!\left( x \right)+ R\!\left( x \right). \endaligned}

Ponadto Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\sf deg}\ A\!\left( x \right)=5=2+3={\sf deg}\ Q\!\left( x \right)+{\sf deg}\ B\!\left( x \right)} .

Wniosek [Uzupelnij]

Niech P(x) oraz Q(x) będą wielomianami takimi, że Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\sf deg}\ P\!\left( x \right)\geq{\sf deg}\ Q\!\left( x \right)} . Wtedy funkcję wymierną R(x)=P(x)/Q(x), można przedstawić w postaci

R(x)=P(x)Q(x)=A(x)+B(x)Q(x),

dla pewnych wielomianów A(x) oraz B(x) spełniających Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\sf deg}\ B\!\left( x \right)<{\sf deg}\ Q\!\left( x \right)} .

Będziemy więc skupiali się jedynie nad takimi funkcjami wymiernymi R(x)=P(x)/Q(x), dla których Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\sf deg}\ P\!\left( x \right)<{\sf deg}\ Q\!\left( x \right)} .

Twierdzenie [Uzupelnij]

Niech P(x) oraz Q(x) będą wielomianami takimi, że

  • Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\sf deg}\ P\!\left( x \right)<{\sf deg}\ Q\!\left( x \right)} ,
  • Q(x)=S(x)T(x),

gdzie oba wielomiany S(x),T(x) są stopnia co najmniej 2,

  • q00.

Wtedy istnieją wielomiany A(x) oraz B(x) takie, że Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\sf deg}\ A\!\left( x \right)<{\sf deg}\ S\!\left( x \right)} i Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\sf deg}\ B\!\left( x \right)<{\sf deg}\ T\!\left( x \right)} oraz

P(x)Q(x)=A(x)S(x)+B(x)T(x).
Uwaga [Uzupelnij]

Twierdzenie [[##thm PQ = AS BT|Uzupelnic thm PQ = AS BT|]] pozwala na rozbijanie skomplikowanych funkcji wymiernych na sumę prostszych.

Dowód [Uzupelnij]

[Metoda rozwijania funkcji wymiernej w szereg.] Rozważmy funkcję wymierną w postaci

R(x)=P(x)Q(x),

gdzie Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\sf deg}\ P\!\left( x \right)<{\sf deg}\ Q\!\left( x \right)} , oraz q00. Załóżmy ponadto, że wielomian Q(x) rozkłada się na następujący iloczyn czynników liniowych

Q(x)=q0(1ρ1x)m1(1ρ2x)m2(1ρkx)mk.

Warto wspomnieć, że dalecy nie każdy wielomian ma taki rozkład. Na przykład 1+x2 jest nierozkładalny i nieliniowy. Wykorzystując parokrotnie Twierdzenie [[##thm PQ = AS BT|Uzupelnic thm PQ = AS BT|]] otrzymujemy wielomiany P1(x),,Pk(x) takie, że

R(x)=P(x)Q(x)=P1(x)(1ρ1x)m1+P2(x)(1ρ2x)m2++Pk(x)(1ρkx)mk,

gdzie Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\sf deg}\ P_i\!\left( x \right)<m_i} . Na mocy Obserwacji Uzupelnic obs div| możemy sprowadzić wielomian Pi(x) do

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \aligned P_i\!\left( x \right)&=& P_i^1\!\left( x \right)\left( 1-\rho_ix \right)+\gamma_{m_i}\\ &=& P_i^2\!\left( x \right)\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}, \endaligned}

gdzie Parser nie mógł rozpoznać (błąd składni): {\displaystyle m_i\geq{\sf deg}\ P_i\!\left( x \right)>{\sf deg}\ P_i^1\!\left( x \right)>{\sf deg}\ P_i^2\!\left( x \right)>\ldots} . W konsekwencji otrzymamy

R(x) = i=1k(γi,11ρix+γi,2(1ρix)2++γi,mi(1ρix)mi).

Mnożąc teraz obie strony przez

Q(x)/q0=(1ρ1x)m1(1ρ2x)m2(1ρkx)mk

i porównując współczynniki przy odpowiadających potęgach xi uzyskujemy pewien układ równań, rozwiązanie którego da nam poszukiwane współczynniki γi,j. Z drugiej strony, z wniosku Uzupelnic con newton for integer| wynika, że

1(1ρx)m+1=n=1(m+nm)ρnxn

i w konsekwencji:

[xn]R(x) = i=1k(γi,1+γi,2(n+11)++γi,mi(n+mi1mi))ρin.

Przykład [Uzupelnij]

Opisaną wyżej metodę ogólną zilustrujemy na przykładzie funkcji

R(x)=x21xx2+x3.

Wielomian 1xx2+x3 ma jeden podwójny pierwiastek x=1 oraz jeden pojedynczy x=1. Poznana metoda rozwijania funkcji wymiernej w szereg daje więc

R(x)=x2(1x)2(1+x)=α1x+β(1x)2+γ1+x.

Mnożąc obie strony przez (1x)2(1+x) otrzymujemy:

x2=α(1x2)+β(1+x)+γ(12x+x2).

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ń

{α+ β+ γ=0α 2γ=0 β+ γ=1.

Rozwiązaniem powyższego układu są wartości α=14, β=12, γ=14. W konsekwencji otrzymujemy szereg

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \aligned R\!\left( x \right)&=&\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. \endaligned}

Jeżeli mianownik Q(x) funkcji wymiernej R(x)=P(x)Q(x) posiada jedynie pierwiastki jednokrotne, to następne twierdzenie znacznie przyspiesza rozkład R(x) na sumę.

Twierdzenie [Uzupelnij]

Jeśli R(x)=P(x)/Q(x), gdzie Q(x)=q0(1ρ1x)(1ρ1x) i liczby ρ1,,ρl są parami różne, to w przypadku gdy P(x) jest wielomianem stopnia mniejszego niż l, zachodzi

[xn]R(x)=a1ρ1n++alρln,dla ak=ρkP(1/ρk)Q(1/ρk).

Przykład [Uzupelnij]

Mianownik Q(x) funkcji wymiernej

R(x)=P(x)Q(x)=2x15x2x2+24x3.

ma trzy różne pierwiastki i można R(x) przedstawić jako

R(x)=2x(1+2x)(13x)(14x).

Na mocy twierdzenia Uzupelnic thm wymierne| otrzymujemy więc, że

[xn]R(x)=215(2)n653n+434n.

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

{r0=c0,rk1=ck1,rn=a1rn1+a2rn2++akrnkdla nk,

gdzie c0,,ck1,a1,,ak są liczbami rzeczywistymi (niezależnymi od parametru rekurencyjnego n).

Rozważmy najpierw przypadek, gdy k=2, tzn. równanie postaci

{r0=c0,r1=c1,rn=a1rn1+a2rn2dla n2.

Przykładem takiego równania była zależność opisująca ciąg Fibonacci'ego. Zastosowanie ostatniej równości z (Uzupelnic eq rec 2|) do funkcji tworzącej ciągu (r0,r1,r2,) daje:

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \aligned R\!\left( x \right)&=&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\!\left( x \right)+a_2x^2 R\!\left( x \right), \endaligned}

tak więc

R(x) = c0+(c1a1c0)x1a1xa2x2

Dla funkcji A(x)=1a1xa2x2=(1ρ1x)(1ρ2x) mogą zajść trzy przypadki:

  • ρ1ρ2 są różnymi liczbami rzeczywistymi. Wtedy
rn = αρ1n+βρ2n,

gdzie α oraz β są liczbami rzeczywistymi.

  • ρ1=ρ2. Wtedy
rn = (αn+β)ρ1n,

gdzie α oraz β są liczbami rzeczywistymi.

Wartości ρ1 oraz ρ2 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

rn = αρ1n+βρ2n.

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 k=2, otrzymujemy że

R(x) = P(x)1a1xa2x2akxk,

gdzie P(x) jest wielomianem co najwyżej stopnia k1, zależnym od wartości c0,,ck1,a1,,ak. Korzystając z ogólnej metody rozwijania funkcji wymiernej w szereg, możemy odzyskać wyrazy ciągu rn, jako współczynniki [xn]R(x) zgodnie z równaniem (Uzupelnic eq R(x)|).

Przykład [Uzupelnij]

Równanie rekurencyjne ma następującą postać

{r0=0,r1=0,r2=1,rn=rn1+rn2rn3dla n3.

Ostatnia zależność prowadzi do funkcji tworzącej R(x) spełniającej

R(x)=x2+xR(x)+x2R(x)x3R(x).

Po dokonaniu prostego wyliczenia dostajemy:

R(x)=x21xx2+x3.

W przykładzie omawianym przy okazji metody rozwijania funkcji wymiernej w szereg, wyliczyliśmy współczynniki [xn]R(x), a zatem mamy:

rn=14+12(n+1)14(1)ndladowolnego n=0,1,2,3,.