zoukankan      html  css  js  c++  java
  • 调和级数计算

    求H(n).如果精度要求很高..

    1. n<=1e8

    调和级数是能直接apply Binary Splitting method的,这样能计算出全精度的H(n)(分数形式).

    因为大家都知道好的Binary Splitting method是很快的(真的么..),用来计算Pi以复杂度的劣势能艹爆AGM..

    2. n很大(monstrously large)

    这个时候就需要Euler-Maclaurin展开..

    大家都知道的这个式子:

    H(n)=ln(n)+EulerGamma+1/(12n)-sum(i>=1,B_2i/(2i n^(2i)))

    (我曾经以为这东西是发散的..事实上它就是发散的..不过似乎没什么毛关系)

    现在考虑分别计算这些东西..

    ln(n)计算肯定是不能直接Taylor一发的..会boom..

    可以考虑先reduce到1+p,然后再对exp进行牛迭..

    如果p特别小可以考虑taylor一下..不过要换个series..

    EulerGamma没有直接好用的series,不过还是可以很快速的计算(quasi-linear!)的..比较崎岖..(还要吐槽一下它那个崎岖的做法里使用了调和级数..不过收敛得很快)

    后面那个东西因为是Bernoulli不方便变成HGS Sum..不过n以下的Bernoulli数是可以计算的,选O(n)个>=n+3的小素数求出bernoulli mod p(这个可以转化为卷!积!mod p),然后CRT一下.Bernoulli它有个好的性质就是它的分母超级他妈好算..num(B2k)=prod(p-1|2k & prime(p),p)..

    到wiki上翻一下bernoulli的asymptotic behavior..发现它B2n~4sqrt(pi n)(n/(pi e))^(2n)..那么它的位数大概是2.8n..

    然后我们来看看那个Euler-Maclaurin Formula的渐进behavior..估计一下余项大概是B_(2n+2)/((2n+4) x^(2n+4))~4 sqrt(pi n)/(2n+4)*((x)/(n pi e))^(2n+4) 毛咕咕是2n位十进制精度..

    好全篇民科hhh...

  • 相关阅读:
    MathType输入框怎么调整
    几何画板中去除画出的线段的教程
    MathType怎么编辑半开半闭区间
    几何画板给月牙图形填充颜色的技巧
    MathType调整矩阵分隔线粗细的方法
    帮你深入理解OAuth2.0协议
    phalapi
    Spring松耦合实例
    让前端工程师糟心的正则表达式到底是什么?
    composer安装
  • 原文地址:https://www.cnblogs.com/tmzbot/p/7078459.html
Copyright © 2011-2022 走看看