Advertisement
JohnathanMayhem

for rita

Dec 24th, 2022
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. import math
  2. import plotly.figure_factory as ff
  3.  
  4.  
  5. def pryam(f, a, b, n):
  6. h = (b - a) / n
  7. return h * sum([f(a + i * h) for i in range(0, n)]) + 0.01 * (b-a)
  8.  
  9.  
  10. def simpson_rule(func, a, b, nseg):
  11. if nseg%2 == 1:
  12. nseg += 1
  13. dx = 1.0 * (b - a) / nseg
  14. sum = (func(a) + 4 * func(a + dx) + func(b))
  15. for i in range(1, int(nseg / 2)):
  16. sum += 2 * func(a + (2 * i) * dx) + 4 * func(a + (2 * i + 1) * dx)
  17.  
  18. return sum * dx / 3 + 0.01 * (b-a)
  19.  
  20.  
  21. def f(x):
  22. return math.cos(x) / (x + 2)
  23.  
  24.  
  25. def realint():
  26. return 0.1989882210658063
  27.  
  28.  
  29.  
  30. a, b = 0.4, 1.2
  31. eps = 10 ** -8
  32. print("Эпсилон: ", eps)
  33.  
  34. print("Метод прямоугольников")
  35. data = []
  36. data.append(['N', 'eps', 'P'])
  37. n = 2
  38. r1 = pryam(f, a, b, n)
  39. data.append([n, abs(realint()-r1), ""])
  40. n *= 2
  41. r2 = pryam(f, a, b, n)
  42. data.append([n, abs(realint()-r2), math.log(abs(realint()-r2)/abs(realint()-r1), 2)])
  43. while (n < 1000000):
  44. n *= 2
  45. r1 = pryam(f, a, b, n)
  46. data.append([n, abs(realint()-r1), math.log(abs(realint()-r1)/abs(realint()-r2), 2)])
  47. n *= 2
  48. r2 = pryam(f, a, b, n)
  49. data.append([n, abs(realint()-r2), math.log(abs(realint()-r2)/abs(realint()-r1), 2)])
  50.  
  51. fig = ff.create_table(data)
  52. fig.show()
  53.  
  54. print("n = ", n)
  55. print("Результат: ", r2)
  56. print("---------------------------")
  57. print("Метод симпсона")
  58. data = []
  59. data.append(['N', 'eps', 'P'])
  60. n = 4
  61. r1 = simpson_rule(f, a, b, n)
  62. data.append([n, abs(realint()-r1), ""])
  63. n *= 2
  64. r2 = simpson_rule(f, a, b, n)
  65. data.append([n, abs(realint()-r2), math.log(abs(realint()-r2)/abs(realint()-r1), 2)])
  66. while (n<100000):
  67. n *= 2
  68. r1 = simpson_rule(f, a, b, n)
  69. data.append([n, abs(realint()-r1), math.log(abs(realint()-r1)/abs(realint()-r2), 2)])
  70. n *= 2
  71. r2 = simpson_rule(f, a, b, n)
  72. data.append([n, abs(realint()-r2), math.log(abs(realint()-r2)/abs(realint()-r1), 2)])
  73.  
  74. fig = ff.create_table(data)
  75. fig.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement