具体数学-第14课(牛顿级数和生成函数)

原文链接:

具体数学-第14课 - WeiYang Blog

牛顿级数

多项式函数的一般表示形式为:
f(x) = {a_d}{x^d} + {a_{d - 1}}{x^{d - 1}} + \cdots + {a_1}{x^1} + {a_0}{x^0}
也可以将其表示为下降阶乘幂的形式:
f(x) = {b_d}{x^\underline{d}} + {b_{d - 1}}{x^{\underline{d - 1}}} + \cdots + {b_1}{x^\underline{1}} + {b_0}{x^\underline{0}}
这种表示的好处是,求差分更加方便:
\Delta (f(x)) = {b_d}d{x^{\underline{d - 1}}} + {b_{d - 1}}(d - 1){x^{\underline {d - 2} }} + \cdots + {b_1}{x^\underline{0}}
因为有
\left( {\begin{array}{\*{20}{c}}x\\k\end{array}} \right) = \frac{ { {x^\underline{k}}}}{ {k!}}
所以多项式又可以表示为组合数的形式,也被叫做牛顿级数:
f(x) = {c_d}\left( {\begin{array}{\*{20}{c}}x\\d\end{array}} \right) + {c_{d - 1}}\left( {\begin{array}{\*{20}{c}}x\\{d - 1}\end{array}} \right) + \cdots + {c_1}\left( {\begin{array}{\*{20}{c}}x\\1\end{array}} \right) + {c_0}\left( {\begin{array}{\*{20}{c}}x\\0\end{array}} \right)
这种形式的差分也特别简单,因为有
\Delta \left( {\left( {\begin{array}{\*{20}{c}}x\\k\end{array}} \right)} \right) = \left( {\begin{array}{\*{20}{c}}x\\{k - 1}\end{array}} \right)
所以 n 阶差分可以写为:
{\Delta ^n}(f(x)) = {c_d}\left( {\begin{array}{\*{20}{c}}x\\{d - n}\end{array}} \right) + {c_{d - 1}}\left( {\begin{array}{\*{20}{c}}x\\{d - 1 - n}\end{array}} \right) + \cdots + {c_1}\left( {\begin{array}{\*{20}{c}}x\\{1 - n}\end{array}} \right) + {c_0}\left( {\begin{array}{\*{20}{c}}x\\{ - n}\end{array}} \right)
所以有:
{\Delta ^n}(f(0)) = \left\{ {\begin{array}{\*{20}{c}}{ {c_n},n \le d}\\{0,n > d}\end{array}} \right.
所以牛顿级数又可以写为:
f(x) = {\Delta ^d}(f(0))\left( {\begin{array}{\*{20}{c}}x\\d\end{array}} \right) + {\Delta ^{d - 1}}(f(0))\left( {\begin{array}{\*{20}{c}}x\\{d - 1}\end{array}} \right) + \cdots + \Delta (f(0))\left( {\begin{array}{\*{20}{c}}x\\1\end{array}} \right) + f(0){c_0}\left( {\begin{array}{\*{20}{c}}x\\0\end{array}} \right)
这个形式是不是很像泰勒展开?

生成函数

对于无限序列 \left\langle { {a_0},{a_1},{a_2}, \ldots } \right\rangle ,定义它的生成函数为:
A(z) = {a_0} + {a_1}z + {a_2}{z^2} + \cdots = \sum\limits_{k \ge 0} { {a_k}{z^k}}
定义一个函数用来表示 z^n 的系数:
[{z^n}]A(z) = {a_n}
两个生成函数相乘的结果为:
A(z)B(z) = \sum\limits_{k \ge 0} {\sum\limits_{i = 0}^k { {a_i}{b_{k - i}}} {z^k}}
考虑下面的二项展开:
A(z) = {a_0} + {a_1}z + {a_2}{z^2} + \cdots = \sum\limits_{k \ge 0} { {a_k}{z^k}}
可以发现这就是序列 \left\langle {\left( {\begin{array}{\*{20}{c}}r\\0\end{array}} \right),\left( {\begin{array}{\*{20}{c}}r\\1\end{array}} \right),\left( {\begin{array}{\*{20}{c}}r\\2\end{array}} \right), \ldots } \right\rangle 的生成函数。
替换变量可以得到:
{(1 + z)^s} = \sum\limits_{k \ge 0} {\left( {\begin{array}{\*{20}{c}}s\\k\end{array}} \right){z^k}}
两个式子相乘可以得到:
{(1 + z)^r}{(1 + z)^s} = {(1 + z)^{r + s}}
等式两边 z^n 的系数相等,于是:
\sum\limits_{k = 0}^n {\left( {\begin{array}{\*{20}{c}}r\\k\end{array}} \right)\left( {\begin{array}{\*{20}{c}}s\\{n - k}\end{array}} \right)} = \left( {\begin{array}{\*{20}{c}}{r + s}\\n\end{array}} \right)
这和上节课讲到的范德蒙德卷积公式类似!这里是用生成函数证出来的。

同理根据
{(1 + z)^r}{(1 - z)^r} = {(1 - {z^2})^r}
可以得到
\sum\limits_{k = 0}^n {\left( {\begin{array}{\*{20}{c}}r\\k\end{array}} \right)\left( {\begin{array}{\*{20}{c}}r\\{n - k}\end{array}} \right)} {( - 1)^k} = {( - 1)^{n/2}}\left( {\begin{array}{\*{20}{c}}r\\{n/2}\end{array}} \right)[n是偶数]
下面是一个重要的生成函数:
\frac{1}{ {1 - z}} = 1 + z + {z^2} + {z^3} + \cdots = \sum\limits_{k \ge 0} { {z^k}}
它其实就是序列 \left\langle { {1},{1},{1}, \ldots } \right\rangle 的生成函数。

生成函数应用

那么生成函数有什么应用呢?一个很重要的应用就是用来求解递归式。

例如大家很熟悉的斐波那契数列:
\begin{array}{l}{g_0} = 0;{g_1} = 1\\{g_n} = {g_{n - 1}} + {g_{n - 2}},n \ge 2\end{array}

首先为了统一表示,将递归式改写为如下形式:
{g_n} = {g_{n - 1}} + {g_{n - 2}} + [n = 1]
然后两边同时乘以 z^n ,得到:
{g_n}{z^n} = {g_{n - 1}}{z^n} + {g_{n - 2}}{z^n} + [n = 1]{z^n}
两边对指标 n 同时求和,可以得到:
G(z) = zG(z) + {z^2}G(z) + z
所以
G(z) = \frac{z}{ {1 - z - {z^2}}}
最后只要将 \frac{z}{ {1 - z - {z^2}}} 表示成多项式的形式就行了, [{z^n}]\frac{z}{ {1 - z - {z^2}}} 就是斐波那契数列的通项公式了。

posted on 2020-01-17 01:03  godweiyang  阅读(378)  评论(0编辑  收藏  举报

导航