[英]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.