生成函数学习笔记心得
生成函數(shù)生成果,生成數(shù)下你和我。
生成函數(shù)太美妙,蒟蒻一看被難倒。
By——Chalotto\qquad\qquad\quad\mathscr{By——Chalotto}By——Chalotto
目錄
- 生成函數(shù)
- 概念
- 普通型生成函數(shù)
- 指數(shù)型生成函數(shù)
- 例子
- 經(jīng)典題目
- 1、求 Fibonacci 通項(xiàng)公式
生成函數(shù)
概念
*度娘定義:
生成函數(shù)又叫 母函數(shù) ( 個(gè)人不太喜歡這個(gè)叫法 ),是組合數(shù)學(xué)中尤其是計(jì)數(shù)方面的一個(gè)重要理論和工具。
生成函數(shù)分為 普通型生成函數(shù) 和 指數(shù)型生成函數(shù) 兩種,前者使用較多。形式上說,普通型生成函數(shù)用于解決多重集的組合問題,而指數(shù)型母函數(shù)用于解決多重集的排列問題。
生成函數(shù)的應(yīng)用簡(jiǎn)單來說在于研究未知(通項(xiàng))數(shù)列規(guī)律,用這種方法在給出遞推式的情況下求出數(shù)列的通項(xiàng),生成函數(shù)是推導(dǎo) FibonacciFibonacciFibonacci 數(shù)列的通項(xiàng)公式方法之一,另外組合數(shù)學(xué)中的 CatalanCatalanCatalan 數(shù)也可以通過生成函數(shù)的方法得到。
另外生成函數(shù)也廣泛應(yīng)用于編程與算法設(shè)計(jì)、分析上,運(yùn)用這種數(shù)學(xué)方法往往對(duì)程序效率與速度有很大改進(jìn)。
普通型生成函數(shù)
定義:
對(duì)于任意數(shù)列 a0,a1,a2,…,ana_0,a_1,a_2,\dots ,a_na0?,a1?,a2?,…,an? 用下面這個(gè)函數(shù)來表示這個(gè)數(shù)列:G(x)=∑i=0∞aixi=a0+a1x+a2x2+a3x3+?+anxn…G(x)=\sum_{i=0}^{\infty}a_ix^i=a_0+a_1x+a_2x^2+a_3x^3+\dots+a_nx^n\dotsG(x)=i=0∑∞?ai?xi=a0?+a1?x+a2?x2+a3?x3+?+an?xn…這個(gè)函數(shù)就叫做數(shù)列的 生成函數(shù) ( generatingfunctiongenerating\ functiongenerating?function ) 。
指數(shù)型生成函數(shù)
定義:
對(duì)于任意數(shù)列 h0,h1,h2,…,hnh_0,h_1,h_2,\dots,h_nh0?,h1?,h2?,…,hn? 用下面這個(gè)函數(shù)來表示這個(gè)數(shù)列:G(x)=∑i=0∞hixii!=h0+h1+h2x+h3x22!+?+hnxnn!+…G(x)=\sum_{i=0}^{\infty}h_i\frac{x^i}{i!}=h_0+h_1+h_2x+h_3\frac{x^2}{2!}+\dots+h_n\frac{x^n}{n!}+\dotsG(x)=i=0∑∞?hi?i!xi?=h0?+h1?+h2?x+h3?2!x2?+?+hn?n!xn?+…
Tips:\mathscr{Tips:}Tips:在研究生成函數(shù)時(shí),我們都假設(shè)級(jí)數(shù)收斂,因?yàn)樯珊瘮?shù)中的 xxx 沒有實(shí)際意義。
例子
我們先來考慮這樣的一個(gè)問題:一個(gè)班上有四個(gè) MMMMMM ,現(xiàn)在要從其中選出 nnn 個(gè)做自己的老婆,請(qǐng)問有多少種選法? 答案很簡(jiǎn)單, (4n)\binom{4}{n}(n4?) 對(duì)吧。也就是說從 i=0i=0i=0 開始, 問題的答案分別是 1,4,6,4,1,0,0,0,…1,4,6,4,1,0,0,0,\dots1,4,6,4,1,0,0,0,… 那么它的生成函數(shù)應(yīng)該為 G(x)=1+4x+6x2+4x3+x4G(x)=1+4x+6x^2+4x^3+x^4G(x)=1+4x+6x2+4x3+x4 。誒,這不就是二項(xiàng)式展開嗎? 于是就有 G(x)=(1+x)4G(x)=(1+x)^4G(x)=(1+x)4 。
這里有個(gè)廣義的推論: (1+x)k=(k0)x0+(k1)x1+?+(kk)xk+…(1+x)^k=\binom k 0x^0+\binom k 1x^1+\dots+\binom k kx^k+\dots(1+x)k=(0k?)x0+(1k?)x1+?+(kk?)xk+… ,其中,廣義的組合數(shù) (ki)=k(k?1)(k?2)…(k?i+1)i!\binom k i=\frac{k(k-1)(k-2)\dots(k-i+1)}{i!}(ik?)=i!k(k?1)(k?2)…(k?i+1)? 且 kkk 為 實(shí)數(shù) 。
舉個(gè)例子: (46)=4×3×2×1×0×(?1)6!=0,(?1.42)=(?1.4)×(?2.4)2!=1.68\binom4 6=\frac{4\times3\times2\times1\times0\times(-1)}{6!}=0,\binom{-1.4}2=\frac{(-1.4)\times(-2.4)}{2!}=1.68(64?)=6!4×3×2×1×0×(?1)?=0,(2?1.4?)=2!(?1.4)×(?2.4)?=1.68
這個(gè)推論就是經(jīng)典的 牛頓二項(xiàng)式定理 。
接下來我們?cè)賮砜紤]一個(gè)更復(fù)雜的生成函數(shù): 求出 x1+x2+?+xk=nx_1+x_2+\dots+x_k=nx1?+x2?+?+xk?=n 有多少個(gè)非負(fù)整數(shù)解。這道題在 Chty_syqChty\_syqChty_syq 的課件中有詳細(xì)解答過。
把每組解的每個(gè)數(shù)加 111 ,就變成了 x1+x2+?+xk=n+kx_1+x_2+\dots+x_k=n+kx1?+x2?+?+xk?=n+k 的正整數(shù)解的個(gè)數(shù)了,這時(shí)候我們就可以用 隔板法 來做: 把 n+kn+kn+k 個(gè)東西排成一排,在 n+k?1n+k-1n+k?1 個(gè)間隔中插入 k?1k-1k?1 個(gè) “隔板” ,所以答案就是 (n+k?1k?1)=(n+k?1n)\binom{n+k-1}{k-1}=\binom{n+k-1}{n}(k?1n+k?1?)=(nn+k?1?) ,則它關(guān)于 nnn 的生成函數(shù)是 G(x)=(1?x)?kG(x)=(1-x)^{-k}G(x)=(1?x)?k 。
推導(dǎo):
將 (1?x)?k(1-x)^{-k}(1?x)?k 按照牛頓二項(xiàng)式展開后可以得到 xnx^nxn 的系數(shù)恰好是 (n+k?1n)\binom{n+k-1}{n}(nn+k?1?)
因?yàn)檎归_后第n+1項(xiàng): (?kn)(?x)n=[(?1)n(n+k?1n)][(?1)nxn]=(n+k?1n)xn\binom{-k}{n}(-x)^n=[(-1)^n\binom{n+k-1}{n}][(-1)^nx^n]=\binom{n+k-1}{n}x^n(n?k?)(?x)n=[(?1)n(nn+k?1?)][(?1)nxn]=(nn+k?1?)xn
經(jīng)典題目
1、求 Fibonacci 通項(xiàng)公式
在接下來的講解之前,我們還需要知道一個(gè)公式:∑i=0∞xi=11?x\sum_{i=0}^\infty x^i=\frac 1{1-x}i=0∑∞?xi=1?x1?這個(gè)公式在之前我已經(jīng)證明過了,再證一遍:已知等比數(shù)列求和公式:∑i=0nxi=1?xn+11?x∵?1<x<1∴l(xiāng)im?n→∞xn+1=0∴∑i=0∞xi=lim?n→∞∑i=0nxi=lim?n→∞1?xn+11?x=11?x\begin{aligned}&已知等比數(shù)列求和公式:\sum_{i=0}^n x^i=\frac{1-x^{n+1}}{1-x}\\ &\because -1<x<1\\ &\therefore\lim_{n\to\infty}x^{n+1}=0\\ &\therefore\sum_{i=0}^\infty x^i=\lim_{n\to\infty}\sum_{i=0}^n x^i=\lim_{n\to\infty}\frac{1-x^{n+1}}{1-x}=\frac 1{1-x} \end{aligned}?已知等比數(shù)列求和公式:i=0∑n?xi=1?x1?xn+1?∵?1<x<1∴n→∞lim?xn+1=0∴i=0∑∞?xi=n→∞lim?i=0∑n?xi=n→∞lim?1?x1?xn+1?=1?x1??證畢。
已知 FibonacciFibonacciFibonacci 遞推數(shù)列為:F(n)=F(n?1)+F(n?2)(n?3)F2=F1=1\begin{aligned}&F(n)=F(n-1)+F(n-2)\qquad( n\geqslant 3)\\&F_2=F_1=1\end{aligned}?F(n)=F(n?1)+F(n?2)(n?3)F2?=F1?=1?設(shè)它的生成函數(shù)為 g(x)g(x)g(x) ,則 g(x)g(x)g(x) 為:g(x)=x+x2+2x3+3x4+…=F1+F2x2+F3x3+…\begin{aligned}g(x)&=x+x^2+2x^3+3x^4+\dots\\&=F_1+F_2x^2+F_3x^3+\dots\end{aligned}g(x)?=x+x2+2x3+3x4+…=F1?+F2?x2+F3?x3+…?兩邊同時(shí)乘以 xxx:x?g(x)=x2+x3+2x4+3x5+…x\cdot g(x)=x^2+x^3+2x^4+3x^5+\dotsx?g(x)=x2+x3+2x4+3x5+…用上式減下式可得:g(x)?x?g(x)=x+x3+x4+2x5+3x6+?=x+x2?g(x)g(x)-x\cdot g(x)=x+x^3+x^4+2x^5+3x^6+\dots=x+x^2\cdot g(x)g(x)?x?g(x)=x+x3+x4+2x5+3x6+?=x+x2?g(x)解得, g(x)=x1?x?x2g(x)=\frac x{1-x-x^2}g(x)=1?x?x2x? 。
由于這個(gè)式子不是之前我們見過的 xxx 成等比關(guān)系的式子,再根據(jù)這是個(gè)分式,于是我們可以把它裂項(xiàng)成等比數(shù)列無窮級(jí)數(shù)求和的式子,將下半部分因式分解可得:g(x)=x(1?1?52x)(1?1+52x)g(x)=\frac{x}{(1-\frac{1-\sqrt 5}2x)(1-\frac{1+\sqrt 5}2x)}g(x)=(1?21?5??x)(1?21+5??x)x?再轉(zhuǎn)變成和的形式:設(shè)g(x)=x(1?1?52x)(1?1+52x)=a(1?1?52x)+b(1?1+52x)通分一下得到,g(x)=(1?1+52x)a+(1?1?52x)b(1?1?52x)(1?1+52x)∴(1?1+52x)a+(1?1?52x)b=x又根據(jù)g(x)=0可以得到方程組:{(1?1+52x)a+(1?1?52x)b=x???????①a+b=0???????②將②帶回到①中可以得到,a=?15∴b=15?g(x)=151(1?1+52x)?151(1?1?52x)將其還原成數(shù)列展開得,g(x)=15(1+52x+(1+52)2x2+?+(1+52)nxn+…)?15(1?52x+(1?52)2x2+?+(1?52)nxn+…)g(x)=F1+F2x2+F3x3+?+Fnxn+…于是我們可以得到Fibonacci的通項(xiàng)公式:Fn=15(1+52)n?15(1?52)n\begin{aligned}&設(shè)g(x)=\frac{x}{(1-\frac{1-\sqrt 5}2x)(1-\frac{1+\sqrt 5}2x)}=\frac a{(1-\frac{1-\sqrt 5}2x)}+\frac b{(1-\frac{1+\sqrt 5}2x)}\\&通分一下得到,\\&g(x)=\frac{(1-\frac{1+\sqrt 5}2x)a+(1-\frac{1-\sqrt 5}2x)b}{(1-\frac{1-\sqrt 5}2x)(1-\frac{1+\sqrt 5}2x)}\\&\therefore (1-\frac{1+\sqrt 5}2x)a+(1-\frac{1-\sqrt 5}2x)b=x\\&又根據(jù)g(x)=0可以得到方程組:\\&\begin{cases}(1-\frac{1+\sqrt 5}2x)a+(1-\frac{1-\sqrt 5}2x)b=x&·······①\\a+b=0&·······②\end{cases}\\&將②帶回到①中可以得到,a=-\frac 1{\sqrt 5}\\&\therefore b=\frac 1{\sqrt 5}\\&\Rightarrow g(x)=\frac 1{\sqrt 5}\frac 1{(1-\frac{1+\sqrt 5}2x)}-\frac 1{\sqrt 5}\frac 1{(1-\frac{1-\sqrt 5}2x)}\\&將其還原成數(shù)列展開得,\\&g(x)=\frac 1{\sqrt 5}(\frac{1+\sqrt 5}2x+(\frac{1+\sqrt 5}2)^2x^2+\dots+(\frac{1+\sqrt 5}2)^nx^n+\dots)-\frac 1{\sqrt 5}(\frac{1-\sqrt 5}2x+(\frac{1-\sqrt 5}2)^2x^2+\dots+(\frac{1-\sqrt 5}2)^nx^n+\dots)\\&g(x)=F_1+F_2x^2+F_3x^3+\dots+F_nx^n+\dots\\&于是我們可以得到\ Fibonacci\ 的通項(xiàng)公式:\\&F_n=\frac{1}{\sqrt{5}}\left(\frac{1+\sqrt{5}}{2}\right)^{n}-\frac{1}{\sqrt{5}}\left(\frac{1-\sqrt{5}}{2}\right)^{n}\end{aligned}?設(shè)g(x)=(1?21?5??x)(1?21+5??x)x?=(1?21?5??x)a?+(1?21+5??x)b?通分一下得到,g(x)=(1?21?5??x)(1?21+5??x)(1?21+5??x)a+(1?21?5??x)b?∴(1?21+5??x)a+(1?21?5??x)b=x又根據(jù)g(x)=0可以得到方程組:{(1?21+5??x)a+(1?21?5??x)b=xa+b=0????????①???????②?將②帶回到①中可以得到,a=?5?1?∴b=5?1??g(x)=5?1?(1?21+5??x)1??5?1?(1?21?5??x)1?將其還原成數(shù)列展開得,g(x)=5?1?(21+5??x+(21+5??)2x2+?+(21+5??)nxn+…)?5?1?(21?5??x+(21?5??)2x2+?+(21?5??)nxn+…)g(x)=F1?+F2?x2+F3?x3+?+Fn?xn+…于是我們可以得到?Fibonacci?的通項(xiàng)公式:Fn?=5?1?(21+5??)n?5?1?(21?5??)n?哎呦臥槽,這可把我碼的累死了!!!
總結(jié)
以上是生活随笔為你收集整理的生成函数学习笔记心得的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python自动填表格_Python读写
- 下一篇: 安卓 MediaRecorder 音频录