泰勒级数

· · 算法·理论

泰勒公式

我们考察一个多项式:

p=p(x)=a_0+a_1x+a_2x^2+\dots+a_nx^n

运用高中的求导法则,可以轻易的得到如下结果:

\begin{aligned} p'&=a_1+2a_2x+3a_3x^2+\dots+na_nx^{n-1},\\ p''&=2a_2+3\cdot 2a_3x+\dots+n\cdot (n-1)a_nx^{n-2},\\ &\dots\\ p^{(n)}&=n\cdot(n-1)\cdot(n-2)\dots2\cdot a_n \end{aligned}

此时,我们令 x=0 隧有:

p^{(i)}(0)=a_i\cdot i!\\ \Rightarrow a_i=\frac{p^{(i)}(0)}{i!}

带入原式,于是有:

p(x)=p(0)+\frac{p'(0)}{1!}x+\frac{p''(0)}{2!}x^2+\dots+\frac{p^{(n)}(0)}{n!}x^n

我们再最前面,令 x=(x-x_0) 那么在这一步,我们得到的就是:

p(x)=p(x_0)+\frac{p'(x_0)}{1!}(x-x_0)+\frac{p''(x_0)}{2!}(x-x_0)^2+\dots+\frac{p^{(n)}(x_0)}{n!}(x-x_0)^n

这就是我们熟知的泰勒公式。

任意函数的展开式

若函数 f(x) 存在 x_0 再区间 [a,b]n 阶可导,于是我们就可以做出多项式

p_n(x)=f(x_0)+\frac{f'(x_0)}{1!}(x-x_0)+\frac{f''(x_0)}{2!}(x-x_0)^2+\dots+\frac{f^{(n)}(x_0)}{n!}(x-x_0)^n

但此时,f(x)=p_n(x) 就不一定成立,我们求得的 p(x) 只能看作是函数 f(x) 的近似函数。
我们把它们的误差记作 r_n(x)=f(x)-p_n(x)
我们发现当 x\rightarrow x_0 时有 r_n(x)=o((x-x_0)^n)。 ::::info[证明] 考虑它的等价命题

r_n(x_0)=r_n'(x_0)=\dots=r_n^{(m)}(x_0)=0

这里采用数学归纳法证明。
m=0,1 时,显然有

r_n(x_0)=r_n'(x_0)=0

1\le m=k 时成立,若要推出 m=k+1 时也成立,即

r_n(x_0)=r_n'(x_0)=\dots=r_n^{(k+1)}(x_0)=0

r_n(x)=o((x-x_0)^{k+1})

于是有

r_n'(x)=o((x-x_0)^k)

但是由拉格朗日中值定理可得,必然 \exists x_t\in[x,x_0],使得

r_n'(x_t)(x-x_0)=r_n(x)-r_n(x_0)\\ \Rightarrow r_n'(x_t)=o((x-x_0)^k)\\

在这里加一句吐槽,洛谷好像并没有完整的支持 latex 的全部功能,本来想放个 \Box 在结尾的,结果放到洛谷上就报错了,就很难绷。
:::: 那么我们就十分轻易的得到了

f(x)=\sum^n_{i=0}{\frac{f^{(i)}(x_0)}{i!}(x-x_0)^i}+o((x-x_0)^n)

这被称为含 Peano 余项的泰勒公式
接着,是要证明它的唯一性。 ::::info[唯一性的证明] 假设我们同时有

f(x)=\sum^n_{i=0}{A_i(x-x_0)^i}+o((x-x_0)^n)

f(x)=\sum^n_{i=0}{A'_i(x-x_0)^i}+o((x-x_0)^n)

我们让 x\to x_0 则可以得到 A_0=A'_0,做差相减,然后除以 (x-x_0),就可以得到 A_1=A'_1,继续做下去,你就得到了

A_i=A'_i(\forall i\in[1,n]\cap\mathbb{N})

那就唯一啦! :::: 我们把 x_0=0 带入,就得到了一个更为简洁的式子,叫麦克劳林展开,就这就可以取个新名字?!挺讽刺的其实。
下面列出一些基本的初等函数的麦克劳林展开。

\begin{aligned} e^x&=\sum_{i=0}^n\frac{x^i}{i!}+o(x^n)\\ \sin(x)&=\sum_{i=0}^n(-1)^{i+1}\frac{x^{2i-1}}{(2i-1)!}+o(x^{2n})\\ \cos(x)&=\sum_{i=0}^n(-1)^i\frac{x^{2i}}{(2i)!}+o(x^{2n+1})\\ \end{aligned}

泰勒级数

在前面的泰勒公式中,注意到 n 有任意的取值,那自然有让它趋于无穷的想法。
那么泰勒级数指的就是 n\to\infty 的泰勒公式啦~
正式的说,泰勒级数就是如下形式:

f(x)=\sum^\infty_{i=0}{A_i(x-x_0)^i}

其中

A_n=\frac{f^{(i)}(x_0)}{i!}

被称为泰勒系数。
虽然这是看似十分简单的事情,但这会产生许多问题。最直接的,就是那个级数收敛吗?他还会等于原函数吗?这是一个十分棘手的问题。

f(x) 能等于那个求和式当且仅当,余式 r_n(x) 满足

\lim_{n\to\infty}r_n(x)=0

证明显然。
但是想要证明这个等式成立,我们可能要研究余式的其他形式。下面,我以 x_0=0 的情况进行讨论,其他情况请读者自行探究。

其中 \theta\in[0,1]
证明?拉格朗日形式使用拉格朗日中值定理证明,柯西形式使用柯西中值定理证明。

这里先给出一些函数具体的的泰勒展开形式。

指数,基本三角函数的泰勒展开

若函数 f(x) 在区间 [0,H][-H,0](H>0) 上具有各阶导数,并且当 x 在所给的区间变化时,所有的这些导数的绝对值被相同的一个数界定:

|f^{(n)}(x)|\le L

则该函数可以泰勒展开。 ::::info[证明] 我们取余项为拉格朗日形式,那么就容易得到:

|r_n(x)|=\frac{|f^{(n+1)}(\theta x)|}{(n+1)!}|x|^{n+1}\le L\cdot\frac{H^{n+1}}{(n+1)!}

我们证一个更强的结论,现将将两边求和,就可以得到:

\sum_{n=0}^\infty|r_n(x)|\le L\cdot\sum_{n=0}^\infty \frac{H^{n+1}}{(n+1)!}

右式显然是收敛的,既可以推出 r_n(x)\to 0 啦! :::: 当 f(x)=e^x,\sin(x),\cos(x) 时显然是满的,那么我们可以写出他们的展开形式:

\begin{aligned} e^x&=\sum_{i=0}^\infty\frac{x^i}{i!}\\ \sin(x)&=\sum_{i=1}^\infty(-1)^{i+1}\frac{x^{2i-1}}{(2i-1)!}\\ \cos(x)&=\sum_{i=0}^\infty(-1)^i\frac{x^{2i}}{(2i)!}\\ \arctg(x)&=\sum_{i=1}^\infty(-1)^{i+1}\frac{x^{2i-1}}{2i-1} \end{aligned}

在这里,我们对于反正切的展开式,我们带入 x=1,就可以得到:

\frac\pi4=1-\frac13+\frac15-\cdots

就是经典的莱布尼茨公式。

对数函数

考虑将 f(x)=\ln(1+x) 展开,这里是我们展开 1+x 是因为这样展开可以方便计算。
先写出它的泰勒级数

\ln(x)=\sum_{x=1}^\infty(-1)^{n+1}\frac{x^n}{n}

我们使用拉格朗日形式的余项来考虑它的收敛性。

\lim_{n\to\infty}r_n(x)=\frac{(-1)^n}{n+1}\cdot(\frac x{\theta x+1})^{n+1}=0

但很可惜,上述式子只有在 x\in(-1,1] 时才成立,即他的展开式收敛。

斯特林公式

泰勒级数的大部分应用时估值,这里给一个估值的经典例子。
考察前面得到的 \ln(1+x) 的泰勒展开,我们可以轻易地得到

\ln\frac{1+x}{1-x}=\ln(1+x)-\ln(1+(-x))=2x\cdot(1+\frac{x^2}{3}+\frac{x^4}5+\dots)

我们令 x=\frac1{2n+1},便可以得到

\ln\frac{n+1}{n}=\frac2{2n+1}\cdot[1+\frac13\cdot\frac1{(2n+1)^2}+\dots]

移项,可得

\begin{aligned} 1<(n+\frac12)\ln(1+\frac1n)&=1+\frac13\cdot\frac1{(2n+1)^2}+\dots\\ &<1+\frac13\cdot[\frac1{(2n+1)^2}+\frac1{(2n+1)^4}+\dots]\\ &=1+\frac1{12n(n+1)} \end{aligned}

两边同时去自然指数,得:

1<\frac{(1+\frac1n)^{n+\frac12}}{e}<e^\frac1{12n(n+1)}

这里引入一个天才的想法,设 a_n=\frac{n!e^n}{n^{n+\frac12}},那么可以得到:

1<\frac{a_n}{a_{n+1}}=\frac{(1+\frac1n)^{n+\frac12}}{e}<e^\frac1{12n(n+1)}=\frac{e^\frac1{12n}}{e^\frac1{12(n+1)}}\\ \Rightarrow a_n e^{-\frac1{12n}}<a_{n+1}e^{-\frac1{12(n+1)}}

注意到我们显然是 \exists a 使得 a_n e^{-\frac1{12n}}<a<a_n 成立的,我们令

a=a_ne^{-\frac\theta{12n}}

带入 a_n 的定义,于是可以得到:

n! =a\sqrt n(\frac ne)^n\cdot e^\frac\theta{12n}

现在我们考虑如何求解 a
注意到

\frac\pi2=\lim_{n\to\infty}\frac1{2n+1}\cdot[\frac{(2n)!!}{(2n-1)!!}]^2

我们对后面这个双阶乘进行变形

\frac{(2n)!!}{(2n-1)!!}=\frac{2^{2n}(n!)^2}{(2n)!}

n!,(2n)! 换成我们之前推导出来的结果,得:

\frac{(2n)!!}{(2n-1)!!}=a\sqrt\frac n2\cdot e^\frac{4\theta-\theta'}{24n}

带回原来的极限中,得到:

\frac\pi2=\lim_{n\to\infty}\frac1{2n+1}a^2\cdot\frac n2\cdot e^\frac{4\theta-\theta'}{12n} =\frac{a^2}4\\ \Rightarrow a=\sqrt{2\pi}

带回最开始的式子,于是我们就得到了斯特林公式:

n! =\sqrt{2\pi n}\cdot(\frac ne)^n\cdot e^\frac\theta{12n}

这可以在 n 特别大时进行估值。