![]() |
|
|
![]()
|
|
| Garoh |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 29.8.2006 Где: Москва Репутация: нет Всего: нет |
Всем доброго времени суток!
В общем случае задача выглядит так: по нескольким известным точкам надо определить уравнение кривой 5 степени, проходящей через эти точки. Значит, выбираем 6 известных точек нашей кривой и составляем систему из 6 уравнений с 6 неизвестными коэффициентами: -------------------------------------------------------------- a*x1(5 степень) + b*x1(4 степень) + c*x1³ + d*x1² + e*x1 + f = y1 a*x2(5 степень) + b*x2(4 степень) + c*x2³ + d*x2² + e*x2 + f = y2 ....................... ....................... ....................... a*x6(5 степень) + b*x6(4 степень) + c*x6³ + d*x6² + e*x6 + f = y6 -------------------------------------------------------------- где a, b, c, d, e, f - неизвестные; x1, y1; x2, y2; .... ; x6, y6 - известные значения координат 6 точек, принадлежащих нашей кривой Мне посоветовали решать эту систему уравнений с помощью матрицы:
И приводить ее в нормальный вид (сложением, вычитанием, умножением), чтобы диагональ состояла из едениц, а коэффициенты располагались в матрице след. образом:
Помогите с реализацией кода обработки матрицы и нахождения этих чертовых коэффициентов плз! Если алгоритм составления матрицы неверен, то посоветуйте какой-нибудь другой. З.Ы: индексы и значения степеней больше 3 вставить не получилось, так что придется оставить все в таком корявом виде |
||||
|
|||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
есть у нас тема "коллекция алгоритмов от John Smith"
там куча всего в том числе и решение системы линейных уравнений: http://forum.vingrad.ru/index.php?showtopi...st&p=285659 -------------------- qqq |
|||
|
||||
| Garoh |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 29.8.2006 Где: Москва Репутация: нет Всего: нет |
спасибо, сейчас посмотрю
|
|||
|
||||
| Garoh |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 29.8.2006 Где: Москва Репутация: нет Всего: нет |
В том разделе приведены решения систем линейных уравнений при известных коэффициентах, но в моем случае задача обратная: мы знаем 6 точек, принадлежащих кривой, т.е. значения х1, у1, х2, у2, .... , х6, у6, и необходимо найти коэффициенты (a, b, c, d, e, f). Как в таком случае решать данную задачу?
|
|||
|
||||
| Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 4 Всего: 27 |
система линейных уравнений решается методом Гаусса. Вот тут есть исходники на Delphi для решения системы 4-го порядка (помоему):
http://student.rostov.ru/files/st_binary1250/gauss.rar |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
конечно, в задаче, для которой требуется найти a,b,c,d,e,f, они являются коэффициентами
но в подзадаче решения системы линейных уравнений они являются как раз неизвестными, а xi^n - коэффициентами -------------------- qqq |
|||
|
||||
| Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 4 Всего: 27 |
извиняюсь, я писал сообщение, когда топ выше еще небыл напечатан.
Тогда так: такие задачи решаются с помощью МЕТОДА НАИМЕНЬШИХ КВАДРАТОВ или МНК. Поисчи в инете, может что-нить найдешь Добавлено @ 17:41 например тут: http://alglib.sources.ru/interpolation/linleastsq.php http://revolution.allbest.ru/mathematics/00003949_0.html http://chemstat.com.ru/glossary/least_squares.html |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
МНК, обычно, используется для тех случаев, когда точное решение найти не получается, кроме того он часто сводится опять же к решению системы линейных уравнений (если коэффициенты входят линейно в аппроксимирующую функцию)
а здесь вполне нормальная ситуация: 6 неизвестных, 6 уравнений -------------------- qqq |
|||
|
||||
| Bitter |
|
||||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 4 Всего: 27 |
точно, как-то я не подумал...
это и есть СЛАУ Вспомнил! Интерполяция это называется. Ща гляну... Добавлено @ 18:22 Есть отчет по лабе на эту тему, который я когда-то делал. Только код в нём на Delphi Вот он: Добавлено @ 18:23 ээээ... только там функция 2-го порядка.... Присоединённый файл ( Кол-во скачиваний: 8 )
__2____.rar 97,97 Kb |
||||
|
|||||
| Pete |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 318 Регистрация: 5.1.2006 Где: Москва Репутация: 1 Всего: 12 |
Ага. Интерполяционный многочлен Лагранжа, по-моему, сам напрашивается при решении такой задачи) И ни каких систем не надо... -------------------- Совет учиться на ошибках других бесполезен; научиться чему-либо можно только на собственных ошибках. (Бернард Шоу) Не откладывай на завтра то, что можешь сделать сегодня. (Пословица) А теперь выпишем точное значение числа пи... (Препод) Жахни, Пендальф! © Гоблин |
|||
|
||||
| Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 4 Всего: 27 |
Pete, да да. именно этот многочлен использовался
|
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Угу. Формулы есть в учебниках, для многочленов любых степеней. -------------------- Всем добра |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Господи! Да поиск 6 коэффициентов по 6 точкам - это же тупой СЛАУ! Составляем главную матрицу и 6 частных, считаем 7 определителей, делим - коэффициенты получены. Для уменьшения ошибки считаем определители по Гауссу с выбором главного по всей матрице. При этом ошибка получается обычно меньше, чем при приведении расширенной матрицы к единичной.
Если в значениях аргументов и функции есть скачки на порядки и система координат не поддается нормализации - вот тогда имеет смысл искать более устойчивые методы. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| VaiMR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 25.11.2006 Репутация: нет Всего: 2 |
Вот так нам обьясняли решение этой задачи:
P(x)=y1*Q1(x1)+y2*Q2(x2)+...+yn*Qn(xn) (x-x2)(x-x3)...(x-xn) Q1(x)= ------------------------------ (x1-x2)(x1-x3)...(x1-xn) (x-x1)(x-x3)...(x-xn) Q2(x)= ------------------------------ (x2-x1)(x2-x3)...(x2-xn) Общая формула имееет вид: (X-X1)(X-X2)...(X-Xn-1)(X-Xn+1)...(X-Xm) Qn(x)= ----------------------------------------------------------- ,где m - степень полинома, n - номер Q, 0<Q<=m. (Xn-X1)(Xn-X2)...(Xn-Xn-1)(Xn-Xn+1)...(Xn-Xm) |
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
А разве в СЛАУ степени переменных не единица? Тут многочлен 5 степени. РЕБЯТА! Интерполяция не канает. Во первых, по определению построения интерполяционного полинома: по n точкам строим полином этой же степени. То есть шестой, в нашем случае. Не годится. Во вторых, по определению интерполяции: такой полином верен лишь на минимальном отрезке, содержащим данные точки. Дальше- задача экстраполяции. У нас на олимпиаде было: найти значение функции в такой-то точке, если даны такие-то. Точка была вне отрезка. Я ответил- "ноль, и попробуйте меня переубедить". Мне зачли решение. Вотъ. -------------------- Всем добра |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |