- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 mpmath.polyroots
求具有整数系数 x*(x-4)**3
的简单多项式的根,展开后其系数向量为 [1, -12, 48, 64, 0]
。以下代码失败:
import mpmath
p = [ 1, -12, 48, -64, 0]
print mpmath.polyroots(p,maxsteps=2000)
错误:
Traceback (most recent call last):
File "poly.py", line 3, in <module>
print mpmath.polyroots(p,maxsteps=2000)
File "/usr/local/lib/python2.7/dist-packages/mpmath/calculus/polynomials.py", line 188, in polyroots
% maxsteps)
mpmath.libmp.libhyper.NoConvergence: Didn't converge in maxsteps=2000 steps.
增加步数也无济于事。预期的答案显然是 [0,4,4,4]
。
如果多项式存在某些重数,mpmath 是否无法找到多项式的根?我该如何解决这个问题?
最佳答案
文档提到增加 extraprec
可能是实现收敛所必需的。由于根的多重性,您的示例就是这种情况。
>>> mpmath.polyroots(p, maxsteps=100, extraprec=110)
[mpf('0.0'), mpf('4.0'), mpf('4.0'), mpf('4.0')]
extraprec
参数表示在计算过程中要使用的额外位数,比较结果中需要的位数(默认为15,在中全局设置mpmath.mp.dps
).它的默认值为 10;将其增加到 110 可在 100 步内实现收敛。这实际上比在默认 extraprec
级别尝试(并且失败)使用 maxsteps=2000
查找根花费的时间更少。
关于python - 使用 mpmath 求简单多项式的根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31543071/
我安装了 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
我是一名优秀的程序员,十分优秀!