调和级数求和的精确计算可使用Python的分数计算处理
初等数学 调和级数求和 精确计算
问题:求调和级数前100项的精确值,结果用分数表示
# -*- coding: UTF-8 -*-
import math
from fractions import Fraction
from decimal import Decimal
from decimal import localcontext
# 调和级数前100项的和
def harmonic_sum100():
# n = 100: 1 + 1/2 + 1/3 + ... + 1/100
k = 100
fracRlt = Fraction(1, 1)
for i in range(2, k + 1):
tmpFrac = Fraction("%d/%d" % (1, i))
fracRlt = fracRlt + tmpFrac
print("调和级数求和->精确值:", fracRlt)
print(Decimal(fracRlt.numerator) / Decimal(fracRlt.denominator))
# 调和级数前100项的和(近似计算)
def harmonic_sum100_approximate():
# 欧拉常数
gama = "0.57721566490153286060651209"
# 调和级数求和
# refer: https://blog.csdn.net/njuptACMcxk/article/details/107764853
# n = 100: 1 + 1/2 + 1/3 + ... + 1/100
with localcontext() as ctx:
ctx.prec = 30
k = 100
sumK = Decimal(math.log(k)) + Decimal(gama)
print(f"调和级数求和->近似值:{sumK}")
# 调和级数前n项的和
def harmonic_series_sum(n):
# 初始化和为0
sum_result = Fraction(0, 1)
# 计算调和级数前n项的和
for i in range(1, n + 1):
sum_result += Fraction(1, i)
return sum_result
def testHarmonicSeriesSum():
# 计算调和级数前100项的和
result = harmonic_series_sum(100)
# 打印结果
print(f"The sum of the first 100 terms of the harmonic series is: {result}")
harmonic_sum100()
harmonic_sum100_approximate()
结果:
结论
使用Python分数(Fraction)计算,很方便能计算调和级数求和的问题