自学生时代以走来, 总是对公式有种迷信, 无数伟大人物, 将一生成就凝练为公式造福后人, 解题只需记住并活用公式即可.

久而久之, 就对一些老师没有讲过的东西怀有好奇, 比如素数有没有公式? 自然数倒数和有没有公式? 有没有万能的数列公式?

当然数学中抛开定义谈问题都是耍流氓, 函数你承不承认是公式? 那我随手画条线把所有的点连起来这叫图像函数吧, 这算不算公式?

所以数学上什么才叫公式呢?

初等函数

素数自然是有公式的, 有好几个, 一般长这样:

$$p_n=1+\sum_{m=1}^{2^n}\left\lfloor \sqrt[n]{\left\lfloor n\biggl/\sum_{k=1}^m {\left\lfloor \cos^{2} \lfloor \pi\dfrac{(k-1)!+1}{k} \rfloor \right\rfloor} \right\rfloor} \right\rfloor$$

自然数倒数和也是有公式的, $\sum_{n>1}=H_n$

当然你觉得这不叫公式也无所谓, 因为这的确不是一般意义上的公式.

所谓的公式能分为以下五个等级:

  1. 只用加减乘除的公式叫做 算数表达式(Arithmetic expressions).

  2. 加入幂, 开根之后叫做 代数表达式(Algebraic expressions).

  3. 允许使用初等函数的公式叫做 封闭形式(Closed-form expressions), 也可以叫初等表达式.

  4. 允许使用级数算符的公式叫 解析形式(Analytic expressions), 其中级数要求收敛, 不能是形式幂级数.

  5. 剩下的统称为数学定义式(Mathematical expressions), 允许使用包括极限、微分与积分算符在内的一切数学符号, 级数可以是单点收敛的形式幂级数, 甚至式子不必用等式定义, 直接说是某个方程的解.

平常所谓的公式一般是第三个等级, 允许使用一切初等函数. 当然没学过函数那就是第二级, 理工科大学生自行把公式的定义提到第四级, 我肯定已经到了第五级了喽,lol...

基本初等函数是由刘伟尔钦定的函数集合, 只有反对幂三指常六种, 在这之外的函数都被称为特殊函数, 没有高等函数这种东西的...

基本初等函数的复合叫做初等函数.

显然一般的分段函数, 取整函数这些都不是初等函数. 绝对值函数倒也是初等函数, 这是特殊的分段函数嘛...

分段函数

用分段函数我们有个无耻的办法给出万能公式, 大不了每个点上给的定义呗

什么, 你说太无耻了? 那好, 大不了两个点之间连起来啊,233...

不说笑了, 我们知道两点确定一条直线, 或者可以等价的说成两个点确定一条一次函数曲线.

那我们固定两端的点, 然后把曲线扭动变成二次函数, 让它贴合第三个点, 可以吗?

这叫样条插值, 用三次曲线就叫三次曲线样条插值, 也可与不用多项式, 用别的, 比如B样条插值就是用贝塞尔曲线(BezierCurve).

