多项式学习笔记

 拉格朗日插值

构造原理:当x=xk时A(xk)=yk;

快速傅里叶变换 

复数与复平面

为了将数域扩大,引入虚数,详情请见数学选修2-2。

欧拉公式

这个公式在FFT中会用到。

多项式:n次多项式,->最高次为n-1,n个点可以确定唯一的n次多项式。

多项式求值:秦九韶算法,O(n)的时间求出多项式的一个点值表达。

多项式乘法:可以在n^2的时间内计算,这个比较简单,两个n次多项式可以乘出2n-1次多项式。

多项式加法:(x1,y1)(x1,y2)-> (x1,y1+y2)这个可以O(n)算。

如果我们已经知道了A和B的点值表达,我们可以在O(n)的时间算出C的点值表达。

圆周卷积:不会,留坑代填。

卷积定理:我们做两个多项式的卷积(乘法)复杂度是n^2,如果我们把多项式转成点值表达,再把点值表达加起来,在把点值表达用插值法转成多项式,如果这三个步骤的复杂度都没有超过n^2,那么我们可以算是优化成功了。

在一个xi上做点值运算的算法叫DFT(离散傅里叶变换)。

如果我们快速的完成所有xi的点值表达运算,时间复杂度为nlogn,这就是FFT(快速傅里叶变换)。

离散傅里叶变换

n次单位根:满足x^n=1的复数。

n次单位根恰好有n个,对于它们分别是e^2πki/n,k[0-n-1]。

理解一下就是把k个圆n等分。

k=1时的单位根为主n次单位根,记做wn,其他单位根可以看做wn的幂。

DFT的特殊点指的就是n次单位根。

一遍DFT可以求出A(wn0),A(wn1).....A(wnn-1)

设结果为F。

那么

我们最终还是需要知道系数表达,所以还需要插值运算。

可以用矩阵去验证。

单位根的性质

第一条和第二条是最基本的,第三条就是根据欧拉公式(可以脑补复平面),第四条和第五条是折半引理。

这两条是消去引理。

现在我们有了一个长度为2的整数次幂的多项式。

然后我们可以把x的下标按照奇偶分组。

然后再按照上面的性质瞎搞一下。

我们成功的把问题的规模减小了一半。

然后我们就可以按照上面的方法一直分治下去。

注意我们是吧长度为l的区间分成两半,一半为wk,一半为wk+2/n=-wk,所以算的时候加减注意一下。

蝴蝶操作

我们发现最后找出来的序列的下标和原来下标有一些神奇的联系。

于是我们可以O(n)算每个数的二进制翻转,然后可以迭代做了。

快速数论变换(NTT)

复数运算常数太大,如果我们找到一个数论上的东西来代替wn,那么我们可以完成在模意义下的FFT了。

阶与原根

x的阶x^k=1(%p)。

p的原根:满足x的阶=p-1的最小的x,即为g。

g^(p-1)/n可以代替wn。

多项式全家桶

多项式求逆

利用倍增搞。

首先这个科技只能用于模意义下的,没有模的是一个无解的问题。

然后我们令B为在模2^(n-1)下的逆,B‘为模2^n下的逆。

(B-B')=0(%2^(n-1))

(B-B')^2=0(%2^n)

B^2-2*B*B'+B'^2=0(%2^n)
AB^2-2*B+B'=0(%2^n)

B'=2*B-2*A*B^2(%2^n)

然后就倍增做

多项式ln

也就是我们要求一个G函数

对两边求导,根据复合函数的求导方法,还有ln的导为1/x。

然后就求个导求个逆就可以算出G‘

然后再用求导的逆过程给它还原回去,好像叫什么不定积分。

多项式exp 

这个东西还得用到什么牛顿迭代之类的高端玩意,直接放个结论吧。

多项式开根

多项式除法 咕咕咕

多项式多点求值 咕咕咕

 多项式快速插值 咕咕咕

posted @ 2018-12-14 22:44  comld  阅读(376)  评论(0编辑  收藏  举报