泰勒近似


 

17.1 引言

17.1.1 线性如何帮助费曼攻克立方根

据传说1,理查德·费曼曾接受挑战,与算盘计算比赛计算 1729.03 的立方根。通过使用线性近似和一点运气,他用纸笔得到了 12.002384 。实际的立方根是 12.002383785691718123057 。费曼是如何做到的?秘密就在于线性近似。这意味着我们用线性函数来近似像 f ( x ) = x 1 / 3 这样的函数。同样的方法也适用于多变量函数。线性近似的形式为

图1. 电影《无穷》中的算盘场景。

17.1.2 超越线性近似

我们也可以进行更高阶的近似。例如,函数 f ( x ) = e x a = 0 处的线性近似为 L ( x ) = 1 + x ,二次近似为 Q ( x ) = 1 + x + x 2 / 2 。要得到二次项,我们只需确保在 x = a 处的一阶和二阶导数一致。这给出了公式 确实,你可以验证 f ( x ) Q ( x ) x = a 处具有相同的一阶导数和相同的二阶导数。一个 n 次近似就是 多项式 P n ( x ) = k = 0 n f ( k ) ( a ) ( x a ) k k ! . 例如,对于函数 e x ,我们有 m 阶近似 e x = 1 + x + x 2 / 2 ! + x 3 / 3 ! + + x n / n ! .

17.1.3 多变量近似

同样的方法可以推广到更高维度。一切都是一样的。我们只需使用导数 d f 而不是通常的导数 。这里我们只考虑函数 n 的线性和二次近似。线性近似为 L ( x ) = f ( a ) + f ( a ) ( x a ) 其中 f ( a ) = d f ( a ) = [ f x 1 ( a ) , , f x n ( a ) ] 是雅可比矩阵,它是一个行向量。现在,由于我们可以将 d f ( x ) : n n 视为,二阶导数是一个矩阵 d 2 f ( x ) = H ( x ) 。它被称为海森矩阵。它编码了所有的二阶导数 H i j ( x ) = f x i x j

17.2 讲座

17.2.1 揭示多维泰勒公式

给定一个函数 f : m n ,其导数 d f ( x ) 是雅可比矩阵。对于每个 x m ,我们可以使用矩阵 d f ( x ) 和向量 v m 得到 D v f ( x ) = d f ( x ) v m 。对于固定的 v ,这定义了一个映射 x m d f ( x ) v n ,类似于原来的 f 。因为 D v 𝒳 = { 所有从  m n  的函数 } , 上的一个映射,我们称之为 算子泰勒公式 f ( x + t ) = e D t f ( x ) 在任意维度都成立:

定理 1. f ( x + t v ) = e D v t f = f ( x ) + D v t f ( x ) 1 ! + D v 2 t 2 f ( x ) 2 ! +

证明. 这是单变量泰勒公式在直线 x + t v 上的应用。方向导数 D v f 在这里就是通常的导数,因为 lim t 0 [ f ( x + t v ) f ( x ) ] / t = D v f ( x ) . 从技术上讲,我们还需要级数收敛:比如由多项式、 sin cos exp 构成的函数。 ◻

17.2.2 张量与多维泰勒级数表示

泰勒公式也可以使用逐次导数 d f d 2 f d 3 f 来书写,这些导数被称为 张量。在标量情况 n = 1 下,一阶导数 d f ( x ) 导出梯度 f ( x ) ,二阶导数 d 2 f ( x ) 导出 海森矩阵 H ( x ) ,它是一个作用在向量对上的双线性形式。三阶导数 d 3 f ( x ) 则作用在向量三元组上,等等。我们仍然可以像一维情况那样写

定理 2.

如果我们记 f ( k ) = d k f 。对于多项式,这意味着我们先写出常数项,然后所有线性项,然后所有二次项,然后所有三次项,等等。

17.2.3 通过线性化进行局部近似

假设 f : m 并在泰勒级数的第一步后停止。我们得到 L ( x 0 + v ) = f ( x 0 ) + f ( x 0 ) v . 习惯上将其写为 x = x 0 + v v = x x 0 ,即 L ( x ) = f ( x 0 ) + f ( x 0 ) ( x x 0 ) 这个函数称为 f 线性化 L f ( x 0 ) 的核是一个线性流形,它近似于曲面 { x f ( x ) f ( x 0 ) = 0 } . 如果 f : m n ,那么刚才所说的可以应用于 f 的每个分量 f i ,其中 1 i n 。这种线性化的重要性怎么强调都不为过。2

17.2.4 更进一步:使用海森矩阵的二次近似

如果我们在泰勒级数的两步后停止,我们得到函数 Q ( x + v ) = f ( x ) + d f ( x ) v + v d 2 f ( x ) v / 2. 矩阵 H ( x ) = d 2 f ( x ) 称为点 x 处的 海森矩阵。这里也习惯通过写 x = x 0 + v 来消去 v Q ( x ) = f ( x 0 ) + f ( x 0 ) ( x x 0 ) + ( x x 0 ) H ( x 0 ) ( x x 0 ) / 2 称为 f 二次近似 Q f ( x 0 ) 的核是 二次流形 Q ( x ) f ( x 0 ) = x B x + A x = 0 , 其中 A = d f B = d 2 f / 2 。它比线性近似更好地逼近曲面 { x f ( x ) f ( x 0 ) = 0 } 。如果 | x x 0 | ϵ 阶的,那么 | f ( x ) L ( x ) | ϵ 2 阶的,而 | f ( x ) Q ( x ) | ϵ 3 阶的。这由精确的 带余项的泰勒公式 得出。3

