Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1. import math
  2.  
  3.  
  4. def f(x):
  5. return (1 - x ** 2) ** 2 # [a, b] = [-1, 1]
  6.  
  7.  
  8. def F(x):
  9. return x + (x ** 5 / 5) - (2 * x ** 3 / 3) # Одна из первообразных f(x)
  10.  
  11.  
  12. def Simpson(n):
  13. I = F(1) - F(-1) # Точное значение I, по ф-ле Ньютона-Лейбница
  14. Iappr_n = 0 # Приближенное значение
  15.  
  16. DeltaX = 2/n # ∆X_i = (b - a)/n
  17.  
  18. X = [0] * (n + 1) #
  19. for i in range(n + 1): # Разбиение отрезка на n равных частей
  20. X[i] = -1 + i * DeltaX #
  21.  
  22. for i in range(1, n + 1): # Подсчет Iappr_n формулой Симпсона
  23. Iappr_n += DeltaX * (1/6 * f(X[i-1]) + 4/6 * f(0.5 * (X[i] + X[i-1])) + 1/6 * f(X[i]))
  24.  
  25. err_n = abs(I - Iappr_n)
  26. s_n = math.log(err_n, DeltaX)
  27.  
  28. Data = [0] * 3 #
  29. Data[0] = Iappr_n # Сохраняю результаты в массив
  30. Data[1] = err_n #
  31. Data[2] = s_n #
  32.  
  33. return Data
  34.  
  35.  
  36. for i in [2 ** j for j in range(3, 16)]: # Иду по степеням двойки
  37. a = Simpson(i)[0]
  38. b = Simpson(i)[1]
  39. c = Simpson(i)[2]
  40. print("при n = ", i, "\t", "Iappr_n =", a, '\t', "err_n =", b, '\t', "s_n =", c, '\t', sep='')
  41. # Пытаюсь красиво вывести(ну почти)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement