初等数学 调和级数求和 精确计算

调和级数求和的精确计算可使用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.youkuaiyun.com/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)计算,很方便能计算调和级数求和的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值