MT1342 函数积分

题目

已知f(x)=1/(1+x),编写函数用梯形法计算f(x)在区间[a,b]的积分。(确保x > -1,输入不考虑不合法情况)

格式

输入格式

输入为整型,空格分隔

输出格式

输出为实型

样例1

输入:
0 10

输出:
2.397895

程序

def f(x):
    """定义函数f(x)"""
    return 1 / (1 + x)

def trapezoidal_rule(a, b, n):
    """
    使用梯形法计算定积分
    a: 积分下限
    b: 积分上限
    n: 子区间的数量
    """
    h = (b - a) / n  # 计算子区间宽度
    sum = 0.5 * (f(a) + f(b))  # 计算第一个和最后一个梯形的面积

    # 计算中间梯形的面积
    for i in range(1, n):
        x_i = a + i * h
        sum += f(x_i)

    return h * sum  # 计算总面积

def main():
    #code here
    
    # 定义积分区间和子区间数量
    a,b = map(int,input().split())
    n = 5000000  # 子区间的数量

    # 计算积分
    integral = trapezoidal_rule(a, b, n)
    print("%f"%integral)
    pass

if __name__ == '__main__':
    main();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值