题目
已知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();