Advertisement
Guest User

Untitled

a guest
Apr 20th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.60 KB | None | 0 0
  1. import math
  2.  
  3. def opt1(a, b, eps):
  4. N = 2
  5. while N > 0:
  6. h = (b - a)/N
  7. sq1 = Squres(a, b, N)
  8. sq2 = Squres(a, b, 2*N)
  9. #print(sq1, sq2)
  10. R = (sq2 - sq1)/3
  11. #print(R)
  12. #if (abs(R) - eps <= 0.001):
  13. if (abs(R) <= eps):
  14. print(N, sq2, sq2 + R)
  15. break;
  16. else:
  17. N= N*2
  18.  
  19. def Squres(a, h, N):
  20. Xs = []
  21. h = (b-a)/N
  22.  
  23. for i in range(0, N+1):
  24. Xs.append(a + h*i)
  25. sum = 0
  26. #print(Xs, h, N)
  27. for i in range(0, N):
  28. sum += math.exp(Xs[i] + h/2)
  29. return sum*h
  30.  
  31. def opt2(a, b, eps):
  32. N = 2
  33. while (N > 0) :
  34. h = (b - a)/N
  35. tr1 = trap(a, b, h, N)
  36. tr2 = trap(a, b, h/2, 2*N)
  37. #print(tr1, tr2)
  38.  
  39. R = (tr2 - tr1)/3
  40. #print(R)
  41. #if (abs(R) - eps <= 0.001):
  42. if (abs(R) <= eps):
  43. print(N, tr2, tr2 + R)
  44. break;
  45. else:
  46. N= N*2
  47.  
  48. def trap (a, b, h, N):
  49. ys = []
  50. for i in range(0, N+1):
  51. ys.append(math.exp(a + h*i))
  52. sum = (math.exp(a) + math.exp(b))/2
  53. for i in range(1, N):
  54. sum += ys[i]
  55. return sum*h
  56.  
  57.  
  58. if __name__ == "__main__":
  59.  
  60. N = 10
  61. a = 0
  62. b = 1
  63. eps = 0.001
  64. h = (b - a)/N
  65. #print(h)
  66.  
  67. xs = []
  68. ys = []
  69.  
  70. for i in range(0, N+1):
  71. xs.append(a + h*i)
  72. ys.append(math.exp(a + h*i))
  73.  
  74. opt1(a, b, eps)
  75. opt2(a, b, eps)
  76.  
  77. #print(trap(a, b, xs, ys, h, N))
  78.  
  79.  
  80. 8 1.7180021920526605 1.7182817010716516
  81. 8 1.7188411285799947 1.7182819740518924
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement