数学搬运工


(如果看不到图片,可以右键图 在新标签中打开,再在新打开的标签中右键图 在新标签中打开,然后回来不停刷新博文页面)

导数的运算

 

y=f(x)的反函数是x=g(y), 则有y'=1/x'.

若h(x)=f(g(x)),  则h‘(x)=f’(g(x))g’(x).
 
 
C为常数)
 
 
 

 

 

 

 

 

积分

∫,积分是微分的逆运算(拉丁文summa首字母的拉长,读作:“sum”),即知道了函数的导函数,反求原函数。
 
 
 
 

泰勒中值定理

泰勒公式是将一个在x=x0处具有n阶导数的函数f(x)利用关于(x-x0)的n次多项式来逼近函数的方法。
若函数f(x)在包含x0的某个闭区间[a,b]上具有n阶导数,且在开区间(a,b)上具有(n+1)阶导数,则对闭区间[a,b]上任意一点x,成立下式:
 
 
其中,  表示f(x)的n阶导数,等号后的多项式称为函数f(x)在x0处的泰勒展开式,剩余的Rn(x)是泰勒公式的余项,是(x-x0)n的高阶无穷小(不是很懂。。我基本都把它当成0)。
 
 

泰勒公式转换

若用x0=0,则该式又叫麦克劳林级数。即  f(x)=
 
 
可以依次定义多项式A(x)的指数运算和对数运算
  指数:
      f(x)=e^x.
      f(A(x))=∑Ai(x)/i!      (i>=0)
  注:【未经测试】臆想得出,当求得多项式的系数在%意义下时, A(x)强制要求常数项为0,不然在牛跌到最底层时,exp(一个非零数)或ln(一个非1数) 无法在%意义下表示(至少我不会。。)
    所以如果是ntt的题,常数项要求为0,如果遇到此类问题,,糊一个办法:在求exp或ln之前先*x,求完以后再处理回来,也许可行。。      或者用fft。。
 
  对数:
      f(x)=ln(1-x).
      f(A(x))=∑Ai(x)/i    (i>=1)    同上原因,A(x)常数项必须为0
      知道了如何求ln(1-A(x)), 那么求ln(B(x)) 套一下就行。
      一样的 强制要求B(x)常数项为1
 
 

泰勒公式应用

已经知道了一个函数 G(z),求一个多项式 F(z) (%z^n下),满足方程

现在假设已经求出了

则可用牛顿迭代法推出

再把这个应用到别的多项式问题,用途就很广了。

以下举例 , 可以用这个通式推得的 " 求exp[A(x)]" :

  定义:A,B,G为模x^n意义下的多项式,

  已知A, 且已用牛顿迭代法在前一层中求出了G(% x^(n/2)下),求B

 

   exp[A(x)]    复杂度O(n·log(n))

    求B=e^A (%x^n)

    设f(x)=ln(x)-A   , 则f(B)=ln(B)-A=0,
    代入通式可得B=(1+A-ln(G))*G
  ln(G)怎么求呢?:
  ln[A(x)]    复杂度O(n·log(n))

    ln(A)=∫(ln(A))'=∫(A'/A).  (%x^n)

 那么A^k  (k为有理数) 也可以求了, A^k=eln(A)
 
 

组合数有用的公式:

 

上面那个 是 下标从1开始的卡特兰数,

另一个从0开始的也是一样的,

就是 fn=f0*fn-1+f1*fn-2+……+fn-1*f0

这样的fn实际上就是原来的hn+1

对应的问题  比如说 1~n依次入栈,问出栈顺序有几种。即fn

 

(每次把一个元素自成一个轮换,或放在之前的任何一个元素右边) 

 另一种O(m)计算方法: (考虑容斥)

  

 

 

两种斯特林数相关的公式:

第一类斯特林数: 

第二类斯特林数:对应贝尔数

 

x种颜色为n个点染色,方案数显然是x^n;但是我们也可以用另外一个方法表示,那就是枚举同种颜色的集合是什么(斯特林子集数),然后从x个颜色里选出不同的颜色赋给这些集合(下降幂)。

 

 

 用n颗珠子串成若干串项链,其中每串项链上珠子的颜色必须相同,那么我们就可以枚举项链的组成(第一类斯特林数),然后统一给每串项链分配颜色(x^k);如果用另外一种方法表示的话,我们考虑按照编号从小到大加入每个珠子,每个珠子可以选择在x种颜色里面选一种并且自己成为一串新的项链,也可以选择接在之前某个珠子后面并继承一样的颜色,那么我们的操作方案数是 x的n次上升幂

 

 

下降幂:  a^b = a*(a-1)*(a-2)*...*(a-b+1)

a^b = a! / (a-b)! = C(a,b) * b!

 

已经有 a^k = ∑x=0~kS(k,x)*a^x

得出  ∑i=0~n i^k = ∑i=0~n x=0~k S(k,x)*i^x

又有 ∑i=0~ni^k = k! * ∑i=0~n C(i,k) = k! * C(n+1,k+1) = (n+1)^(k+1) /(k+1)

 

 

伯努利数

伯努利数满足条件,且有

 

     

这是伯努利数的O(n^2)递推。另外 ,伯努利数的 生成函数是 x/(e^x-1)。所以也有nlog(n)的多项式求逆 递推。

 

利用伯努利数可以求自然数幂和

k不为0时:

 

预处理完伯努利数后,单次询问是O(k)的。

证明可以看康复计划,找到的唯一简洁易懂的博客啊。

 

posted @ 2017-06-04 15:40  cyz666  阅读(352)  评论(0编辑  收藏  举报