import numpy as np
import matplotlib.pyplot as plt

# Чтение данных из файла data.txt
x_data = []
y_data = []
with open('data.txt', 'r') as f:
    for line in f:
        parts = line.strip().split()
        if len(parts) >= 2:
            x_val = float(parts[0])
            y_val = float(parts[1])
            x_data.append(x_val)
            y_data.append(y_val)

# Чтение коэффициентов из файла out.txt
coefficients = []
with open('out.txt', 'r') as f:
    for line in f:
        if line.startswith('a['):
            parts = line.strip().split('=')
            if len(parts) == 2:
                coef = float(parts[1])
                coefficients.append(coef)

if len(coefficients) == 0:
    print("Коэффициенты не найдены в файле out.txt.")
    exit(1)

# Создание полиномиальной функции
def polynomial_function(x):
    result = 0
    for i, coef in enumerate(coefficients):
        result += coef * x**i
    return result

# Генерация точек для графика полинома
x_poly = np.linspace(min(x_data), max(x_data), 500)
y_poly = polynomial_function(x_poly)

# Построение графика
plt.figure(figsize=(10, 6))
plt.scatter(x_data, y_data, color='blue', label='Исходные данные')
plt.plot(x_poly, y_poly, color='red', label='Полиномиальная регрессия')
plt.title('Ортогональная полиномиальная регрессия')
plt.xlabel('$alpha^0$')
plt.ylabel('$C_x$')
plt.legend()
plt.grid(True)
plt.show()