20250423
This commit is contained in:
25
120-4.py
Normal file
25
120-4.py
Normal file
@@ -0,0 +1,25 @@
|
||||
def fx(x):
|
||||
return 1/x
|
||||
|
||||
|
||||
def SplitTrapezoidal(a,b,err):
|
||||
t1 = (b-a)*(fx(a)+fx(b))/2
|
||||
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)
|
||||
if abs(t2-t1) < err:
|
||||
break
|
||||
t1 = t2
|
||||
k += 1
|
||||
return t2,k
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
a = 1
|
||||
b = 3
|
||||
err = 1e-2
|
||||
result,k = SplitTrapezoidal(a, b, err)
|
||||
print(f"Result: {result},k={k}")
|
||||
Reference in New Issue
Block a user