https://pure-post.vercel.app/api/index?url=https://www.zhihu.com/question/47612535/answer/2468454556
最近在学计算方法,斗胆回答一下这个问题,算是如何直观理解差商?@李晓的回答的具体的展开。
为方便叙述,我模糊了差商和差分的概念。
理解1 差分是多项式这种初等函数(的数列)的递推关系的一种反应
多项式/指数/三角函数这些初等函数的意义是什么呢?
多项式
- 零次多项式 a 0 = 1 , a 1 = 1 , ⋯ , a n = 1 , ⋯ a_0 = 1, a_1 = 1, \cdots, a_n = 1, \cdots a0=1,a1=1,⋯,an=1,⋯
- 一次多项式 b 0 = ∑ j = 0 0 a j , b 1 = ∑ j = 0 1 a j , ⋯ , b n = ∑ j = 0 n a j , ⋯ b_0 = \sum_{j=0}^{0} a_j, b_1 = \sum_{j=0}^{1} a_j, \cdots, b_n = \sum_{j=0}^{n} a_j, \cdots b0=∑j=00aj,b1=∑j=01aj,⋯,bn=∑j=0naj,⋯
- 二次多项式 c 0 = ∑ j = 0 0 b j , c 1 = ∑ j = 0 1 b j , ⋯ , c n = ∑ j = 0 n b j , ⋯ c_0 = \sum_{j=0}^{0} b_j, c_1 = \sum_{j=0}^{1} b_j, \cdots, c_n = \sum_{j=0}^{n} b_j, \cdots c0=∑j=00bj,c1=∑j=01bj,⋯,cn=∑j=0nbj,⋯
指数
- a 0 = 1 , a 1 = a 0 + 1 , ⋯ , a n = ( ∑ j = 0 n − 1 a j ) + 1 , ⋯ a_0 = 1, a_1 = a_0+1, \cdots, a_n = \left( \sum_{j=0}^{n-1} a_j \right) + 1, \cdots a0=1,a1=a0+1,⋯,an=(∑j=0n−1aj)+1,⋯
实际上三角函数也是指数函数,只不过特征根是虚数。
更一般的, 指数可以写成常系数齐次线性差分/微分方程
- a [ n ] = C 1 a [ n − 1 ] + ⋯ + C m a [ n − m ] a[n] = C_1 a[n-1] + \cdots + C_m a[n-m] a[n]=C1a[n−1]+⋯+Cma[n−m]
- a ( t ) = C 1 d d x a ( t ) + ⋯ + C m d m d x m a ( t ) a(t) = C_1 \frac{\mathrm{d}}{\mathrm{d}x} a(t) + \cdots + C_m \frac{\mathrm{d}^m}{\mathrm{d}x^m} a(t) a(t)=C1dxda(t)+⋯+Cmdxmdma(t)
多项式/指数/三角函数这些初等函数的意义,可以理解为代数中最平凡的递推关系。
差分,也在刻画这种递推关系。
正过来看,n次多项式是常数列n阶求和产生的;
反过来看,n次多项式数列差分会得到(n-1)次多项式数列,n阶差分得到常数列,而差分就与差商息息相关。
6 6 6 x = 6
12 18 24 30 x = 6*n + 6
7 19 37 61 91 x = 3*n^2 + 3*n + 1
1 8 27 64 125 216 x = n^3
理解2 差商与导数形式相似
我们假设差商的对象就是多项式函数 f ( x ) = a n x n + ⋯ + a 0 f(x) = a_{n} x^n + \cdots + a_0 f(x)=anxn+⋯+a0 ,且插值点呈等差数列, f t = f ( x t ) = f ( x 0 + t h ) f_t = f(x_t) = f(x_0 + th) ft=f(xt)=f(x0+th) 。
考虑向后差分算子 ∇ f t = f t − f t − 1 \nabla f_t = f_t - f_{t-1} % \nabla^m f_t = \sum_{j=0}^{m} (-1)^{m-j} \tbinom{m}{j} f_{t - (m-j)} ∇ft=ft−ft−1 ,那么
f [ x t , ⋯ , x t − m ] = 1 m ! 1 h m ∇ m f t f[x_t,\cdots, x_{t-m}] = \frac{1}{m!} \frac{1}{h^m} \nabla^m f_t f[xt,⋯,xt−m]=m!1hm1∇mft
注意差商的定义
f [ x 0 , ⋯ , x m ] = f [ x 0 , ⋯ , x m − 1 ] − f [ x 1 , ⋯ , x m ] x 0 − x m = mean value theorem f ( m ) ( ξ ) m ! f[x_0, \cdots, x_m] = \frac{f[x_0, \cdots, x_{m-1}] - f[x_1, \cdots, x_m]}{x_0 - x_m} \stackrel{\text{mean value theorem}}{=} \frac{f^{(m)}(\xi)}{m!} f[x0,⋯,xm]=x0−xmf[x0,⋯,xm−1]−f[x1,⋯,xm]=mean value theoremm!f(m)(ξ)
因此
a n = f ( n ) ( ξ ) n ! = ∇ n f t h n n ! = f [ x 0 , ⋯ , x n ] a_n = \frac{f^{(n)}(\xi)}{n!} = \frac{\frac{\nabla^n f_t}{h^n}}{n!} = f[x_0,\cdots, x_{n}] an=n!f(n)(ξ)=n!hn∇nft=f[x0,⋯,xn]
理解3 基于差商的牛顿插值公式与泰勒展开形式相似
等间距牛顿插值公式 f ( x n + t h ) = f n + t ∇ f n + t ( t + 1 ) 2 ! ∇ 2 f n + ⋯ + t ( t + 1 ) ⋯ ( t + n − 1 ) n ! ∇ n f n f(x_n + th) = f_n + t \nabla f_n + \frac{t(t+1)}{2!} \nabla^2 f_n + \cdots + \frac{t(t+1) \cdots (t+n-1)}{n!} \nabla^n f_n f(xn+th)=fn+t∇fn+2!t(t+1)∇2fn+⋯+n!t(t+1)⋯(t+n−1)∇nfn
TODO 从另一个角度理解差商
f [ x 0 , ⋯ , x m ] = ∑ j = 0 m f ( x j ) ( x j − x 0 ) ⋯ ( x j − x j − 1 ) ( x j − x j + 1 ) ⋯ ( x j − x m ) f[x_0, \cdots, x_m] = \sum_{j=0}^m \frac{f(x_j)}{(x_j-x_0) \cdots (x_j-x_{j-1}) (x_j-x_{j+1}) \cdots (x_j-x_m)} f[x0,⋯,xm]=∑j=0m(xj−x0)⋯(xj−xj−1)(xj−xj+1)⋯(xj−xm)f(xj)