Files
CalWay_Python/120-4.py
2025-06-14 09:26:42 +08:00

32 lines
742 B
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#把函数改成题干的####################
def fx(x):
return 1/x
# 逐次分半梯形递推公式
def SplitTrapezoidal(a,b,err):
count = 1
t1 = (b-a)*(fx(a)+fx(b))/2
print(f"t{count}={t1}")
k = 1
while True:
tmp = 0
for i in range(1, 2**(k-1)+1):
tmp += fx(a + (b-a)*(2*i-1)/(2**k))
t2 = t1/2+(b-a)*tmp/(2**k)
count *= 2
print(f"t{count}={t2}")
if abs(t2-t1) < err:
break
t1 = t2
k += 1
return t2,k
#把范围ab换成题干的范围err换成题干的精度要求############
if __name__ == "__main__":
a = 1
b = 3
err = 1e-2
result,k = SplitTrapezoidal(a, b, err)
print(f"Result: {result},k={k}")