Python
import numpy as np
import matplotlib.pyplot as plt

# Данные
x = np.array([1.0, 1.9, 2.8, 3.7, 4.6, 5.5])
y = np.array([2.4142, 1.0818, 0.50953, 0.11836, -0.24008, -0.66818])


# Функция для вычисления коэффициентов многочлена степени n по методу наименьших
# квадратов
def polynomial_fit(x, y, degree):
    # Матрица системы нормальных уравнений
    X = np.vander(x, degree + 1)
    # Решение системы нормальных уравнений
    coeffs = np.linalg.lstsq(X, y, rcond=None)[0]
    return coeffs


# Функция для вычисления значений многочлена с заданными коэффициентами
def polynomial_values(x, coeffs):
    return np.polyval(coeffs, x)


# Построение графиков
x_plot = np.linspace(1, 5.5, 200)

# Степени многочленов
degrees = [1, 2, 3]

# Построение графиков для каждой степени
plt.figure(figsize=(10, 6))

for degree in degrees:
    coeffs = polynomial_fit(x, y, degree)
    y_plot = polynomial_values(x_plot, coeffs)
    plt.plot(x_plot, y_plot, label=f'Многочлен {degree} ступени')

# Исходные данные
plt.scatter(x, y, color='red', label='Точки')

# Оформление графика
plt.title('Аппроксимация многочленом методом наименьших квадратов')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.grid(True)
plt.show()