数学里也有差分?

· · 算法·理论

part 1 :一道填空题

同学们,咱们先来看这样一个填空题:

1,2,4,8,16,31,57,?,?

emm貌似看不出什么来,但可以发现第 2\sim 5 项每一项都是前一项的两倍。虽然这不太重要吧。

接下来把从第 2 项之后的所有项都减去前一项,并把差值写在两个数之间。

\begin{matrix} \quad 1\quad2\quad4\quad8\quad16\quad31\quad57\dots \\ 1\quad2\quad4\quad8\quad15\quad26\dots \end{matrix}

发现什么了吗,没有吧,没有就对了,还没完,我们再把新的数列从第 2 项之后的所有项都减去前一项,并把差值写在两个数之间。

\begin{matrix} \quad 1\quad2\quad4\quad8\quad16\quad31\quad57\dots \\ 1\quad2\quad4\quad8\quad15\quad26\dots\\ 1\quad2\quad4\quad7\quad11\dots\\ 1\quad2\quad3\quad4\dots\\ 1\quad1\quad1\dots\\ \end{matrix}

现在就好了,最后一行的所有数都是 1 ,这样我们就可以倒着推回去了。

\begin{matrix} \quad 1\quad2\quad4\quad8\quad16\quad31\quad57\quad{\color{Yellow} 99} \quad{\color{Yellow} 163} \dots \\ 1\quad2\quad4\quad8\quad15\quad26\quad{\color{Yellow} 42} \quad{\color{Yellow} 64} \dots\\ 1\quad2\quad4\quad7\quad11\quad{\color{Yellow} 16} \quad{\color{Yellow} 22} \dots\\ 1\quad2\quad3\quad4\quad{\color{Yellow} 5} \quad{\color{Yellow} 6} \dots\\ 1\quad1\quad1\quad{\color{Yellow} 1} \quad{\color{Yellow} 1} \dots\\ \end{matrix}

所以这道题的最终答案就是 99163 了。

part 2 :牛顿的差分

哎,这道题很神金没错,但 300 多年前的一个数学巨人牛顿也研究了这个问题。他发现整个数列从上到下实际上在求导数,而从下到上在求积分

先回顾一下初中就学了的函数的 3 种表示方法,分别为:

  1. 解析法;
  2. 图像法;
  3. 列表法。

比如对于一个函数:

  1. 解析法:f(x)=x+1(有时可写作 y=x+1)。
  2. 图像法:

  1. 列表法:
x -2 -1 0 1 2
f(x) -1 0 1 2 3

好,最开始的数列其实就是一个函数,只不过由于自变量 x 只能取正整数,所以只能称为一个离散函数。那我们就可以用列表法来表示这个函数:

x 1 2 3 4 5 6 7
f(x) 1 2 4 8 16 31 57

那么我们怎么求一个离散函数的导数呢,首先我们知道连续的函数的导数公式:

f'(x)=\lim_{\Delta x\to0}\frac{f(x+\Delta x)-f(x)}{\Delta x}

这个公式怎么来的不重要,你只需要知道 \Delta x 是一个非常非常小的值。

最精妙的一步来了,再这个离散函数中 \Delta x 的最小量就是 1 (因为并没有 f(1.1) 或其他小数函数值),所以我们直接带入 \Delta x=1

f'(x)=f(x+1)-f(x)

当然,为了和其他导数作区分,我们用 \Delta f(x) 代替 f'(x)

\Delta f(x)=f(x+1)-f(x)

这个东西我们就叫它差分,对,就是你想的那个差分。再细看一眼,记 a_i=f(i),d_i=\Delta f(i) 那么 d 数组就正是 a 的差分数组!

part 3 :牛顿对函数的整理

牛顿觉得这个函数还是太麻烦,于是将其整理成一个公式:

F_n=\begin{pmatrix}n\\0\end{pmatrix}\Delta^0F_0+ \begin{pmatrix}n\\1\end{pmatrix}\Delta^1F_0+ \begin{pmatrix}n\\2\end{pmatrix}\Delta^2F_0+\dots+ \begin{pmatrix}n\\m\end{pmatrix}\Delta^mF_0+\dots

这里的 \begin{pmatrix}n\\m\end{pmatrix} 是组合数,也可记作 C^m_n。计算公式为:

\begin{pmatrix}n\\m\end{pmatrix}=C^m_n=\frac{n(n-1)(n-2)\cdots (n-m+1)}{m!}

其中 \Delta^m 为原函数的 m 阶差分。即:

\Delta^m f(x)=\left\{\begin{matrix} \Delta({\Delta^{m-1}f(x)})&m\ge 1\\ f(x)&m=0 \end{matrix}\right.

而且这个公式的 F_n 的下标是从 0 开始记录的,即 F_n 代表原数列第 n+1 项的值。

part 4 :回到最开始的问题

咱们套入最开始的那个问题。

F_n=\begin{pmatrix}n\\0\end{pmatrix}{\color{Yellow} 1} + \begin{pmatrix}n\\1\end{pmatrix}{\color{Yellow} 1}+ \begin{pmatrix}n\\2\end{pmatrix}{\color{Yellow} 1}+ \begin{pmatrix}n\\3\end{pmatrix}{\color{Yellow} 1}+ \begin{pmatrix}n\\4\end{pmatrix}{\color{Yellow} 1}

带入组合数计算公式:

F_n=1+ n+ \frac{n(n-1)}{2!}+ \frac{n(n-1)(n-2)}{3!}+ \frac{n(n-1)(n-2)(n-3)}{4!}

拆括号:

f\left(x\right)=1+x+\frac{x^{2}-x}{2}+\frac{x^{3}-3x^{2}+2x}{6}+\frac{x^{4}-6x^{3}+11x^{2}-6x}{24}

化简:

f\left(x\right)=1+\frac{7}{12}x+\frac{11}{24}x^{2}-\frac{1}{12}x^{3}+\frac{1}{24}x^{4}

这样分别带入 x 的值就可求出原数列 x+1 项的值。

part 5 :其它关于差分

在数学中,差分函数(Difference) 是离散微积分中的核心概念,用于描述离散序列中相邻项的变化。它是连续函数导数的离散对应物,广泛应用于数值分析、组合数学、时间序列分析等领域。

差分的分类

对于给定的离散序列 \{x_n\} 或函数 f 在离散点上的取值 \{f(x_k)\} 其差分分为三种:

  1. 前向差分(Forward Difference)
\Delta f(k)=f(k+1)-f(k)
  1. 后向差分(Backward Difference)
\nabla f(k)=f(k)-f(k-1)
  1. 中心差分(Central Difference)
$\forall k\in \mathbb{N}^+ ,f(x)$与$f(k+h)$ 都有意义的最小值。 $$ \delta f(k)=f(k+\frac{h}{2})-f(k-\frac{h}{2}) $$ #### 差分的逆运算 离散差分的逆运算当然就是**离散积分**。 即为: $$ S_k=\int_{0}^{k} a_idi $$ 当步长 $h=1$ 时,离散积分退化为求和 $$ S_k=\sum_{i=0}^{k} a_i $$ ## part $6$: 最后的闲话 数学的差分和信息学的差分有关联但不多,这篇文章写来的目的是为了让同学们可以对差分有新的认识,也可以将各学科联合起来,这是信息学与数学的联合。 本文鸣谢对象: 1. 画图软件desmos; 2. 此 [b站视频](https://www.bilibili.com/video/BV1GvoaYbExs/?spm_id_from=333.1387.collection.video_card.click&vd_source=b8b78e1425050eafec6959e4b471ed9b) 给了我灵感。