Самый быстрый способ приспособить параболу к множеству точек? - PullRequest
5 голосов
/ 28 октября 2010

Учитывая набор точек, каков самый быстрый способ подгонки к ним параболы? Это вычисление наименьших квадратов или итеративный способ?

Спасибо

Edit: Я думаю, что градиентный спуск это путь. Вычисление наименьших квадратов было бы немного сложнее (пришлось бы делать декомпозицию qr или что-то еще, чтобы сохранить стабильность).

Ответы [ 4 ]

8 голосов
/ 28 октября 2010

Если с точками нет ошибок, вы можете интерполировать по трем точкам .В противном случае наименьших квадратов или любая эквивалентная формулировка - путь.

5 голосов
/ 11 июля 2014

Мне недавно нужно было найти параболу, которая проходит через 3 точки.

предположим, у вас есть (x1,y1), (x2,y2) and (x3,y3), и вы хотите, чтобы парабола

y-y0 = a*(x-x0)^2

прошла через них: find y0, x0, and a.

Вы можете сделать некоторую алгебру и получить это решение (при условии, что точки не все на линии):

let c = (y1-y2) / (y2-y3)
x0    = ( -x1^2 + x2^2 + c*( x2^2 - x3^2 ) )  /  (2.0*( -x1+x2 + c*x2 - c*x3 ))
a     = (y1-y2)  /  ( (x1-x0)^2 - (x2-x0)^2 )
y0    = y1 - a*(x1-x0)^2

Примечание в уравнении дляc if y2==y3 тогда у вас есть проблема.Поэтому в моем алгоритме я проверяю это и меняю местами x1, y1 и x2, y2, а затем продолжаю.

надеюсь, что это поможет!

Пол Проберт

1 голос
/ 28 октября 2010

Расчетное решение почти всегда быстрее, чем итеративное решение. «Исключение» будет для малых итераций и сложных вычислений.

Я бы использовал метод наименьших квадратов. Я только каждый кодировал его для подгонки линейной регрессии, но он может быть использован для парабол.

0 голосов
/ 22 апреля 2016

АЛГОРИТМ ДЛЯ ПАРАБОЛЫ

  1. Читайте нет. точек данных n и порядка полинома Mp.
  2. Чтение значений данных.
  3. Если n
  4. Set M = Mp + 1;
  5. Вычислить коэффициент C-матрицы.
  6. Вычислить коэффициент B-матрицы.
  7. Решить для коэффициентов а1, а2 ,. , , , , , , ан.
  8. Напишите коэффициент.
  9. Оцените значение функции по множеству независимых переменных.
...