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