簡體   English   中英

為什么SymPy無法正確處理實數?

[英]Why does SymPy not work properly with real numbers?

我正在嘗試評估SymPy中的無窮大。 雖然第一個表達式是按照我期望的方式計算的,但是SymPy似乎對第二個表達式有麻煩。

from sympy import *
n = symbols('n')
print Sum((2)**(-n), (n, 1, oo)).doit()
print Sum((0.5)**(n), (n, 1, oo)).doit()

結果是:

1
Sum(0.5**n, (n, 1, oo))

我認為原因是我使用的是浮點數而不是整數。

有沒有一種方法可以近似求和?

文檔:

如果無法計算總和,則返回未評估的Sum對象。

另一種方法是:

In [40]: Sum((Rational(1,2))**(n), (n, 1, oo)).doit()
Out[40]: 1

還有另一種方法:

In [43]: Sum((0.5)**(n), (n, 1, float('inf'))).doit()
Out[43]: 1.00000000000000

大概來說,可以取一個足夠大的數字而不是無窮大:

In [51]: import sys

In [52]: Sum((0.5)**(n), (n, 1, sys.maxint)).doit()
Out[52]: 1.00000000000000

那是個錯誤 它應該起作用。 但是,一般而言,最好盡可能地使用精確有理數而不是SymPy中的浮點數。 如果將0.5替換0.5 Rational(1, 2)它將起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM