当前位置: 首页 > 知识库问答 >
问题:

任意精度伽马函数

华景同
2023-03-14

我正在用C实现一个任意精度的算术库,在实现gamma函数的时候我陷入了困境。

通过分别使用等价 gamma(n) = gamma(n - 1) * ngamma(n) = gamma(n 1) / n,我可以得到所有实数值 x 的范围内 (1; 2) 的有理数 r

但是,我不知道如何计算gamma(r)。对于Lanczos近似(https://en.wikipedia.org/wiki/Lanczos_approximation),我需要预先计算的值p,这些值恰好计算非整数值的阶乘(?!),并且以我目前的知识无法动态计算……在实现任意精度库时,预先计算p的值没有多大意义。

是否有任何算法可以在合理的时间内以任意精度计算gamma(r)?谢谢你的帮助。

共有2个答案

司空繁
2023-03-14

Lanczos近似看起来不算太差。你到底怀疑什么?

计算pC(Chebyshev多项式)和(a 1/2)!的代码部分可以实现为有状态对象,例如,您可以从p(i-1)和Chebyshev系数计算p(i)并计算一次,保持它们的矩阵。

宿嘉
2023-03-14

Spouge的近似类似于Lanczos的近似,但可能更容易用于任意精度,因为您可以设置所需的误差。

 类似资料:
  • 问题内容: 根据Python整数范围内的答案,Python)应该具有“任意精度整数” 。但是这个结果显然 不是 任意精度: 根据PEP 237 ,它是任意大的(不仅仅是C类型的大小)。和维基百科说,Python的是任意精度。 那么,为什么以上代码行的结果不正确? 问题答案: 实际上,在python3中,每当您对int进行除法运算时,都会得到float。有一个执行整数除法的运算符: 这确实给出了正确

  • 问题内容: 我有一个numpy的2d数组[中/大型- 例如500x500]。我想找到它的元素智能指数的特征值。问题在于某些值是非常负的(-800,-1000等),并且它们的指数下溢(意味着它们非常接近零,因此numpy将其视为零)。无论如何在numpy中使用任意精度? 我做梦的方式: 我已经搜索了gmpy和mpmath的解决方案,但无济于事。任何想法都将受到欢迎。 问题答案: SymPy可以计算任

  • 当 小数点后15位的数字被证明是错误的。(尽管很高兴给你的数字远远超过15位!) 在Python中,如何获得的十进制扩展中的第一个正确数字?

  • 问题内容: 我正在寻找一种以任意精度(例如点后50位数左右)计算平方根的方法。 在python中,可以使用Decimal轻松访问它: 看到强大的功能后,我浏览了文档,但没有发现任何类似的内容。 因此,我唯一的选择是编写某种数值计算方法,该方法将迭代地尝试计算答案吗? 问题答案: 这是我自己的平方根计算实现。在等待答案时,我决定尝试一下计算平方根的方法。它有很多方法,但最后我发现通过减法 pdf 链

  • 我试图用Python中的多项式根来近似Julia集合。特别是,我想找出多项式q(z)=z^2-0.5的第n次迭代的根。换句话说,我想找到n次组成的q(q(q))的根。为了得到许多采样点,我需要计算次多项式的根 我尝试过使用numpy的内置多项式类(它有一个根函数)和sympy的函数解算器来解决这个问题。在第一种情况下,当我选择大于100的度数时,精度会损失。复杂的计算需要很长时间。以下是我的代码:

  • 问题内容: 我正在使用通过远程MySQL数据库存储其数据的C ++应用程序。 功能之一是尽可能保持远程数据的最新状态。为此,我使用NOW()函数获取上次更新时间,并且在更新记录时,将last_changed字段设置为NOW()。 现在可以正常工作,但问题是它的最大精度可达一秒。导致数十个重复条目,这浪费带宽,并且必须手动删除它们。 为了限制大部分膨胀,我希望有一个大于此精度的精度,最好是一个微秒(