泰勒公式
由于教材中讲解泰勒公式过于理论化,没有深刻理解,更是不知道其用途。
所以写篇博客,用于给自己加深印象。同时通过一些现实中的例子来加深泰勒公式的理解。
泰勒公式的一般形态
设f(x)f(x)f(x)在x0x_0x0处有n阶导数,则有公式
f(x)=f(x0)+f′(x0)1!(x−x0)+f′′(x0)2!(x−x0)2+...+fn(x0)n!+o[(x−x0)n]f(x)=f(x_0)+{f^{'}(x_0)\over 1!}(x-x0)+{f^{''}(x_0)\over 2!}(x-x_0)^2+...+{f^{n}(x_0)\over n!} +o[(x-x0)^n]f(x)=f(x0)+1!f′(x0)(x−x0)+2!f′′(x0)(x−x0)2+...+n!fn(x0)+o[(x−x0)n]
函数的目的是求f(x)f(x)f(x)的值,导数从x0x_0x0处开始的,当然x越接近x0x_0x0,值就越准确,同时保留的阶数越多,也越精确。
泰勒公式第一项是f(x0)f(x_0)f(x0)是x0处的函数值,第二项就是函数f(x)f(x)f(x)的1阶导数乘以变化量。
泰勒公式的背景:用多项式逼近函数
我们先看任一个多项式
Pn(x)=a0+a1(x−x0)+a2(x−x0)2+a3(x−x0)3+...+an(x−x0)nP_n(x)=a_0+a_1(x-x_0)+a_2(x-x_0)^2+a_3(x-x_0)^3+...+a_n(x-x_0)^nPn(x)=a0+a1(x−x0)+a2(x−x0)2+a3(x−x0)3+...+an(x−x0)n
将这个多项式逐次求导得:
一次求导Pn′(x)=1∗a1+2∗a2(x−x0)+3∗a3(x−x0)2+...+n∗an(x−x0)n−1P^{'}_n(x)=1*a_1+2*a_2(x-x_0)+3*a_3(x-x_0)^2+...+n*a_n(x-x_0)^{n-1}Pn′(x)=1∗a1+2∗a2(x−x0)+3∗a3(x−x0)2+...+n∗an(x−x0)n−1
二次求导Pn′(x)=2!∗a2+3∗2∗a3(x−x0)+...+n∗(n−1)an(x−x0)n−2P^{'}_n(x)=2!*a_2+3*2*a_3(x-x_0)+...+n*(n-1)a_n(x-x_0)^{n-2}Pn′(x)=2!∗a2+3∗2∗a3(x−x0)+...+n∗(n−1)an(x−x0)n−2
三次求导Pn′(x)=3!∗a3+...+n∗(n−1)∗(n−2)an(x−x0)n−3P^{'}_n(x)=3!*a_3+...+n*(n-1)*(n-2)a_n(x-x_0)^{n-3}Pn′(x)=3!∗a3+...+n∗(n−1)∗(n−2)an(x−x0)n−3
…
n次求导Pn(n)=n∗(n−1)∗(n−2)∗...∗1=n!anP^{(n)}_n=n*(n-1)*(n-2)*...*1=n!a_nPn(n)=n∗(n−1)∗(n−2)∗...∗1=n!an
下面我们求出x0x_0x0处各阶的导数
Pn(x0)=a0P_n(x_0)=a_0Pn(x0)=a0,P′(x0)=a1P^{'}(x_0)=a_1P′(x0)=a1,P′′(x0)=2!a2P^{''}(x_0)=2!a_2P′′(x0)=2!a2,P′′′(x0)=3!a3P^{'''}(x_0)=3!a_3P′′′(x0)=3!a3,…,Pn(x0)=n!anP^{n}(x_0)=n!a_nPn(x0)=n!an
如果我们设定一个任意函数f(x)f(x)f(x)假设有n阶导数,让f(x0)f(x_0)f(x0)的值等于Pn(x0)P_n(x_0)Pn(x0),一阶导数f′(x0)f^{'}(x_0)f′(x0)等于Pn′(x0)P^{'}_n(x_0)Pn′(x0),二阶导数f′′(x0)f^{''}(x_0)f′′(x0)等于Pn′′(x0)P^{''}_n(x_0)Pn′′(x0),三阶导数f′′(x0)f^{''}(x_0)f′′(x0)等于Pn′′(x0)P^{''}_n(x_0)Pn′′(x0),一直到n阶fn(x0)f^{n}(x_0)fn(x0)等于Pnn(x0)P^{n}_n(x_0)Pnn(x0)
f(x0)=Pn(x0)=a0f(x_0)=P_n(x_0)=a_0f(x0)=Pn(x0)=a0
f′(x0)=Pn′(x0)=a1f^{'}(x_0)=P^{'}_n(x_0)=a_1f′(x0)=Pn′(x0)=a1
f′′(x0)=Pn′′(x0)=2!∗a2f^{''}(x_0)=P^{''}_n(x_0)=2!*a_2f′′(x0)=Pn′′(x0)=2!∗a2
f′′′(x0)=Pn′′′(x0)=3!∗a3f^{'''}(x_0)=P^{'''}_n(x_0)=3!*a_3f′′′(x0)=Pn′′′(x0)=3!∗a3
…
fn(x0)=Pnn(x0)=n!∗anf^{n}(x_0)=P^{n}_n(x_0)=n!*a_nfn(x0)=Pnn(x0)=n!∗an
推导出多项式的系数
a0=f(x0)a_0=f(x_0)a0=f(x0),a1=f′(x0)a_1=f^{'}(x_0)a1=f′(x0),a2=f′′(x0)2!a_2=\frac {f^{''}(x_0)}{2!}a2=2!f′′(x0),a3=f′′′(x0)3!a_3=\frac {f^{'''}(x_0)}{3!}a3=3!f′′′(x0),…,an=fn(x0)n!a_n=\frac {f^{n}(x_0)}{n!}an=n!fn(x0)
把系数重新带入
Tn(x)=f(x0)+f′(x0)(x−x0)+f′′(x0)2!(x−x0)2+f′′′(x0)3!(x−x0)3+...+fn(x0)n!(x−x0)nT_n(x)=f(x_0)+f^{'}(x_0)(x-x_0)+\frac {f^{''}(x_0)}{2!}(x-x_0)^2+\frac {f^{'''}(x_0)}{3!}(x-x_0)^3+...+\frac {f^{n}(x_0)}{n!}(x-x_0)^nTn(x)=f(x0)+f′(x0)(x−x0)+2!f′′(x0)(x−x0)2+3!f′′′(x0)(x−x0)3+...+n!fn(x0)(x−x0)n
多项式Tn(x)T_n(x)Tn(x)的各项系数由f(x)f(x)f(x)在点x0的各阶导数值所唯一确定的
从数感及直觉上f(x)f(x)f(x)和Tn(x)T_n(x)Tn(x)在x0x_0x0处非常非常接近,其实这两个函数的误差是无穷小的。如何证明呢
下面我们证明一下f(x)−Tn(x)=o((x−x0)n)f(x)-T_n(x)=o((x-x_0)^n)f(x)−Tn(x)=o((x−x0)n)
**定理:**若函数f在点x0x_0x0存在直到n阶的导数,则有f(x)=T_n(x)+o((x-x_0)^n),即:
f(x)=f(x0)+f′(x0)(x−x0)+...+fn(x0)n!(x−x0)n+o((x−x0)n)f(x)=f(x_0)+f^{'}(x_0)(x-x_0)+...+\frac {f^{n}(x_0)}{n!}(x-x_0)^n+o((x-x_0)^n)f(x)=f(x0)+f′(x0)(x−x0)+...+n!fn(x0)(x−x0)n+o((x−x0)n)。
证明: 设Rn(x)=f(x)−Tn(x),Qn(x)=(x−x0)nR_n(x)=f(x)-T_n(x),Q_n(x)=(x-x_0)^nRn(x)=f(x)−Tn(x),Qn(x)=(x−x0)n,则需要证明
limx→x0Rn(x)Qn(x)=0 \lim_{x \to x_0} \frac{R_n(x)}{Q_n(x)}=0 x→x0limQn(x)Rn(x)=0。
根据 洛必达法则 limx→x0Rn(x)Qn(x)=limx→x0Rn′(x)Qn′(x)=limx→x0Rn′′(x)Qn′′(x)=...=limx→x0Rnn−1(x)Qnn−1(x)=limx→x0fn−1(x)−Tnn−1(x)n!(x−x0)=1n!limx→x0fn−1(x)−Tnn−1(x)(x−x0) \lim_{x \to x_0} \frac{R_n(x)}{Q_n(x)}=\lim_{x \to x_0} \frac{R^{'}_n(x)}{Q^{'}_n(x)} =\lim_{x \to x_0} \frac{R^{''}_n(x)}{Q^{''}_n(x)}=...=\lim_{x \to x_0} \frac{R^{n-1}_n(x)}{Q^{n-1}_n(x)}
=\lim_{x \to x_0} \frac{f^{n-1}(x)-T^{n-1}_n(x)}{n!(x-x_0)}
= \frac{1}{n!}\lim_{x \to x_0} \frac{f^{n-1}(x)-T^{n-1}_n(x)}{(x-x_0)}x→x0limQn(x)Rn(x)=x→x0limQn′(x)Rn′(x)=x→x0limQn′′(x)Rn′′(x)=...=x→x0limQnn−1(x)Rnn−1(x)=x→x0limn!(x−x0)fn−1(x)−Tnn−1(x)=n!1x→x0lim(x−x0)fn−1(x)−Tnn−1(x)
然后已知rn(n−1)(x)=f(n−1)(x0)−f(n)(x0)(x−x0)r^{(n-1)}_n(x)=f^{(n-1)}(x_0)-f^{(n)}(x_0)(x-x_0)rn(n−1)(x)=f(n−1)(x0)−f(n)(x0)(x−x0)
1n!limx→x0fn−1(x)−Tnn−1(x)(x−x0)=1n!limx→x0fn−1(x)−f(n−1)(x0)+f(n)(x0)(x−x0)(x−x0)=1n!limx→x0fn−1(x)−f(n−1)(x0)+f(n)(x0)(x−x0)(x−x0) \frac{1}{n!}\lim_{x \to x_0} \frac{f^{n-1}(x)-T^{n-1}_n(x)}{(x-x_0)}
=\frac{1}{n!}\lim_{x \to x_0} \frac{f^{n-1}(x)-f^{(n-1)}(x_0)+f^{(n)}(x_0)(x-x_0)}{(x-x_0)}=
\frac{1}{n!}\lim_{x \to x_0} \frac{f^{n-1}(x)-f^{(n-1)}(x_0)+f^{(n)}(x_0)(x-x_0)}{(x-x_0)}n!1x→x0lim(x−x0)fn−1(x)−Tnn−1(x)=n!1x→x0lim(x−x0)fn−1(x)−f(n−1)(x0)+f(n)(x0)(x−x0)=n!1x→x0lim(x−x0)fn−1(x)−f(n−1)(x0)+f(n)(x0)(x−x0)
=1n!limx→x0fn−1(x)−f(n−1)(x0)(x−x0)+f(n)(x0)=\frac{1}{n!} \lim_{x \to x_0} \frac{f^{n-1}(x)-f^{(n-1)}(x_0)}{(x-x_0)}+f^{(n)}(x_0)=n!1limx→x0(x−x0)fn−1(x)−f(n−1)(x0)+f(n)(x0)
其实前半部分fn−1(x)−f(n−1)(x0)(x−x0)=f(n)(x0)\frac{f^{n-1}(x)-f^{(n-1)}(x_0)}{(x-x_0)}=f^{(n)}(x_0)(x−x0)fn−1(x)−f(n−1)(x0)=f(n)(x0)
所以1n!limx→x0fn−1(x)−Tnn−1(x)(x−x0)=0\frac{1}{n!}\lim_{x \to x_0} \frac{f^{n-1}(x)-T^{n-1}_n(x)}{(x-x_0)}=0n!1limx→x0(x−x0)fn−1(x)−Tnn−1(x)=0