问题标签 [mpmath]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
trigonometry - mpmath 等任意精度库如何评估简单的三角函数?
我要求简要解释,指出所涉及的各种加速方法。这只是出于好奇。
例如,mpmath 网站告诉我们指数函数公式用于复平面中的运算,但现在我想将其保留为在普通实数上使用的运算。
或者,最好有一个指向在 mpmath 中执行实际计算的源代码部分的链接,我没有运气搜索可下载的源。
python - arcsin 函数对小的任意浮点值的最快可能方法
我需要计算 mpmath 的“mpf”浮点 bignums 形式的小值的反正弦函数。
我所说的“小”值是例如 e/4/(10**7) = 0.000000067957045711476130884...
这是在我的机器上使用 mpmath 的内置 asin 函数进行测试的结果:
这是一个特殊情况:我使用的数字有点小,所以我问自己是否有一种方法可以在 python 中计算它,在这种特殊情况下实际上优于 mpmath(= 用于小值)。
泰勒级数在这里实际上是一个不错的选择,因为它们对于小参数收敛得非常快。但我仍然需要以某种方式进一步加速计算。
实际上存在一些问题:
1)二进制拆分在这里无效,因为只有当您可以将参数写成小分数时它才会发光。这里给出了一个全精度浮点数。
2) arcsin 是一个非交替序列,因此 Van Wijngaarden 或 sumalt 变换也无效(除非我不知道有一种方法可以将它们推广到非交替序列)。
https://en.wikipedia.org/wiki/Van_Wijngaarden_transformation
我能想到的唯一加速度是切比雪夫多项式。切比雪夫多项式可以应用于 arcsin 函数吗?如何?
python - 使用户可扩展功能的正确方法
在 Python 中,允许用户在不更改函数原始代码的情况下扩展函数可以操作的类型的正确方法是什么?
假设我有一个模块,它的my_module.foo()
函数最初是为处理float
类型而编写的。现在,我希望相同的函数也能够与mpmath
任意精度浮点数一起工作 - 但不改变原始模块中的代码。
在 C++ 中,我会添加一个额外的重载(或者,更有可能是一些带有辅助结构的模板专业化技巧)。我应该如何构造原始my_module.foo()
代码,以便用户可以在其中添加自己的自定义挂钩?
我可以想出一些方法来实现这一点,但作为一个新手 Python 程序员,我相信他们中的大多数都会很可怕:)
编辑:感谢到目前为止的所有答案,非常感谢。
我可能应该澄清一个关键要求是能够处理我自己没有定义的类型。例如,如果我试图cos
在我的模块中编写一个通用函数,我想调用math.cos
内置类型、mpmath.cos
类型mpf
、sympy.cos
sympy 符号类型等。当然我希望调度逻辑不在我的模块的cos
实现中。
python - 将图例添加到使用 mpmath 制作的复杂绘图中
我一直在使用 mpmath 库中的cplot命令来绘制一个复杂的函数。它很容易工作,我所要做的就是编写cplot(G_fit, [0.001, v_max], [-v_max, v_max], points = 100000)
,然后我得到一个相当平滑的G_fit
函数0.001 < Re(z) < v_max
图-v_max < Im(y) < v_max
。不过有两个问题:
如何添加图例?它在文档中说函数的大小由亮度表示,相位角是色调。这很好,但幅度和色调是多少?我要做的就是在图表旁边添加一个从黑色到白色的条形图,并给出这些亮度下幅度的数值。
有什么方法可以仅绘制幅度(即仅亮度?)
谢谢,如果这是微不足道的,很抱歉,但我在文档中找不到任何关于此的内容。
python - python对数错误地计算出非常小的复数
我需要使用python来计算形式对象的对数
其中 n0 和 n1 是非常小的数字~ 1.0e-27 和 1j 是虚数。
使用 cmath.log 给出了错误的答案
使用 mpmath 我可以获得正确的结果,但前提是我正确地表达了论点
给
(这是正确答案)而
给
这里发生了什么?我可以仅使用 cmath.log() 得到正确答案吗?
python - 精度损失 numpy - mpmath
我在我的 Python 程序中使用 numpy 和 mpmath。我使用 numpy,因为它可以轻松访问许多线性代数运算。但是因为 numpy 的线性方程求解器不是那么精确,所以我使用 mpmath 进行更精确的运算。在我计算出一个系统的解决方案之后:
我想要解决方案作为一个数组。所以我用
然后循环设置值:
或者
但通过这两种方式,我再次得到数值不稳定性,例如:
有没有办法避免这些错误?
list - 速度问题,python 没有响应:求解 ODE
为了快速了解背景,我正在尝试进行引力/轨道模拟。我创建了两个列表listx
,listy
然后将它们放入 matplot 并绘制结果(希望出现椭圆)。
问题是求解这个方程 500 次需要相当长的时间,而且它没有给我足够数量的绘图点。因此,如果我将其提高到 1000,则需要的时间太长,并且在某些情况下,由于 python 没有响应,我不得不杀死它。
我只是想知道是否有更有效的方法(我确定有)来填充这些列表。
python - Python 中 Numpy 和 MpMath 之间的互操作性
我有一个带有 mpf 元素的 numpy 数组 A,其十进制精度为 100。如果我决定将 A 的 numpy 点积与它本身一起使用,这个精度是否会被抛弃?
如果是这种情况,有没有办法将 numpy 数组转换为 mpmath 矩阵,这样我就可以保持精度?
python - 使用多处理时出现 Sympy/mpmath/gmpy 错误
编辑:这是一个同情错误。我已将讨论移至https://github.com/sympy/sympy/issues/7457
我有一个 Python 程序,用于sympy
执行一些核心功能,这些功能涉及将线和形状相交。此操作需要执行数千次,并且在使用默认的sympy
纯 Python 模块时非常慢。
我试图通过安装来加快速度gmpy 2.0.3
(我也尝试过gmpy 1.5
)。这确实会导致代码在一定程度上加速,但是当使用multiprocessing
它来获得进一步的加速时,程序会以TypeError
.
该程序在使用单个进程gmpy
运行和不gmpy
使用运行时运行良好multiprocessing.Pool
。
有没有人遇到过这种问题?下面的程序重现了这个问题:
python - python / mpmath - 如何获得复杂矩阵的真实值?
我正在尝试获取复值矩阵的实际值。
我都试过了:
但两者都不起作用。
我也试过在这里寻找信息,但没有找到任何东西 http://docs.sympy.org/0.6.7/modules/mpmath/basics.html
第一个给出错误消息:cannot create mpf from matrix ...
第二个给出:insufficient indices for matrix
任何帮助表示赞赏