Funkcja tworząca

Funkcja tworząca G ( x ) {\displaystyle G(x)} dla ciągu ( g n ) = ( g 0 , g 1 , g 2 , ) {\displaystyle (g_{n})=(g_{0},g_{1},g_{2},\ldots )} jest zdefiniowana jako

G ( x ) = n = 0 g n x n . {\displaystyle G(x)=\sum _{n=0}^{\infty }g_{n}x^{n}.}

Ciąg ( g n ) {\displaystyle (g_{n})} może być w szczególnym przypadku ciągiem liczbowym (wartości są liczbami naturalnymi, jak to się dzieje, gdy odpowiada on zliczaniu obiektów kombinatorycznych, rzeczywistymi, zespolonymi) jednak w ogólności jego wartości mogą być inne (np. funkcje).

Tymczasem jednomiany x n {\displaystyle x^{n}} mogą być rozpatrywane jako wyrazy pierścienia szeregu formalnego (gdy interesują nas wyłącznie algebraiczne właściwości funkcji tworzącej) albo liczby (rzeczywiste lub zespolone).

Zastosowania

Funkcje tworzące wykorzystywane są w wielu różnych działach matematyki. Jednym z najważniejszych ich zastosowań jest przydatność do rozwiązywania równań rekurencyjnych. Bardzo dobrym przykładem stosowanych technik jest wyprowadzenie wzoru na n {\displaystyle n} -ty wyraz ciągu Fibonacciego.

Częstym zastosowaniem funkcji tworzących jest zliczanie pewnych obiektów kombinatorycznych. Klasyczną metodą jest ułożenie najpierw równania rekurencyjnego na zliczane obiekty, a potem rozwiązanie go z użyciem funkcji tworzących. Przykładem takiego rozumowania jest m.in. wyprowadzenie wzoru na liczby Catalana.

Funkcje tworzące stosuje się również do opisu szeregów funkcji, np. wielomianów Hermite’a.

Przykłady

Ciąg jedynek i ciąg liczb naturalnych

Funkcją tworzącą ciągu złożonego z samych jedynek

( 1 , 1 , 1 , ) {\displaystyle \left(1,1,1,\ldots \right)}

jest funkcja

G ( x ) = n = 0 x n = 1 1 x . {\displaystyle G(x)=\sum _{n=0}^{\infty }x^{n}={\frac {1}{1-x}}.}

Przykład ten jest ilustracją bardzo ważnego założenia w teorii funkcji tworzących, mianowicie – ze względu na to, że szeregi w funkcjach tworzących są tylko szeregami formalnymi, to aspekt zbieżności jest z tego punktu widzenia nieistotny. Powyższy szereg jest zbieżny tylko dla | x | < 1. {\displaystyle |x|<1.}

Funkcją tworzącą ciągu kolejnych liczb naturalnych ( 1 , 2 , 3 , ) {\displaystyle (1,2,3,\ldots )} jest funkcja

G ( x ) = n = 0 ( n + 1 ) x n = 1 ( 1 x ) 2 . {\displaystyle G(x)=\sum _{n=0}^{\infty }(n+1)x^{n}={\frac {1}{(1-x)^{2}}}.}

Dzieje się tak, gdyż

n = 0 ( n + 1 ) x n = n = 0 d d x x n + 1 = d d x n = 0 x n + 1 = d d x ( x 1 x ) = 1 ( 1 x ) 2 . {\displaystyle \sum _{n=0}^{\infty }(n+1)x^{n}=\sum _{n=0}^{\infty }{\frac {d}{dx}}x^{n+1}={\frac {d}{dx}}\sum _{n=0}^{\infty }x^{n+1}={\frac {d}{dx}}\left({\frac {x}{1-x}}\right)={\frac {1}{(1-x)^{2}}}.}

Dwumian Newtona

Funkcją tworzącą dwumianu Newtona ( n k ) {\displaystyle {\tbinom {n}{k}}} (ze względu na k , {\displaystyle k,} przy ustalonym n {\displaystyle n} ) jest

G n ( x ) = ( 1 + x ) n . {\displaystyle G_{n}(x)=(1+x)^{n}.}

Można rozważać funkcje tworzące od dwóch zmiennych. W szczególności potraktujmy powyższe wyrażenia jako ciąg, z którego chcemy uzyskać funkcję tworzącą

G ( x , y ) = n = 0 ( 1 + x ) n y n = 1 1 y ( 1 + x ) . {\displaystyle G(x,y)=\sum _{n=0}^{\infty }(1+x)^{n}y^{n}={\frac {1}{1-y(1+x)}}.}

Liczby Fibonacciego

Ciąg Fibonacciego określony jest wzorem rekurencyjnym

