# Данные (вариант 7)
x = [
0.1, 0.2, 0.3, 0.4, 0.5,
0.6, 0.7, 0.8, 0.9, 1.0,
1.1, 1.2, 1.3, 1.4, 1.5,
1.6, 1.7, 1.8, 1.9, 2.0
]
y = [
-0.10, -0.21, 0.01, 0.05, -0.13,
-0.23, -0.21, -0.43, -0.57, -0.44,
-0.44, -0.83, -0.78, -0.81, -1.06,
-1.41, -1.40, -1.70, -1.96, -1.91
]
n = len(x)
# Считаем суммы (как в таблице)
Sx = sum(x)
Sx2 = sum(xi**2 for xi in x)
Sx3 = sum(xi**3 for xi in x)
Sx4 = sum(xi**4 for xi in x)
Sy = sum(y)
Sxy = sum(x[i]*y[i] for i in range(n))
Sx2y = sum((x[i]**2)*y[i] for i in range(n))
# Система:
# a*Sx4 + b*Sx3 + c*Sx2 = Sx2y
# a*Sx3 + b*Sx2 + c*Sx = Sxy
# a*Sx2 + b*Sx + c*n = Sy
# Решаем методом Крамера
def det3(a1,a2,a3, b1,b2,b3, c1,c2,c3):
return (a1*b2*c3 + a2*b3*c1 + a3*b1*c2
-a3*b2*c1 - a2*b1*c3 - a1*b3*c2)
D = det3(
Sx4, Sx3, Sx2,
Sx3, Sx2, Sx,
Sx2, Sx, n
)
Da = det3(
Sx2y, Sx3, Sx2,
Sxy, Sx2, Sx,
Sy, Sx, n
)
Db = det3(
Sx4, Sx2y, Sx2,
Sx3, Sxy, Sx,
Sx2, Sy, n
)
Dc = det3(
Sx4, Sx3, Sx2y,
Sx3, Sx2, Sxy,
Sx2, Sx, Sy
)
a = Da / D
b = Db / D
c = Dc / D
print("Коэффициенты:")
print(f"a = {a:.6f}")
print(f"b = {b:.6f}")
print(f"c = {c:.6f}")
print("\nИскомая функция:")
print(f"f(x) = {a:.6f}x^2 + {b:.6f}x + {c:.6f}")
# считаем сумму квадратов невязок
S = 0
for i in range(n):
y_calc = a*x[i]**2 + b*x[i] + c
S += (y_calc - y[i])**2
print(f"\nСумма квадратов невязок S = {S:.6f}")