差分与有限微积分

阅读这篇文章需要微积分基础。
从《具体数学》上看来的,感觉十分有用。
为了思维的连贯性,省略了大量细节。这些细节将在最后补充。

59eb6654682d2.png (230×230)

差分算子

首先,有一个关于“算子”的定义:
如果一个运算作用在函数上,则我们称这个运算为“算子”。
显然,多项式的卷积、狄利克雷卷积等都是算子。
在迈入高等数学的大门时,我们遇到过一个强劲的算子:微分算子
微分算子D是这样定义的:Df(x)=limh0f(x+h)f(x)h.它的几何意义是,对于某个x,以 (x加上无穷小) 处的函数值减去x的函数值。
因此,Df(x)就是f(x)的导函数。
由于微分算子使用了无穷小,所以微分算子用于连续数学。但是对于别的函数——它们只能在整数范围内取值,微分算子就无法通用。
面对离散数学,定义差分算子ΔΔf(x)=f(x+1)f(x).
它的几何意义如图:
59eb6654682d2.png (230×230)
容易看出,差分算子给出相邻的整数之间函数值的差。

有限微积分

众所周知,微分里有一个很妙的公式:D(xm)=mxm1.
差分有没有类似的公式呢?
来考虑下降阶乘幂:xm_=x(x1)(x2)(xm+1).
手推一番,我们发现Δ(xm_)=mxm1_.
惊喜的是,差分的运算法则和微分的运算法则如出一辙。例如Df(x)+Dg(x)=D(f(x)+g(x))之类的导数运算,都可以直接套在差分上
有什么用?
牛顿-莱布尼茨公式:若g(x)=Df(x),则有abg(x)=f(b)f(a). 类似积分,可以构造出和式:
首先,我们令abf(x)=i=ab1f(x).注意两个Σ之间的区别。
那么有基本定理:
如果g(x)=Δf(x),则有abg(x)=f(b)f(a).
如何理解这个公式?举个例子。假设我们找到了g(x)=Δf(x),那么我们可以快速求:
i=1ng(x)=1n+1g(x)=f(n+1)f(1).
回到之前讨论的下降阶乘幂。我们有Δ(xm_)=mxm1_.
所以实践中,可以直接用下降阶乘幂来解决问题。

例子

i=0100x2.
首先,我们把x2表示成下降阶乘幂的形式。稍加计算得到:g(x)=x2=x(x1)+x=x2_+x1_.
然后构造g(x)的原函数:f(x)=13x3_+12x2_=x(x1)(x2)3+x(x1)2.
于是有:i=0100x2=0101g(x)=f(101)f(0)=101100993+1011002=338350.
这就是有限微积分

一个例题

1k+2k+3k+nk.
n<1000,k<1000
暴力。
n<100000,k<1000000
快速幂。
n<108,k<10
先写个程序推出xk的下降阶乘幂形式,然后用有限微积分O(1)做。
n<108,k<1000
从有限微积分中可以知道,答案一定是一个k+1阶多项式。
故先O(nlogk)求出n=1,2,3k+1时的答案,然后O(k2)插值回多项式(拉格朗日插值法),然后O(k)计算答案(霍纳法则)。
总复杂度O(k2).
n<=108,k<105
orz Gromah.

几个细节

差分表
原函数f(x)差分函数Δf(x)
xm_mxm1_
2x2x
cx(c1)cx
差分运算法则
下面的向量代表函数。
原函数f(x)差分函数Δf(x)
cucΔu
u+vΔu+Δv
序列差分
考虑一个序列的差分: {a1,a2,a3}{a2a1,a3a2,}
记一阶差分的结果为b,对b再做一次差分,得到二阶差分:
{b2b1,b3b2,}
如果这个初始序列由f(1),f(2)给出,则有:
如果f(x)k次多项式,那么ak+1阶差分全部相等,k+2阶差分全为0.
例如:f(x)=x3
(0, 1, 8, 27, 64, 125)    ->
(1, 7, 19, 37, 61)        ->
(6, 12, 18, 24)           ->
(6, 6, 6)                 ->
(0, 0)
负指数下降幂
定义xm_,mZ+为:

评论

此博客中的热门博文

将博客部署到星际文件系统(IPFS)

高中地理必修一知识点总结

一场CF的台前幕后(下)