Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math
- import numpy as np
- x = [2.91, 2.94, 6.35, 6.58, 3.8, 6.43, 0.57, 5.96, 3.4, 4.55]
- y = [82.16, 61.02, 44.56, 82.52, 99.17, 70.24, 63.23, 66.48, 48.35, 40.24]
- n = len(x)
- sum_x = 0.0
- sum_y = 0.0
- sum_y2 = 0.0
- sum_x2 = 0.0
- sum_x3 = 0.0
- sum_x4 = 0.0
- sum_xy = 0.0
- sum_x2y = 0.0
- for i in range(0, len(x)):
- sum_y += y[i]
- sum_x += x[i]
- sum_y2 += y[i] ** 2
- sum_x2 += x[i] ** 2
- sum_x3 += x[i] ** 3
- sum_x4 += x[i] ** 4
- sum_xy += x[i] * y[i]
- sum_x2y += x[i] ** 2 * y[i]
- a1 = (sum_x * sum_y - n * sum_xy) / (sum_x ** 2 - n * sum_x2)
- a = np.array([
- [sum_x2, sum_x, n],
- [sum_x3, sum_x2, sum_x],
- [sum_x4, sum_x3, sum_x2]
- ])
- b = np.array([sum_y, sum_xy, sum_x2y])
- temp_result = np.linalg.solve(a, b)
- result = list(temp_result)
- print(f"P2(x) = {result[0]}x^2 + ({result[1]})x + ({result[2]})")
- g = 0.0
- sum_g = 0.0
- for i in range(0, n):
- sum_g = (y[i] - (result[0] * x[i] ** 2 + result[1] * x[i] + result[2])) ** 2
- e = 0.0
- for i in range(0, n):
- e += (y[i] - (result[0] * x[i] ** 2 + result[1] * x[i] + result[2])) ** 2
- print("Средреквадратическое отклонение = ", math.sqrt(e / n))
- y_f = [.0, .0, .0, .0, .0, .0, .0, .0, .0, .0]
- minus_y = 0.0
- minus_y2 = 0.0
- for i in range(0, n):
- minus_y += (y[i] - (result[0] * x[i] ** 2 + result[1] * x[i] + result[2])) ** 2
- minus_y2 += (y[i] - (sum_y / n)) ** 2
- print("Величина достоверности аппроксимации R^2 =", 1 - minus_y / minus_y2)
Add Comment
Please, Sign In to add comment