哪种编程语言或库可以处理无限系列?

psi*_*lia 26 python math programming-languages functional-programming series

哪种编程语言或库能够处理无限系列(如几何或谐波)?它可能必须有一些知名系列的数据库,并在收敛的情况下自动给出适当的值,并且可能在发散的情况下产生异常.

例如,在Python中它可能看起来像:

sum  = 0
sign = -1.0
for i in range(1,Infinity,2):
     sign = -sign
     sum += sign / i
Run Code Online (Sandbox Code Playgroud)

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

Hig*_*ark 18

大多数懒惰评估的函数语言都可以模拟无限级数的处理.当然,在有限的计算机上,不可能处理无限系列,因为我相信你知道.在我的脑海中,我猜Mathematica可以完成您可能想要的大部分工作,我怀疑Maple也可以,也许是Sage和其他计算机代数系统,如果你找不到Haskell实现,我会感到惊讶适合你.

编辑澄清OP:我不建议生成无限循环.延迟评估允许您编写模拟无限系列的程序(或函数),这些程序本身在时间和空间上是有限的.使用这些语言,您可以确定模拟无限级数的许多属性,例如收敛,具有相当高的准确性和一定程度的确定性.试试Mathematica,或者,如果您无法访问它,请尝试Wolfram Alpha查看一个系统可以为您做什么.

  • 那么你需要计算机代数系统,而不是编程语言. (20认同)
  • 但我对产生无限循环不感兴趣,我需要答案,基于已经研究过的总和的知识. (2认同)

Joh*_*ohn 15

一个值得关注的地方可能是计算机代数系统的维基百科类别.


Edw*_*ETT 13

除了简单地支持无限列表之外,Haskell中有两种工具可供使用.

首先,有一个模块支持在OEIS中查找序列.这可以应用于系列的前几个术语,可以帮助您识别您不知道封闭形式等的系列.另一个是可计算实数的"CReal"库.如果你有能力生成一个不断改进的价值界限(即通过对前缀进行求和,你可以将其声明为可计算的实数,允许部分排序等.在很多方面,这给你一个值,你可以使用像上面的总和.

然而,一般来说,计算两个流的相等性需要一个oracle来解决问题,所以没有语言可以完全通用地完成你想要的,尽管像Mathematica这样的计算机代数系统可以尝试.


for*_*ran 12

千里马可以计算一些无限和,但在这种特殊情况下它似乎没有找到答案:-s

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

但是,例如,那些工作:

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

(%i3) sum((1/2^k), k, 1, inf), simpsum;
(%o3)                                  1
Run Code Online (Sandbox Code Playgroud)


Wil*_*ein 8

你可以在Sage(一个免费的基于Python的数学软件系统)中解决系列问题,具体如下:

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

在幕后,这真的是使用Maxima(Sage的一个组件).


rlo*_*tun 7

对于Python,请查看SymPy - Mathematica和Matlab的克隆.

还有一个更重的基于Python的数学处理工具叫做Sage.


Pio*_*pla 4

您需要可以进行符号计算的东西,例如Mathematica。您还可以考虑查询Wolframaplha: sum((-1)^i*1/i, i, 1 , inf)