2010-10-28 2 views
4

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

Благодаря

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

+0

Нужно ли обращаться с вращающейся параболой?или он находится в форме 'y = ax^2 + bx + c'? – rwong

+0

только нормальный y = ax^2 + bx + c – victor

ответ

7

Если точки не имеют ошибки, то you may interpolate by three points. В противном случае least squares или любая эквивалентная формулировка - путь.

+2

опубликуйте резюме или формулу из ссылок, потому что, когда ссылки будут «мертвы или изменены», ваш ответ не будет полезен. –

1

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

Я бы использовал метод наименьших квадратов. Я только каждый закодировал его для линейной регрессии, но его можно использовать для парабол (у меня были причины, чтобы посмотреть его недавно), источники включали старое издание «Numerical Recipes» Press et al и «Инженерная математика» Крейзиг).

+2

Я знаю, что опаздываю на вечеринку, но у меня есть трюк с вашим ответом. Линейный в «Линейной регрессии» не относится к уравнению, к которому вы приспосабливаетесь, а скорее к тому, что уравнение вашего фитинга зависит только от линейной зависимости от переменных подстановки. Например, линейная регрессия может быть применена к функции 'a cos x + b e^x', где' a' и 'b' являются переменными соответствия, но не непосредственно для' cos (a x + b) '. Дело в том, что наименьшие квадраты, соответствующие «a x^2 + b x + c», являются линейными. – rcollyer

+0

Но вы подходите к трем константам? – winwaed

+0

Да, константы, которые он ищет, это 'a',' b' и 'c', а походка остается« линейной ». – rcollyer

4

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

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

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

пройти через них: найти 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 

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

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

Пол Проберт

0

АЛГОРИТМ параболы

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