用python实现龙贝格算法

感谢@冬-梦大佬提供的源代码;感谢@天元浪子大佬的问题指导,同时感谢我的好哥们飞哥的帮忙修改完成了以下代码!!!

a=0             # 积分下限
b=1             # 积分上限
eps=10**-5      # 精度
T=[]            # 复化梯形序列
S=[]            # Simpson序列
C=[]            # Cotes序列
R=[]            # Romberg序列
def f(x):    # 被积函数
    y=4/(1+x**2)
    return y
def Romberg(a,b,eps,f):
    h = b - a
    T.append(h * (f(a) + f(b)) / 2)     # 定义T[0]
    ep=eps+1
    m=0
    while(ep>=eps):
        m=m+1
        t=0                           # 每一次循环都会将t初始化
        for i in range(2**m):
            if i % 2==1:
                t = t + f(i/(2**m))
        t = t/(2**m)
        t=t + T[-1]/2                   #  T[-1]指的是数组T中倒数第一个元素
        T.append(t)
        if m>=1:
            S.append((4/3)*T[-1]-(1/3)*T[-2])
        if m>=2:
            C.append((16/15)*S[-1]-(1/15)*S[-2])
        if m>=3:
            R.append((64/63)*C[-1]-(1/63)*C[-2])
        if m>4:
            ep=abs(10*(R[-1]-R[-2]))
Romberg(a,b,eps,f)
print("T[ ]=",T)
print("S[ ]=",S)
print("C[ ]=",C)
print("R[ ]=",R)

print("积分结果为:I = {:.5f}".format(R[-1]))

编写代码遇到的问题:关于使用python完成龙贝格算法-编程语言-CSDN问答

运算结果如下:

T[ ] = [3.0, 3.1, 3.131176470588235, 3.138988494491089, 3.140941612041389,

3.1414298931749745]

S[ ] = [3.133333333333333, 3.1415686274509795, 3.1415925024587064,

3.141592651224822, 3.1415926535528365]

C[ ] = [3.142117647058823, 3.141594094125888, 3.141592661142563,

3.141592653708037]

R[ ] = [3.1415857837618733, 3.141592638396796, 3.141592653590029]

积分结果为:I = 3.14159

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值