Загрузка данных


# Данные (вариант 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}")