LINUX.ORG.RU

Построить максимально точное уравнение прямой по точкам


0

0

Есть куча точек - набор пар (x,y), все координаты - double. Нужна готовая библиотека или алгоритм (с/c++), который может построить уравнение данной прямой так, чтобы оно максимально подходило заданным точкам.

Проблема в том, что в каждой точке маа-а-а-аленькая погрешность (6-7 знаки после запятой), т.е. каждая из них окружена некоторой окрестностью ошибки.

anonymous

мне кажется, что кучу точек никак не соединить прямой. по идее кучи не надо: хватит и 2-х

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

Pi ★★★★★
()
Ответ на: комментарий от UVV

метод наименьших квадратов нужен, если данные с немалыми погрешностями, а у человека "маа-а-а-аленькая погрешность". иначе - просто порча существующих данных

Pi ★★★★★
()
Ответ на: комментарий от Pi

> метод наименьших квадратов нужен, если данные с немалыми погрешностями
Считаешь, что в данном случае он не применим?
Другие варианты есть?
Как на счёт моего вопроса о прохождении этой прямой через (0; 0)?

UVV ★★★★★
()
Ответ на: комментарий от UVV

понял... просто я про неё ни слова не говорил

Pi ★★★★★
()

Линейный корелляционный и регрессионный анализ. Библиотеку на c/c++ не подскажу, но в R это делается в пол-строки.

ugoday ★★★★★
()

Боже, просто классический метод наименьших квадратов.

20 минут программирования (с отладкой) на любом языке -- зачем тебе готовая библтотека?

Die-Hard ★★★★★
()
Ответ на: комментарий от UVV

В чём проблема-то? Ищешь прямую, для которой сумма квадратов отклонений минимальна, но не среди всех вообще прямых, а среди только тех, которые проходят через начало координат.

Teak ★★★★★
()

А еще есть fit в gnuplotе, который этот самый метод наименьших квадратов реализует.

dn2010 ★★★★★
()

Д.О.Ж.И.Л.И.

За МНК идёт на форум...

Полный превед...

KRoN73 ★★★★★
()
Ответ на: комментарий от UVV

>Как на счёт моего вопроса о прохождении этой прямой через (0; 0)?

Как-то даже не смешно становится. У тебя совсем никаких мыслей на этот счет нет?

Обычная прямая имеет два параметра, их и находим с помощью МНК. Угадай с трех раз, сколько параметров у прямой, проходящей через О?

anonymous
()
Ответ на: комментарий от anonymous

> У тебя совсем никаких мыслей на этот счет нет?
Неправильно задал вопрос!
в МНК точку (0; 0) подставлять?

UVV ★★★★★
()
Ответ на: комментарий от UVV

Слушай, за эти несколько дней можно было и почитать про метод наименьших квадратов, и вообще заботать всё вариационное исчисление и половину статистики. Ты давай кончай тут на эту тему постить, сходи в библиотеку и не позорься.

Teak ★★★★★
()

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

П.С. не надо мне говорить, что матрица здесь 2х2, я про более общий случай.

buddha
()
Ответ на: комментарий от buddha

> но надо ведь находить обратную матрицу, что уже требует серьерзных алгоритмов.

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

anonymous
()
Ответ на: комментарий от anonymous

Да, так раскажите каким методом вы делали ? Особенно как часто вам попадались illconditioned матрицы?

Numerically stable методы есть и хорошие методы, но они в библиотеках, от которых тут сильно отговаривают.

buddha
()
Ответ на: комментарий от buddha

"используй метод н.кв." - некорректное утверждение.

Необходимо знать, как точки отклоняются от прямой,
и желательно знать их статистическое распределение.
Общий случай оптимального нахождения основан на методе
максимального правдоподобия (н.кв. - как частный случай,
для гауссовского распределения отклонений).

Наиболее рапрострaненные случаи
"Построить максимально точное уравнение прямой по точкам"

1. Из электроники - имеется линейно-нарaстающий сигнал,
(y = a*x + b), к нему добавляется гауссовский/"белый" шум,
т.е. отклонения от прямой "вертикальные"(по оси y).

Применяя метод н.кв. получим:

a = (x_среднее*y_среднее - xy_среднее)/(x_среднее**2 - (x**2)_среднее)
b = y_среднее - a*x_среднее

т.е. никаких матриц вращaть не надо.

2. Из жизни :) - проверка на трезвость.
Необходимо пройти по-прямой в "пьяном" виде.
Вероятность отклонения в лево, в право - одинаковая.

Домашнее задание - найти фомулы для вычисления коеффициентов
прямой a и b.

Есть довольно интересные рекурсивные алгоритмы, особенно те,
которые адаптивные (калмановская фильтрация),
но это уже выходит за рамки вопроса.

Valeriy_Onuchin ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.