17.2.5 曲面的切平面

要得到曲面 f ( x ) = C 切平面,我们可以直接考虑线性流形 L ( x ) = C 。然而,有一个更好的方法:

曲面 f ( x , y , z ) = C ( x 0 , y 0 , z 0 ) 处的切平面为 a x + b y + c z = d ,其中 [ a , b , c ] T = f ( x 0 , y 0 , z 0 ) d = a x 0 + b y 0 + c z 0

17.2.6 梯度如何帮助找到曲面的切平面

这由 梯度的基本定理 得出:

定理 3. 函数 f : m 的梯度 f ( x 0 ) x 0 处垂直于曲面 S = { f ( x ) = f ( x 0 ) = C }

证明. r ( t ) S 上的一条曲线,且 r ( 0 ) = x 0 。链式法则保证 但因为 f ( r ( t ) ) = c 是常数,所以该式为零,从而保证 垂直于梯度。由于这对任何曲线都成立,证毕。 ◻

17.3 示例

示例 1. f : 2 f ( x , y ) = x 3 y 2 + x + y 3 给出。在 ( x 0 , y 0 ) = ( 1 , 1 ) 处的二次近似是什么?我们有 d f ( 1 , 1 ) = [ 4 , 5 ] 以及

线性化为 L ( x , y ) = 4 ( x 1 ) + 5 ( y 1 ) + 3. 二次近似为 Q ( x , y ) = 3 + 4 ( x 1 ) + 5 ( y 1 ) + 6 ( x 1 ) 2 / 2 + 12 ( x 1 ) ( y 1 ) / 2 + 8 ( y 1 ) 2 / 2. 这就是图 (17.2) 左侧所示的情况。对于 v = [ 7 , 2 ] T ,方向导数 开头给出的泰勒展开是一个有限级数,因为 f 是一个多项式:

示例 2. 对于 f ( x , y , z ) = x 4 + x 2 + y 2 + z 2 ,梯度和海森矩阵为

线性化为 L ( x , y , z ) = 2 2 ( x 1 ) + 2 ( y 1 ) + 2 ( z 1 ) . 二次近似 Q ( x , y , z ) = 2 2 ( x 1 ) + 2 ( y 1 ) + 2 ( z 1 ) + ( 10 ( x 1 ) 2 + 2 ( y 1 ) 2 + 2 ( z 1 ) 2 ) / 2 是图 (17.2) 右侧所示的情况。

示例 3. 曲面 f ( x , y , z ) = 1 / 10 在点 ( x , y , z ) = ( 0 , 0 , 1 / 10 ) 处的切平面是什么?其中 梯度为 f ( 0 , 0 , 1 / 10 ) = [ 0 0 2 ] . 切平面方程为 2 z = d ,其中常数 d 通过代入该点得到。我们最终得到 2 z = 2 / 10 。线性化为 L ( x , y , z ) = 1 / 20 + 2 ( z 1 / 10 )

练习

练习 1. r ( t ) = [ 3 t + cos ( t ) , t + 4 sin ( t ) ] T 是一条曲线,且 f ( [ x , y ] T ) = [ x 3 + y , x + 2 y + y 3 ] T 是一个坐标变换。

  1. 计算 t = 0 处的值,然后计算 d f ( x , y ) A = d f ( r ( 0 ) ) 以及
  2. 先计算 R ( t ) = f ( r ( t ) ) ,然后求 。它应该与 a) 一致。

练习 2.

  1. 曲面 f ( x , y , z ) = x 2 + y 2 4 + z 2 9 = 4 + 1 / 4 + 1 / 9 是一个椭球面。使用隐函数微分法则,在点 ( x , y , z ) = ( 2 , 1 , 1 ) 处计算 z x ( x , y ) 。(使用公式)。
  2. x = 2 开始,应用牛顿迭代法 3 次来求解方程 x 2 2 = 0

练习 3. 不使用技术工具,利用二次近似计算 1002 的立方根。特别要看看你离真实值有多接近。

练习 4.

  1. 求曲面 f ( x , y , z ) = x y z = 60 ( x , y , z ) = ( 100 , 36 , 1 ) 处的切平面。
  2. 使用线性近似估计 100.1 36.1 0.999 (计算 L ( x , y , z ) 而不是 f ( x , y , z ) )。

练习 5. 通过计算梯度向量 f ( 1 , 2 ) 和海森矩阵 H ( 1 , 2 ) ,求函数 f ( x , y ) = x 3 + x 2 y + x 2 + y 2 2 x + 3 x y 在点 ( 1 , 2 ) 处的二次近似 Q ( x , y ) 。向量 f ( 1 , 2 ) 是一个 1 × 2 矩阵(行向量),而海森矩阵 H ( 1 , 2 ) 是一个 2 × 2 矩阵。


  1. 费曼的书《你在乎别人怎么想吗?》。↩︎
  2. 再次强调:线性化的思想极其重要,因为它引入了线性代数。↩︎
  3. 如果 f C n + 1 f ( x + t ) = k = 0 n f ( k ) ( x ) t k / k ! + 0 t ( t s ) n f ( n + 1 ) ( x + s ) / n ! d s . (用归纳法证明!)↩︎