一. 组合梯形公式(数值积分)
【问题描述】组合梯形公式求函数f(x)=2+sin(2*sqrt(x))的积分近似值。
【输入形式】在屏幕上依次输入积分上限、下限和等距子区间个数。
【输出形式】输出使用组合梯形公式求得的积分近似值。
【样例1输入】
1 6 10
【样例1输出】
8.19385457
【样例1说明】输入:积分上限a为1、下限b为6和等距子区间个数m为10。输出:积分近似值(保留小数点后8位有效数字)
【评分标准】根据输入得到的输出准确
二. 组合辛普森公式(数值积分)
【问题描述】组合辛普森公式求函数f(x)=2+sin(2*sqrt(x))的积分近似值。
【输入形式】在屏幕上依次输入积分上限、下限和等距子区间个数。
【输出形式】输出使用组合辛普森公式求得的积分近似值。
【样例1输入】
1 6 5
【样例1输出】
8.18301549
【样例1说明】输入:积分上限a为1、下限b为6和等距子区间个数m为5。输出:积分近似值(保留小数点后8位有效数字)
【评分标准】根据输入得到的输出准确
import math
def fun(x):
return math.sin(2*math.sqrt(x))+2
# 复合梯度
def tx(a,b,m):
h = (b-a)/m
s = 0
for i in range(1,m):
x = a+h*i
s = s+fun(x) #s=f1+f2+----+fm-1
result = (h/2)*(fun(a)+s*2+fun(b))
return result
#复合辛普森
def xps(a,b,m):
h = (b-a)/(2*m)
s1 = 0
s2 = 0
for i in range(1,m+1):
x = a+ h*(2*i -1)
s1 = s1+fun(x)
s1 = 4*h*s1/3
for i in range(1,m):
x = a+ h*2*i
s2 = s2+fun(x)
s2 = 2 * h * s2 / 3
result = (h/3)*(fun(a)+fun(b))+s1+s2
return result
"""
def xps(a,b,m):
h = (b-a)/(2*m)
s1 = 0
for i in range(1,m+1):
x = a+ h*2*i
s1 = s1+fun(x)+4*fun(x-h)+fun(x-2*h)
result = (h/3)*s1
return result
"""
def main():
a,b,m= input().split()
a =int(a)
b =int(b)
m =int(m)
print("%.8f"%xps(a, b, m))
if __name__ == '__main__':
main()
原文链接:https://blog.csdn.net/qq_44527508/article/details/106425697