From 639646c5e3d7aa225c1f86e244147cd26e9d8d24 Mon Sep 17 00:00:00 2001 From: 123 <629825095@qq.com> Date: Sat, 14 Jun 2025 09:26:42 +0800 Subject: [PATCH] 111 --- 120-3.py | 6 +++--- 120-4.py | 7 ++++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/120-3.py b/120-3.py index 0f8274e..79a1f4c 100644 --- a/120-3.py +++ b/120-3.py @@ -1,4 +1,4 @@ - +#把范围与原函数换成题干的############ x1, x2 = 3, 6 def fx(x): @@ -25,8 +25,8 @@ def CompositeNewtonCotes(n, type): if __name__ == "__main__": # 复合梯形公式,点数为n+1 - print("复合梯形公式\n", CompositeNewtonCotes(8, 1)) #8等分,1代表是梯形公式 + print("复合梯形公式\n", CompositeNewtonCotes(8, 1)) #8等分,1代表是梯形公式#################### # 复合辛普生公式,点数为2n+1 - print("复合辛普生公式\n", CompositeNewtonCotes(4, 2)) #4等分,2代表是辛普生公式 + print("复合辛普生公式\n", CompositeNewtonCotes(4, 2)) #4等分,2代表是辛普生公式############### diff --git a/120-4.py b/120-4.py index f14eb15..37100ff 100644 --- a/120-4.py +++ b/120-4.py @@ -1,23 +1,28 @@ +#把函数改成题干的#################### 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