{ F 0 = 0 F 1 = 1 F n = F n 1 + F n 2  dla  n 2. {\displaystyle {\begin{cases}F_{0}=0\\F_{1}=1\\F_{n}=F_{n-1}+F_{n-2}{\mbox{ dla }}n\geq 2.\end{cases}}}

Niech F ( x ) {\displaystyle F(x)} będzie funkcją tworzącą tego ciągu, wtedy[1]

F ( x ) = n = 0 F n x n = F 0 x 0 + n = 1 F n x n = n = 1 F n x n . {\displaystyle F(x)=\sum _{n=0}^{\infty }F_{n}x^{n}=F_{0}x^{0}+\sum _{n=1}^{\infty }F_{n}x^{n}=\sum _{n=1}^{\infty }F_{n}x^{n}.}

Zauważmy, że

F ( x ) = n = 1 F n x n = F 1 x 1 + n = 2 ( F n 1 + F n 2 ) x n . {\displaystyle F(x)=\sum _{n=1}^{\infty }F_{n}x^{n}=F_{1}x^{1}+\sum _{n=2}^{\infty }(F_{n-1}+F_{n-2})x^{n}.}
teraz wyciągnijmy x {\displaystyle x} w odpowiedniej potędze przed znak sumy i otrzymamy
F ( x ) = F 1 x + x n = 2 ( F n 1 x n 1 ) + x 2 n = 2 ( F n 2 x n 2 ) , {\displaystyle F(x)=F_{1}x+x\sum _{n=2}^{\infty }(F_{n-1}x^{n-1})+x^{2}\sum _{n=2}^{\infty }(F_{n-2}x^{n-2}),}
a jak już zauważyliśmy n = 0 F n x n = n = 1 F n x n , {\displaystyle \sum _{n=0}^{\infty }F_{n}x^{n}=\sum _{n=1}^{\infty }F_{n}x^{n},} stąd mamy
F ( x ) = F 1 x + x n = 1 ( F n x n ) + x 2 n = 0 ( F n x n ) = x + x F ( x ) + x 2 F ( x ) . {\displaystyle F(x)=F_{1}x+x\sum _{n=1}^{\infty }(F_{n}x^{n})+x^{2}\sum _{n=0}^{\infty }(F_{n}x^{n})=x+xF(x)+x^{2}F(x).}

Po przekształceniu otrzymamy[1]:

F ( x ) = x 1 x x 2 . {\displaystyle F(x)={\frac {x}{1-x-x^{2}}}.}

Wielomian 1 x x 2 {\displaystyle 1-x-x^{2}} ma dwa pierwiastki x 1 = 5 1 2 , x 2 = 5 1 2 . {\displaystyle x_{1}={\tfrac {-{\sqrt {5}}-1}{2}},x_{2}={\tfrac {{\sqrt {5}}-1}{2}}.} Funkcję F ( x ) {\displaystyle F(x)} można więc zapisać w następujący sposób:

F ( x ) = x ( x x 1 1 ) ( x x 2 1 ) , {\displaystyle F(x)={\frac {x}{({\tfrac {x}{x_{1}}}-1)({\tfrac {x}{x_{2}}}-1)}},}

Przyjmując λ 1 = 1 x 1 , λ 2 = 1 x 2 {\displaystyle \lambda _{1}={\tfrac {1}{x_{1}}},\lambda _{2}={\tfrac {1}{x_{2}}}} otrzymujemy po uprzednim rozkładzie na ułamki proste:

F ( x ) = x ( 1 λ 1 x ) ( 1 λ 2 x ) = 1 5 ( 1 1 λ 1 x 1 1 λ 2 x ) = 1 5 ( n = 0 x n λ 1 n n = 0 x n λ 2 n ) = n = 0 ( 1 5 ( λ 1 n λ 2 n ) ) x n . {\displaystyle F(x)={\frac {x}{(1-\lambda _{1}x)(1-\lambda _{2}x)}}={\frac {1}{\sqrt {5}}}\left({\frac {1}{1-\lambda _{1}x}}-{\frac {1}{1-\lambda _{2}x}}\right)={\frac {1}{\sqrt {5}}}\left(\sum _{n=0}^{\infty }x^{n}\lambda _{1}^{n}-\sum _{n=0}^{\infty }x^{n}\lambda _{2}^{n}\right)=\sum _{n=0}^{\infty }\left({\frac {1}{\sqrt {5}}}(\lambda _{1}^{n}-\lambda _{2}^{n})\right)x^{n}.}

Stąd szukany n {\displaystyle n} -ty wyraz można zapisać z pominięciem rekurencji:

F n = 1 5 ( λ 1 n λ 2 n ) = 1 5 ( ( 1 + 5 2 ) n ( 1 5 2 ) n ) . {\displaystyle F_{n}={\frac {1}{\sqrt {5}}}(\lambda _{1}^{n}-\lambda _{2}^{n})={\frac {1}{\sqrt {5}}}\left(\left({\frac {1+{\sqrt {5}}}{2}}\right)^{n}-\left({\frac {1-{\sqrt {5}}}{2}}\right)^{n}\right).}

Operacje związane z funkcjami tworzącymi

  • Kombinacja liniowa:
α n = 0 a n x n + β n = 0 b n x n = n = 0 ( α a n + β b n ) x n {\displaystyle \alpha \sum \limits _{n=0}^{\infty }a_{n}x^{n}+\beta \sum \limits _{n=0}^{\infty }b_{n}x^{n}=\sum \limits _{n=0}^{\infty }(\alpha a_{n}+\beta b_{n})x^{n}}
  • Przesunięcie:
x m n = 0 a n x n = n = m a n m x n {\displaystyle x^{m}\sum \limits _{n=0}^{\infty }a_{n}x^{n}=\sum \limits _{n=m}^{\infty }a_{n-m}x^{n}}
  • Mnożenie przez liczbę:
c A ( x ) = n = 0 ( c a n ) x n , c C {\displaystyle c\cdot A(x)=\sum \limits _{n=0}^{\infty }(ca_{n})x^{n},\;c\in \mathbb {C} }
  • Mnożenie:
n = 0 a n x n n = 0 b n x n = n = 0 c n x n , {\displaystyle \sum \limits _{n=0}^{\infty }a_{n}x^{n}\cdot \sum \limits _{n=0}^{\infty }b_{n}x^{n}=\sum \limits _{n=0}^{\infty }c_{n}x^{n},} gdzie c n = k = 0 n a k b n k {\displaystyle c_{n}=\sum \limits _{k=0}^{n}a_{k}b_{n-k}}
  • Różniczkowanie:
( A ( x ) ) = n = 0 n a n x n 1 {\displaystyle (A(x))'=\sum \limits _{n=0}^{\infty }na_{n}x^{n-1}}
  • Całkowanie:
0 x A ( t ) d t = n = 1 1 n a n 1 x n {\displaystyle \int \limits _{0}^{x}A(t)\;dt=\sum \limits _{n=1}^{\infty }{\frac {1}{n}}a_{n-1}x^{n}}

Modyfikacje

Czasem okazuje się, że wygodniejsze do rozważania są pewne modyfikacje funkcji tworzących. Jedną z bardziej znanych są wykładnicze funkcje tworzące. Wykładniczą funkcję tworzącą dla ciągu liczb ( g 0 , g 1 , g 2 , ) {\displaystyle \left(g_{0},g_{1},g_{2},\ldots \right)} definiuje się jako funkcję

G ( x ) = n = 0 g n x n n ! . {\displaystyle G(x)=\sum _{n=0}^{\infty }g_{n}{\frac {x^{n}}{n!}}.}

Rozważane są także funkcje tworzące Dirichleta zdefiniowane dla powyższego ciągu jako

G ( x ) = n = 1 g n n x . {\displaystyle G(x)=\sum _{n=1}^{\infty }{\frac {g_{n}}{n^{x}}}.}

Przykładowo funkcją tworzącą Dirichleta dla ciągu ( 1 , 1 , 1 , ) {\displaystyle \left(1,1,1,\ldots \right)} jest znana funkcja dzeta Riemanna.

Funkcje tworzące znanych ciągów

  • Funkcja tworząca ciągu liczb Stirlinga I rodzaju:
n 0 [ n m ] x n = x m ( 1 x ) ( 1 2 x ) ( 1 m x ) {\displaystyle \sum _{n\geqslant 0}\left[{\begin{matrix}n\\m\end{matrix}}\right]x^{n}={\frac {x^{m}}{(1-x)(1-2x)\ldots (1-mx)}}}
  • Funkcja tworząca ciągu liczb Stirlinga II rodzaju:
n 0 { n m } x n = x ( x + 1 ) ( x + m 1 ) = x m ¯ {\displaystyle \sum _{n\geqslant 0}\left\{{\begin{matrix}n\\m\end{matrix}}\right\}x^{n}=x(x+1)\ldots (x+m-1)=x^{\bar {m}}}
  • Wykładnicza funkcja tworząca ciągu liczb Bernoulliego:
n 0 B n x n n ! = x e x 1 {\displaystyle \sum _{n\geqslant 0}B_{n}{\frac {x^{n}}{n!}}={\frac {x}{e^{x}-1}}}

Zobacz też

Przypisy

  1. a b WojciechW. Broniowski WojciechW., Matematyka dyskretna, wyd. II: Wykłady z przykładami w języku Python, Wojciech Broniowski, 18 sierpnia 2021, s. 12-14, ISBN 978-83-962099-1-7 [dostęp 2023-08-19]  (pol.).

Bibliografia

  • Ronald L. Graham, Donald Knuth, Oren Patashnik, Matematyka konkretna, Wydawnictwo Naukowe PWN, Warszawa 2002, ISBN 83-01-13906-4, rozdział 7.
  • Herbet S. Wilf, generatingfunctionology (Second Edition), Academic Press, 1994, ISBN 0-12-751956-4.

Linki zewnętrzne

  • Funkcje tworzące (materiały dydaktyczne MIMUW na studia informatyczne I stopnia)
  • Bogdan Chlebus, Wstęp do matematyki dyskretnej [PostScript], rozdział 6. i 7.
  • publikacja w otwartym dostępie – możesz ją przeczytać Karol Gryszka, Ułamki Fibonacciego [PDF], deltami.edu.pl [dostęp 2021-02-10] – artykuł o funkcjach tworzących m.in. ciągu Fibonacciego
Kontrola autorytatywna (formal power series):
  • LCCN: sh85053815
  • GND: 4152979-0
  • BnF: 12259609r
  • BNCF: 70287
  • J9U: 987007562699905171