哪种编程语言或库能够处理无限级数(例如几何级数或调和级数)?它可能必须有一些众所周知的系列的数据库,并在收敛的情况下自动给出适当的值,并且可能在发散的情况下生成异常。

例如,在 Python 中,它可能如下所示:

sum  = 0
sign = -1.0
for i in range(1,Infinity,2):
     sign = -sign
     sum += sign / i

那么,sum 必须是 math.pi/4,而不在循环中进行任何计算(因为它是众所周知的和)。

有帮助吗?

解决方案

您需要的东西,可以做一个符号计算如数学。 你也可以考虑quering的 wolframaplha:SUM(( - 1)^ I * 1 / I,I,1,INF)

其他提示

其中懒惰地评估大多数功能的语言可以模拟的无穷级数的处理。当然,有限的计算机上无法处理无穷级数,因为我相信大家都知道。关闭我的头顶,我猜的数学的可以做你最可能想要的东西,我怀疑的的也可以,也许的贤者的和其他计算机代数系统,如果你不能找到一个Haskell实现,西装我会惊讶你。

EDIT澄清OP:我不打算产生无限循环。懒惰的评价让你写的程序(或功能),它模拟无穷级数,程序,它本身在有限的时间和空间。有了这样的语言,你可以决定许多特性,如收敛具有相当的准确性和一定程度的确定性模拟的无穷级数的。尝试的数学的,或者,如果你没有访问它,尝试 Wolfram Alpha的看什么一个系统能为你做什么。

在同一个地方看可能是计算机代数系统

有两种可用的工具在Haskell这个超越了简单的支持无限列表。

首先出现的是一个模块,它支持查找在OEIS序列。这可以应用到你的系列的第一几个术语,可以帮助你找出了一系列你不知道的封闭形式,等等。另一种是可计算实数的“CReal”库。如果你有产生对你的价值不断提高的约束的能力(即通过求和前缀,你可以声明作为录取偏序等。在许多方面是一个可计算的实数,这给你一个值,你可以使用像上述的总和。

然而,在通用计算两个数据流的平等需要停机问题的神谕,所以没有语言会做你想做的事,完全的通用性,虽然喜欢数学的一些计算机代数系统可以试试。

千里马可以计算出无穷的一些资金,但在这种特定情况下它似乎并没有找到答案:-S

(%i1) sum((-1)^k/(2*k), k, 1, inf), simpsum;
                                 inf
                                 ====       k
                                 \     (- 1)
                                  >    ------
                                 /       k
                                 ====
                                 k = 1
(%o1)                            ------------
                                      2

但是,例如,那些工作:

(%i2) sum(1/(k^2), k, 1, inf), simpsum;
                                        2
                                     %pi
(%o2)                                ----
                                      6

(%i3) sum((1/2^k), k, 1, inf), simpsum;
(%o3)                                  1

您可以解决贤者系列问题(一个免费的基于Python的数学软件系统)正好如下:

sage: k = var('k'); sum((-1)^k/(2*k+1), k, 1, infinity)
1/4*pi - 1

在幕后,这是真的使用最大值(SAGE的组件)。

有关的Python检查出 SymPy - 数学和Matlab的克隆

有也被称为重基于Python的数学处理工具鼠尾草

有一个图书馆称为mpmath(蟒),sympy的模块,它提供了sympy系列载体(我相信它也备份鼠尾草)。 点击 更具体地讲,所有的东西系列可以在这里找到:系列文档

克洛尤尔哈斯克尔 从我的头顶上掉下来。

抱歉,我找不到更好的 Haskell 序列链接,如果其他人有,请告诉我,我会更新。

我在几个巨大的数据系列的工作了研究的目的。 我用的 Matlab的 作为这一点。我不知道它可以/不可以处理无限系列。

但我认为有可能。 U可以尝试:)

这可以在例如sympy和鼠尾草完成(开源替代中)在下文中,使用sympy几个例子:

在[10]:求和(1 / K ** 2,(K,1,∞)) 出[10]:  2 π ── 6

在[11]:求和(1 / K ** 4,(K,1,∞)) 出[11]:  4 π ── 90

在[12]:求和((-1)** K / K,(K,1,∞)) 出[12]:-log(2)

在[13]:求和((-1)**(K + 1)/ K,(K,1,∞)) 出[13]:日志(2)

在幕后,这是利用理论超几何级数,一个很好的介绍被书“A = B”由马尔科Petkoveks,赫伯特S.维尔夫   和多龙·泽尔贝格您可以通过google搜索找到。 ¿什么是超几何级数?

大家都知道的几何级数是什么:$ X_1,X_2,X_3,\点,X_K,\点$是几何如果contecutive术语比$ X_ {K + 1} / X_K $是恒定的。它是超几何,如果连任比在$ķ$理性的功能! sympy可以处理基本上都是无限的资金,其中最后这个条件被满足,但其他人只是极少数。

把你的电脑上安装sympy。然后执行以下操作的代码:

from sympy.abc import i, k, m, n, x
from sympy import Sum, factorial, oo, IndexedBase, Function
Sum((-1)**k/(2*k+1), (k, 0, oo)).doit()

结果将是:π/ 4

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top