ASdzxf

7.2

May 27th, 2021 (edited)
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. import math
  2. import numpy as np
  3.  
  4. x = [2.91, 2.94, 6.35, 6.58, 3.8, 6.43, 0.57, 5.96, 3.4, 4.55]
  5. y = [82.16, 61.02, 44.56, 82.52, 99.17, 70.24, 63.23, 66.48, 48.35, 40.24]
  6. n = len(x)
  7. sum_x = 0.0
  8. sum_y = 0.0
  9. sum_y2 = 0.0
  10. sum_x2 = 0.0
  11. sum_x3 = 0.0
  12. sum_x4 = 0.0
  13. sum_xy = 0.0
  14. sum_x2y = 0.0
  15. for i in range(0, len(x)):
  16. sum_y += y[i]
  17. sum_x += x[i]
  18. sum_y2 += y[i] ** 2
  19. sum_x2 += x[i] ** 2
  20. sum_x3 += x[i] ** 3
  21. sum_x4 += x[i] ** 4
  22. sum_xy += x[i] * y[i]
  23. sum_x2y += x[i] ** 2 * y[i]
  24. a1 = (sum_x * sum_y - n * sum_xy) / (sum_x ** 2 - n * sum_x2)
  25. a = np.array([
  26. [sum_x2, sum_x, n],
  27. [sum_x3, sum_x2, sum_x],
  28. [sum_x4, sum_x3, sum_x2]
  29. ])
  30. b = np.array([sum_y, sum_xy, sum_x2y])
  31. temp_result = np.linalg.solve(a, b)
  32. result = list(temp_result)
  33. print(f"P2(x) = {result[0]}x^2 + ({result[1]})x + ({result[2]})")
  34. g = 0.0
  35. sum_g = 0.0
  36. for i in range(0, n):
  37. sum_g = (y[i] - (result[0] * x[i] ** 2 + result[1] * x[i] + result[2])) ** 2
  38. e = 0.0
  39.  
  40. for i in range(0, n):
  41. e += (y[i] - (result[0] * x[i] ** 2 + result[1] * x[i] + result[2])) ** 2
  42.  
  43. print("Средреквадратическое отклонение = ", math.sqrt(e / n))
  44. y_f = [.0, .0, .0, .0, .0, .0, .0, .0, .0, .0]
  45. minus_y = 0.0
  46. minus_y2 = 0.0
  47. for i in range(0, n):
  48. minus_y += (y[i] - (result[0] * x[i] ** 2 + result[1] * x[i] + result[2])) ** 2
  49. minus_y2 += (y[i] - (sum_y / n)) ** 2
  50. print("Величина достоверности аппроксимации R^2 =", 1 - minus_y / minus_y2)
  51.  
Add Comment
Please, Sign In to add comment