Линией наилучшего соответствия называется прямая, проходящая на наименьшем удалении от набора из n точек. В данном упражнении мы предположим, что каждая точка в коллекции обладает координатами x и y. Символы x̅ и y̅ мы будем использовать для подсчета средних значений по осям x и y соответственно. Линия наилучшего соответствия представлена формулой y = mx+b, где m и b вычисляются по следующим формулам:

Напишите программу, которая будет запрашивать у пользователя координаты коллекции точек. При этом пользователь должен вводить сначала координату x, а затем y. Ввод координат может продолжаться до тех пор, пока пользователь не оставит пустым ввод координаты x. Отобразите формулу, характеризующую линию наилучшего соответствия, вида y = mx + b путем замены переменных m и b на значения, вычисленные по предыдущим формулам. Например, если пользователь введет три точки (1, 1), (2, 2.1) и (3, 2.9), итоговая формула должна приобрести вид y = 0,95x + 0,1.
from statistics import mean list_x = [] list_y = [] sum_sq = 0 sum_pr = 0 while True: x = input("Введите значение x (пропуск для завершения): ") if x == '': break x = float(x) sum_sq += x * x # подсчет суммы квадратов для формулы list_x.append(x) y = float(input('Введите значение y: ')) list_y.append(y) sum_pr += x * y # накопление суммы произведений average_x = mean(list_x) # среднее значение и суммы average_y = mean(list_y) sum_x = sum(list_x) sum_y = sum(list_y) m = round((sum_pr - (sum_x * sum_y)/len(list_x)) / (sum_sq - sum_x ** 2 / len(list_x)), 2) b = round(average_y - m * average_y, 2) print(f'y={m}x+{b}')
