Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math
- def opt1(a, b, eps):
- N = 2
- while N > 0:
- h = (b - a)/N
- sq1 = Squres(a, b, N)
- sq2 = Squres(a, b, 2*N)
- #print(sq1, sq2)
- R = (sq2 - sq1)/3
- #print(R)
- #if (abs(R) - eps <= 0.001):
- if (abs(R) <= eps):
- print(N, sq2, sq2 + R)
- break;
- else:
- N= N*2
- def Squres(a, h, N):
- Xs = []
- h = (b-a)/N
- for i in range(0, N+1):
- Xs.append(a + h*i)
- sum = 0
- #print(Xs, h, N)
- for i in range(0, N):
- sum += math.exp(Xs[i] + h/2)
- return sum*h
- def opt2(a, b, eps):
- N = 2
- while (N > 0) :
- h = (b - a)/N
- tr1 = trap(a, b, h, N)
- tr2 = trap(a, b, h/2, 2*N)
- #print(tr1, tr2)
- R = (tr2 - tr1)/3
- #print(R)
- #if (abs(R) - eps <= 0.001):
- if (abs(R) <= eps):
- print(N, tr2, tr2 + R)
- break;
- else:
- N= N*2
- def trap (a, b, h, N):
- ys = []
- for i in range(0, N+1):
- ys.append(math.exp(a + h*i))
- sum = (math.exp(a) + math.exp(b))/2
- for i in range(1, N):
- sum += ys[i]
- return sum*h
- if __name__ == "__main__":
- N = 10
- a = 0
- b = 1
- eps = 0.001
- h = (b - a)/N
- #print(h)
- xs = []
- ys = []
- for i in range(0, N+1):
- xs.append(a + h*i)
- ys.append(math.exp(a + h*i))
- opt1(a, b, eps)
- opt2(a, b, eps)
- #print(trap(a, b, xs, ys, h, N))
- 8 1.7180021920526605 1.7182817010716516
- 8 1.7188411285799947 1.7182819740518924
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement