搜索

首页  >  问答  >  正文

c++ - 超大数的运算问题

在一个问题中遇到的需要求这样的一个表达式:

应该如何计算可以得到结果?如果用龙贝格积分计算是算不出来的,伽马函数用定义算也求不出来。请问应该使用什么算法?

大家讲道理大家讲道理2803 天前526

全部回复(2)我来回复

  • 阿神

    阿神2017-04-17 15:29:58

    前面倒是好说,后面的积分不太好算呀

    回复
    0
  • 迷茫

    迷茫2017-04-17 15:29:58

    怀疑题目有笔误。左下角数字应该是251528。这样分式部分就正好是Beta函数的定义:

    $$frac{Gamma(m+n)}{Gamma(m) Gamma(n)}=frac{1}{B(n,m)}$$

    积分部分,是不完全Beta函数的定义:

    $$int_0^{frac{1}{2}} theta ^{n-1} (1-theta )^{m-1} , dtheta=B_{frac{1}{2}}(n,m)$$

    两者乘积叫做正则化不完全Beta函数(Regularized Beta Function)。

    $$frac{B_{frac{1}{2}}(n,m)}{B(n,m)}=I_{frac{1}{2}}(n,m)$$

    这个函数正好是Beta分布的累积分布函数(CDF),所以许多软件包都能计算。比如Excel:

    结果并没有超出计算机浮点数的表示范围。

    回复
    0
  • 取消回复