01怎样改进上一条直线?
近似计算那一页中,我们用一个已知的函数值和那里的斜率,估计附近的函数值。那一页把已知起点叫作 u,这里改用 a 命名。目标输入叫作 x,而 h=x−a 是从 a 到 x 的带符号变化量。h 为负表示目标在起点左侧。
f(a+h)≈f(a)+hf′(a) f(a) 决定直线经过哪里。导数 f′(a),也就是函数在 a 处的斜率,决定直线朝哪个方向走。可是直线的斜率处处相同,原函数的方向却可能逐渐变化。想跟上这种变化,就需要比一次项更多的信息。
为什么寻找多项式?例如 1+x+x2 只需要乘法和加法,比平方根或三角函数更容易计算。我们要解决的不是随意画线,而是每一个系数应该怎样有根据地选出来。
02起点在哪里,哪些量要相同
先选 a=0。这个起点很方便,因为零的正整数次幂仍然是零。多项式是有限项的和:一个常数、某个数乘 x、某个数乘 x2。乘在这些幂前面的数叫作系数 c0,c1,c2,下标记录它属于哪一个次数。
PN(x)=c0+c1x+c2x2+⋯+cNxN P 是我们正在构造的多项式,N 是最高保留的次数。常数 c0 完全不含 x。我们接下来选择这些系数,让 P 和 f 在零处的值相同,再要求它们在零处的各阶导数也相同。
PN(0)=f(0),PN′(0)=f′(0) 第一个条件让两条图像经过同一个点。N≥1 时,第二个条件让它们在该点具有相同的斜率。这正是切线完成的两件事。若 N=0,只有常数项,我们只要求第一个条件。
对 f′ 求导得到 f′′,它描述斜率怎样变化。再求一次导数得到 f′′′,它描述 f′′ 怎样变化。保留到 N 次项时,我们要求直到 N 阶的导数都在零处相同;原函数在起点处必须有这些导数。
PN′′(0)=f′′(0),PN′′′(0)=f′′′(0) 这是构造有限多项式的规则。我们还没有说离开零点以后这两个函数就完全相等。究竟有多接近,后面会单独检验。
03让一个未知系数单独留下来
先找 c0。代入 x=0,所有含 x 正整数次幂的项都消失,只留下常数,所以 PN(0)=c0,给出 c0=f(0)。找 c1 时,先求一次导数把它变成常数:旧常数消失,c1x 变成 c1。
PN′(x)=c1+2c2x+3c3x2+⋯ 常数不发生变化,所以导数为零。xn 求导后,n 成为乘在前面的因数,次数降为 n−1;原来整项乘着固定系数 cn,导数也乘上同一个 cn。
为什么次数会变成前面的乘数?
对于正整数 n,(x+t)ⁿ 是 n 个相同括号的乘积。展开时,完全不选 t 的那一项是 xⁿ。只含一个 t 的项,要从一个括号中选 t,其余括号都选 x。这个括号有 n 种选法,所以这些项加起来是 nxⁿ⁻¹t。其余贡献至少含有两个 t。
(x+t)n−xn=nxn−1t+t2B(t) B(t) 只是一个名字,表示其余项提取 t² 后留下的有限多项式。我们只对非零的 t 做除法,随后考察 t 趋向零时的结果。因为 B(t) 在零附近保持有限,tB(t) 就趋向零,留下的斜率是 nxⁿ⁻¹。
t(x+t)n−xn=nxn−1+tB(t) dxd(xn)=nxn−1(n≥1) d/dx 表示“对 x 求导”。n=0 时,这一项就是常数 1,导数为 0;我们不把这个正整数次幂的公式硬套进去,制造一个负次幂。
原来的项 c2x2还没有求导。 原来的项 c3x3还没有求导。 原来的项 c4x4还没有求导。 步骤 0 / 2 试试 c2。求两次导数后变成 2c2。此时代入 x=0 高次项消失,而低次项早已在求导中消失。因此 f′′(0)=2c2,得到 c2=f′′(0)/2。对于 c3,依次留下 3、2、1,除以 6 就能把多余因数除掉。
正在寻找的次数它刚好变成常数,正是我们保留的那一项。
04把规律写下来,但不跳过因数的来路
求 n 次导数后,x 已经消失,前面的乘数就是 n(n−1)⋯2⋅1。这个乘积叫作 n 的阶乘,写成 n!。因此 f(n)(0)=n!cn,给出 cn=f(n)(0)/n!。
f(n)(0)=n!cn cn=n!f(n)(0) f(n) 表示求了 n 次导数。对于常数项,我们约定 f(0)=f 且 0!=1,于是同一条规则也给出 c0=f(0)。
PN(x)=n=0∑Nn!f(n)(0)xn 大写的 Σ 表示“相加”。N 固定不动,n 从 0 数到 N。这样围绕零点构造的多项式,叫作麦克劳林多项式。
P3(x)=f(0)+f′(0)x+2f′′(0)x2+6f′′′(0)x3 如果某一阶导数为零,对应系数也为零。即使某一项没有贡献,匹配导数的规则仍然保留。
05先用一个能核对答案的函数试一试
在把方法用到困难的计算以前,先选 f(x)=1/(1−x)。通过除法,我们能独立核对答案:例如 f(0.5)=2。x=1 不允许,因为分母会变成零。
一次差商化简后,求出导数 f′(x)=1/(1−x)2。
tf(x+t)−f(x)=t1−x−t1−1−x1 =t(1−x−t)(1−x)t ⟶(1−x)21 不靠背公式,继续推到每一阶导数
暂时用 b=1−x 简化书写。对于正整数 m,把 (1−x)⁻ᵐ 的两个函数值通分,分子是 bᵐ−(b−t)ᵐ。用前面解释过的有限乘积展开,得到 bᵐ−(b−t)ᵐ=mbᵐ⁻¹t+t²C(t),其中 C 是有限多项式。除以 t 后让 t 趋向零;因为 x≠1,b 不为零。
t(b−t)−m−b−m=tbm(b−t)mbm−(b−t)m ⟶b2mmbm−1=bm+1m 因此,对 (1−x)⁻ᵐ 求导,会乘上 m,并让分母的次数增加 1。从 m=1 开始,前面的因数依次是 1、1·2、1·2·3。重复同一步,就得到一般形式。在零处,分母为 1,因此导数值是 n!。
f(n)(x)=(1−x)n+1n! f(n)(0)=n!,cn=n!n!=1 所以每个系数都是 1。前几个多项式依次是 P0=1、P1=1+x、P2=1+x+x2。在 x=0.5 处,它们给出 1.5 和 1.75,准确值是 2。图上的竖直高度差就是误差。
原函数 f多项式竖直高度差
固定 x,再一次加一项
N 表示保留到的最高次数。改变 N,比较虚线和误差读数;保持 N 不变而改变 x,就能检查同一个多项式离开零点以后还准不准。
P1(0.5) 误差的大小
这个多项式值是怎样加出来的
1= 1(0.5)= 0.5 把这些贡献加起来,就得到 P1(0.5)=1.5。误差的大小是两者差值的绝对值 ∣f(x)−PN(x)∣,这里不区分差的正负。
06还差多少?能不能一直加下去?
把有限和 1+x+⋯+xN 简写成 SN。通过乘法和减法直接找出精确差值,不需要引入一个尚未解释的一般余项公式。
次数 2−xSN−x2 次数 3−xSN−x3 次数 4−xSN−x4 相消后得到 (1−x)SN=1−xN+1。由于 x=1,等式两边可以除以 1−x。就得到“原函数=有限多项式+还缺的部分”。
SN=1−x1−xN+1 1−x1=SN+1−xxN+1 还缺的部分叫作余项:RN(x)=f(x)−PN(x)。和近似号不同,上面的等式对每个有限 N 以及 x=1 都精确成立。例如 N=3、x=0.5 时,余项是 0.125,正好说明了全部差距。
现在固定 x,让 N 增大。如果 ∣x∣<1,项 ∣x∣N+1 趋向零,因此余项趋向零。但在 x=−1 处,xN+1 不断交替。一个输入对 f 有定义,并不保证这个级数在那里趋向 f。
为什么 0 与 1 之间的数,越乘越趋向零?
把这个数叫作 q,用正整数 m 记录连乘了多少个 q。q=0 时结论直接成立。若 0<q<1,就把 1/q 写成 1+r,其中 r>0。展开 (1+r)ᵐ,得到 1+mr,以及其余非负项,因此它至少是 1+mr。取倒数后,0<qᵐ≤1/(1+mr)。增加 m,就能让右边小于任意预先选定的正数,所以 qᵐ 趋向零。
0<qm=(1+r)m1≤1+mr1⟶0 检查了这个极限以后,我们才可以写出无限级数的等号。围绕零点得到的无限和叫作麦克劳林级数。符号 ∞ 指有限和的极限,而不是把 N 代成某个无穷大的数。
1−x1=n=0∑∞xn(∣x∣<1) 换成其他函数,匹配导数仍然能构造它的有限多项式,但这件事本身没有证明一直加项就一定得到原函数。我们必须检查那个函数的余项。
07改变展开点,但不改变原来的函数
零点方便代入。假设我们要算 f(0.6),又知道 a=0.5 处的值与导数,目标离起点只有 h=0.1。能不能把 a 当作局部的新零点,继续使用同一套构造?
h=x−a,x=a+h 原来的输入 x 仍然指同一个位置。新的输入 h 告诉我们它相对于 a 有多远。我们给新规则取名 g(h)=f(a+h),特别地 g(0)=f(a)。
g(h)=f(a+h),g(0)=f(a) 只移动零点,先让 Q 留在原处
先移动展开点 a。Q 的 x 坐标和高度都不变,变的是它的局部坐标 h。下方的刻度从 a 开始量,不再从原来的零开始量。
原来的函数值
以 a 展开的近似值
以 a 展开的误差
同样次数、以 0 展开的误差
因为 h 增加 t,x 也恰好增加 t,所以 g(n)(0)=f(n)(a):局部零点处的导数就是 a 处的导数。
tg(h+t)−g(h) =tf(a+h+t)−f(a+h) g′(h)=f′(a+h) 回到 a=0.5、x=0.6。导数公式给出系数 2,4,8,16。h=0.1,所以三次近似为 2.496。
T3(0.6)==2+4(0.1)+8(0.1)2+16(0.1)32.496 独立算出的值是 2.5,误差为 0.004。若从零点展开误差为 0.324。把展开点移近,确实有明显帮助。
用同一个有限和,核对平移后的余项
从分母中提取 1−a。把 h/(1−a) 暂时叫作 r;这只是简写,并且 a≠1。原函数成为 1/(1−a) 乘以 1/(1−r)。现在,把已经推过的有限和恒等式用于 r。
f(a+h)=1−a−h1=1−a11−r1 r=1−ah 先认出其中的有限多项式。每个 rⁿ 都是 hⁿ/(1−a)ⁿ,外面的 1/(1−a) 又让分母多一个因数。因此,每项的系数恰好是前面得到的 f⁽ⁿ⁾(a)/n!,这个有限和确实就是 T_N(x)。
1−a1n=0∑Nrn =n=0∑N(1−a)n+1hn=TN(x) 剩下的余项也要乘外面的 1/(1−a)。因为 (1−a)(1−r)=1−a−h=1−x,它的分母就能这样整理。
f(x)−TN(x)=1−a11−rrN+1 =1−xrN+1 当 ∣x−a∣<∣1−a∣ 时,余项趋向零。
如果函数在 a 处有各阶导数,泰勒级数就是围绕 a 的无限和。只有当两者的差趋向零时它才等于 f(x):limN→∞[f(x)−TN(x)]=0。
N→∞lim[f(x)−TN(x)]=0 在选定的输入处确认了这一点,才可以把近似号换成等号。
f(x)=n=0∑∞n!f(n)(a)(x−a)n 08自己用一次,再说明每一步的理由
1 · 若 f(0)=2、f′(0)=−1、f″(0)=6,P₂(x) 是什么?
常数项是 2,一次项系数是 −1。二次项求两次导数会多出因数 2,所以系数是 6/2=3。因此 P2(x)=2−x+3x2。
2 · 对 1/(1−x),求 P₃(0.2) 和剩下的精确误差。
P3(0.2)=1+0.2+0.04+0.008=1.248 精确值是 1.25。余项公式给出 0.24/0.8=0.002,恰好是还缺的部分。
3 · 若 a=0.5、x=0.4,h 和 g(h) 分别是什么?
h=x−a=−0.1。负号表示目标在展开点左侧。g(−0.1)=f(0.4)=5/3,不是 f(−0.1)。
匹配导数告诉我们怎样选择有限多项式;检查余项告诉我们继续加项是否有根据;改变展开点则是换一种输入坐标重新使用同一套构造。
回到数学目录