![](https://i.loli.net/2018/03/24/5ab63a46384a5.gif)

那不断提升次数会怎么样呢?

插值函数

$n$ 个点最多能确定了一个 $n-1$ 次的多项式.

那么用待定系数法, 解一个 $n-1$ 元方程即可, 于是可以用矩阵求解.

$$\begin{cases} y_1 = a_0 + a_1x_1 + a_2x_1^2+\cdots+a_nx_1^n\\ y_2 = a_0 + a_1x_2 + a_2x_2^2+\cdots+a_nx_2^n\\ y_3 = a_0 + a_1x_3 + a_2x_3^2+\cdots+a_nx_3^n \\ \cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots \\ y_n = a_0 + a_1x_n + a_2x_n^2+\cdots+a_nx_n^n \end{cases}$$

$$ \begin{pmatrix} y_1 \\ y_2 \\ y_3 \\ \vdots\\y_n \end{pmatrix} = \begin{pmatrix} 1 & x_1 & x_1^2 &\cdots&x_1^n\\ 1 & x_2 & x_2^2 &\cdots&x_2^n\\ 1 & x_3 & x_3^2 &\cdots&x_3^n\\ \vdots&\vdots&\vdots&\ddots&\vdots&\\ 1 & x_n & x_n^2 &\cdots&x_n^n\\ \end{pmatrix} \begin{pmatrix} a_0 \\ a_1 \\ a_2 \\ \vdots\\a_n \end{pmatrix} $$

或者简写成:

$$\vec{y}=X\vec{a}$$

两边左乘逆矩阵 $X^{-1}$ 即可, 同时 $|X|\ne0$ , 说明方程只有唯一解. 也就是说这样的多项式是唯一的.

解出来后原来的式子可以重写为:

$$P(x):=\sum_{j=0}^{k}y_{j}\prod _{0\leq m\leq k}^{m\neq j}{\frac {x-x_{m}}{x_{j}-x_{m}}}$$

手解这个也太丧病了点, 编程大法好...

![](https://i.loli.net/2018/03/24/5ab63a461dd88.png)

生成函数

生成函数就是另一种概念上的东西了, 我们知道一个函数在原点的多项式级数展开被称为麦克劳林展开,且这样的展开是唯一的.

也就是说, 一个函数唯一确定了一个系数数列. 反过来, 一个数列也唯一确定了一个函数呀!

比如 $G(x)=e^x=\sum _{n=0}^{\infty }{\dfrac {x^{n}}{n!}}\quad \forall x\in\mathbb{R}$ .

那么可以记 $g_n=[z^n]G(x)=\dfrac{1}{n!}$ , 此时 $G(x)$ 就被称为 $g_n$ 的生成函数.

对一个有限的数列而言, 它的生成函数就是个 $n$ 次多项式.

生成函数并非数列换个写法这么简单, 一方面生成函数相当于定义了一种新的运算, 大大扩展了能表示的数列的种类.

比如高次求和中出现的伯努利数, 本身只有递推计算式, 没有初等表达式, 但它的生成函数是初等的.

$$\frac{B_n}{n!}=[z^n]\left(\frac{z}{e^z-1}\right)$$

更重要的是, 生成函数事实上蕴含了数列本身的一切信息.

比如数列和就是 $G(1)$ , 其他什么数列极限数列的渐进性质都在里面了, 数列通项什么的已经无所谓了.

可以想象, 即便如此, 还是会有很多的式子无能为力, 生成函数的另一个强大的地方就是化离散为连续, 使用微积分, 复分析乃至更强大的方法来研究.

后记

初学者总是觉得通项公式是万能的东西, 有了这个一切都能迎刃而解.

不过你看素数有公式吧, 各种有关素数的猜想都没秒杀了吗?

就算是高考题中, 不用解出通项也能搞定的题多了去了, 有的出题老师压根就没准备让你解出通项...

经典的比如 $a_1=1;a_{n+1}=\dfrac{1}{a_n}+a_n$ , 这么多年了, 总是能隔三差五看到有人试图求其通项.可原题明明要你证不等式啊!

就算是从业者中竟然也有人对 N-S 方程暂没有解析解感到恐惧, 迷信公式看轻数值, 搞得好像有了解析解就不用显卡算了一样, 人类能直接殖民月球了.

也许是因为公式是一种物理实在吧, 能给人以安全感.

数学到了一定层次, 都是在与抽象的不可名状物战斗了. 你是航天员, 要探索人类的未知领域, 在太空还能用地面那一套吗?

万能公式存在也不存在, 一切所谓的公式不过是概念的封装. 人最重要的是人的品格而非名字, 函数也是如此, 叫什么重要吗? 有没有公式重要吗?

data=BlockRandom[SeedRandom[42];Table[Exp[-3 x/(2+ x+x^2)]+RandomReal[{-.5,.5}],
  {x,-10,10}]
];
p[i_]:=ListLinePlot[Labeled[data,Text@Style[ToString@i<>"次插值",15],{Scaled[0.35],Above}],AspectRatio->1/3,
  InterpolationOrder->i,PlotRange->{0,6},
  PlotStyle->Directive[Orange, Dashed],PlotTheme->"Business",
  Mesh->Full,MeshStyle->Blue,ImageSize->Large
];
Export["万能公式_1.gif",p/@Range[0,10],
  "AnimationRepetitions"->Infinity,
  "DisplayDurations"->1
]