- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 python 库 mpmath,特别是评估不完整的 Gamma 函数。这是求根例程的一部分,但对于复值参数的某些组合,其计算速度极慢。
import mpmath as mp
from mpmath import gammainc
def Gamma(a,z0,z1):
return gammainc(a,a=z0,b=z1,regularized=False)
此处 mpmath.gammainc
函数的计算卡住了:
>> Gamma(mp.mpc(12.5+17.5j), mp.mpf(0.0), mp.mpf(-12.5))
另一方面,Mathematica 几乎立即返回结果:
In[1]:= Gamma[12.5 + 17.5 I, 0, -12.5]
Out[1]:= 2.38012*10^-7 + 5.54827*10^-7 I
在其他情况下,对于不同的参数,mpmath
和 Mathematica
返回相同的输出:
数学
In[2]: Gamma[3.5 I, 0, 10]
Out[2]:= 0.0054741 + 0.000409846 I
Python mpmath
>> Gamma(3.5j,0,10)
mpc(real='0.0054741038497352953', imag='0.00040984640431357779')
您知道这种行为的原因吗?这可以被认为是 mpmath
的问题还是求积的数学问题?不幸的是,scipy
没有为复杂的参数提供 gamma
函数的实现,所以它不是一个选项。
最佳答案
显然,在某些情况下,mpmath 中的错误导致它在评估 gammainc
时进入无限循环。值得举报mpmath tracker .但至少对于您提到的情况,解决方法是将三参数不完全 Gamma 函数编写为两个 upper 不完全 Gamma 函数 (reference) 的差值。上不完全 Gamma 函数是通过将 两个 参数传递给 gammainc
来计算的(即,z1
被隐式地视为正无穷大)。
def Gamma(a, z0, z1):
return gammainc(a, z0) - gammainc(a, z1)
print(Gamma(12.5+17.5j, 0.0, -12.5))
打印 (2.3801203496987e-7 + 5.54827238374855e-7j)
与 WolframAlpha 一致。
关于python - 评估 mpmath gammainc 函数的困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52006449/
我安装了 anaconda 和许多 python 库,在这些 mpmath 之间。当我尝试运行 powerlaw 包时,出现以下错误: -> 1466 from mpmath impo
我正在使用 mpmath python 库在某些计算期间获得精度,但我需要将结果转换为 numpy native 类型。 更准确地说,我需要在 numpy.ndarray(包含浮点类型)中转换一个 m
当在 python 和 mpmath 中时,一个人的代码以 from mpmath import mp mp.dps =200 我的问题是 - 取决于一个人的硬件 - 是否存在 mp.dps 的上限以
我正在用 python 编写一些代码,这些代码需要频繁反转大方矩阵(100-200 行/列)。 我正在达到机器精度的极限,所以我开始尝试使用 mpmath 进行任意精度矩阵求逆,但它非常慢,即使使用
我遇到了一种称为 Chudnovsky 算法 的 π 算法。 Wikipedia 上显示了 Python 实现它使用 Python 自带的 decimal 包。但是最近在测试Gauss Legendr
我希望按元素执行 mpmath对 Python 数组的操作。例如, import mpmath as mpm x = mpm.arange(0,4) y = mpm.sin(x) # e
我要求简要说明,指出所涉及的各种加速方法。这只是出于好奇。 例如 mpmath website告诉指数函数公式用于复平面中的运算,但现在我想将其保留为用于纯实数的运算。 或者,最好有一个指向在 mpm
我正在集成一些非常讨厌的函数,而 scipy.integrate.quad 不能很好地处理这种情况。我计划将 mpmath.quad 与 tanh-sinh 方法一起使用,但我需要将一些参数传递给正在
我在我的 Python 程序中使用 numpy 和 mpmath。我使用 numpy,因为它允许轻松访问许多线性代数运算。但是因为 numpy 的线性方程求解器不是那么精确,所以我使用 mpmath
我正在尝试使用 mpmath.polyroots求具有整数系数 x*(x-4)**3 的简单多项式的根,展开后其系数向量为 [1, -12, 48, 64, 0]。以下代码失败: import mpm
mpmath声称支持“任意精度浮点运算”。 然而。 。 . >>> import mpmath >>> 1 + mpmath.erf(-5.921) mpf('1.1102230246251565e-
我有一些涉及阶乘的计算,它们的爆炸速度非常快,因此我决定使用任意精度库 mpmath。 我的代码如下所示: import numpy as np import mpmath as mp import
我目前正在查看 Meijerg 的 mpmath 文档。它说 mpmath.meijerg(a_s, b_s, z, r=1, **kwargs) Evaluates the Meijer G-fun
我想从 C 代码访问 mpmath 的特殊函数。我知道如何通过中间 python 脚本来做到这一点。例如,为了计算超几何函数,C 程序: #include void main (int argc,
当使用两个 1F1 函数之和时,Tricomi 合流超几何函数的计算可能会出现病态,因为它们的大小可能几乎相等,但符号相反。 mpmath 函数“hyperu”在内部使用任意精度,并在默认模式下生成具
我正在使用 python 库 mpmath,特别是评估不完整的 Gamma 函数。这是求根例程的一部分,但对于复值参数的某些组合,其计算速度极慢。 import mpmath as mp from m
我想使用“DE HOOG”算法进行数值拉普拉斯逆变换。我想使用“mpmath”包,我从链接安装了它: https://github.com/klkuhlm/mpmath 假设我需要在 t=1 处找到以
当我尝试在 mpmath 函数中使用 numpy 数组时出现错误,此示例在到达该行时失败: C = (f*L/D) + 2*mp.log(P1/P2) 其中 P1 是一个数组。出现错误: cannot
我正在尝试使用 mpmath.findroot 的多维牛顿法以数值方式高精度求解方程组。这是一个示例系统: def f(x_0, x_1, x_2, x_3, x_4, x_5, y_0, y_1,
我想将 mpmath 函数转换为可以在 numpy 数组上运行的函数。假设我有以下示例 A=np.linspace(0,1,100) besseli_vec = numpy.frompyfunc(mp
我是一名优秀的程序员,十分优秀!