猿问

SymPy 的“扩展”功能的精度是多少?

我正在尝试扩展(X + Y + Z) ^ NN 足够大的形式的函数,以便扩展的产品将包含系数远大于 2 ^ 64 的项;为了便于讨论,我们只说 N 大于 200。这是一个问题,因为我希望对该函数的扩展形式进行分析,并且该分析需要所有项及其系数的精确精度.

为了扩展功能,我正在使用 Python 模块SymPy,到目前为止,它看起来非常有前途,并且能够在相对较短的时间内扩展 N > 150 的功能。不过,我担心的是,在查看了一些扩展函数后,我发现系数的尾随零比我预期的要多。我知道我可以在函数扩展后通过mpmath运行所有内容以进行分析,但截至目前,我不确定一些较大的系数是否一开始就完全正确。

在SymPy函数的文档expand中,没有说明在处理非常大的数字时展开系数的精确度。我知道SymPy使用该mpmath模块实现其某些功能的事实,所以我知道它具有任意精度,我只是不知道任意精度是否明确适用于这种情况。

我知道我还可以expand通过对给定函数的所有系数求和并检查该总和是否等于 N 来确认该函数是否任意精确,但我宁愿不花几个小时来编码所有必要的部分来进行评估,只是发现它expand是不精确的。

如果有人对更简单的方法来确认 的精度有任何建议expand,那么如果不能直接确认其精度,我将不胜感激。


慕斯709654
浏览 135回答 1
1回答

白猪掌柜的

虽然PR 18960尚未合并,但您可以确认其中的系数是正确的:>>> multinomial(15,16,14)50151543548788717200>>> ((x+y+z)**(15+16+14)).expand().coeff(x**15*y**16*z**14)50151543548788717200>>> _ > 2**64True由于 Python 支持无限整数并且系数是整数,我不知道它们不准确的任何原因。
随时随地看视频慕课网APP

相关分类

Python
我要回答