Метод наименьших квадратов

Введение

Метод наименьших квадратов (МНК) — это математический подход для поиска оптимального приближения функций, который минимизирует сумму квадратов отклонений между наблюдаемыми и расчетными значениями.

Этот метод широко используется в компьютерной графике для задач интерполяции, сглаживания кривых и обработки данных.

Основная идея метода наименьших квадратов

Пусть даны точки $\{(x_i, y_i)\}_{i=1}^n$, где $x_i$ — это известные значения, а $y_i$ — наблюдаемые значения. Требуется найти функцию $f(x)$, которая аппроксимирует эти точки. Например, пусть $f(x)$ будет полиномом вида:
\[
f(x) = a_0 + a_1x + a_2x^2 + \dots + a_mx^m.
\]

Для определения коэффициентов $a_0, a_1, \dots, a_m$ мы минимизируем функцию ошибки:
\[
S = \sum_{i=1}^n \left(y_i - f(x_i)\right)^2.
\]

Эта сумма представляет квадрат отклонения значений $y_i$ от значений, рассчитанных функцией $f(x)$.

Решение методом наименьших квадратов

Минимизация суммы квадратов $S$ осуществляется путем дифференцирования $S$ по каждому коэффициенту $a_k$ и решения системы линейных уравнений:
\[
\frac{\partial S}{\partial a_k} = 0, \quad k = 0, 1, \dots, m.
\]

Для линейного случая, где $f(x) = a_0 + a_1x$, система принимает вид:
\[
\begin{cases}
n a_0 + a_1 \sum_{i=1}^n x_i = \sum_{i=1}^n y_i, \\
a_0 \sum_{i=1}^n x_i + a_1 \sum_{i=1}^n x_i^2 = \sum_{i=1}^n x_i y_i.
\end{cases}
\]

Для более высоких степеней $m$ требуется составить и решить систему линейных уравнений большего порядка.

Применение в компьютерной графике

Метод наименьших квадратов применяется для:

  • Сглаживания кривых и поверхностей.
  • Аппроксимации траекторий движущихся объектов.
  • Удаления шумов из данных при визуализации.
  • Построения кривых трендов на графиках.

Алгоритм

Алгоритм линейной регрессии методом наименьших квадратов, реализованный в функции, работает следующим образом:

  1. Инициализация:
    • Определяется количество точек данных (`n`).
    • Инициализируются четыре переменные для суммирования: сумма x-координат (`sumX`), сумма y-координат (`sumY`), сумма произведений x и y (`sumXY`), и сумма квадратов x-координат (`sumX2`). Все они начинаются с нуля.
  2. Суммирование:
    • Функция перебирает все точки данных.
    • Для каждой точки:
      • к `sumX` добавляется x-координата точки.
      • к `sumY` добавляется y-координата точки.
      • к `sumXY` добавляется произведение x и y координат точки.
      • к `sumX2` добавляется квадрат x-координаты точки.
  3. Вычисление параметров:
    • Используя накопленные суммы, вычисляется наклон (`slope`) прямой линии регрессии по формуле, выведенной из метода наименьших квадратов. Эта формула минимизирует сумму квадратов вертикальных расстояний между точками данных и прямой.
    • Используя вычисленный наклон и накопленные суммы, вычисляется точка пересечения прямой с осью Y (`intercept`).
  4. Возврат результата:
    • Функция возвращает объект, содержащий вычисленный наклон (`slope`) и точку пересечения с осью Y (`intercept`). Эти два значения определяют уравнение прямой линии, аппроксимирующей данные методом наименьших квадратов.

Заключение

Метод наименьших квадратов является мощным инструментом для обработки данных и решения задач аппроксимации. В компьютерной графике его использование позволяет улучшить качество визуализации и создать более точные модели. Пример МНК на JavaScript демонстрирует, как можно реализовать данный метод для линейной аппроксимации, но подход легко расширяется для полиномиальных и других функций.