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



import numpy as np

x = np.array([
    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 = np.array([
    2.09, 2.05, 2.19, 2.18, 2.17,
    2.27, 2.58, 2.73, 2.82, 3.04,
    3.03, 3.45, 3.62, 3.85, 4.19,
    4.45, 4.89, 5.06, 5.63, 5.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))

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}")