Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2010, 22:38   #1
Laplas
Пользователь
 
Регистрация: 02.10.2009
Сообщений: 25
По умолчанию интерполяция

доброго времени суток)) просьба такая: расскажите пожалуйста "по-русски" метод сплайн-интерполяции! заранее благодарю

Последний раз редактировалось Laplas; 04.03.2010 в 22:49.
Laplas вне форума Ответить с цитированием
Старый 04.03.2010, 23:25   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Вам матчасть?
p51x вне форума Ответить с цитированием
Старый 04.03.2010, 23:33   #3
Laplas
Пользователь
 
Регистрация: 02.10.2009
Сообщений: 25
По умолчанию

да хотелось бы почитать человеческие пояснения))) это я уже читал...мало что понял((
Laplas вне форума Ответить с цитированием
Старый 05.03.2010, 09:30   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Что именно не понятно?
p51x вне форума Ответить с цитированием
Старый 05.03.2010, 23:59   #5
Laplas
Пользователь
 
Регистрация: 02.10.2009
Сообщений: 25
По умолчанию

ну например, где брать значение функции в узлах сшивки, если они не даны???и почему на каждом интервале полином будет разный, если все коэффициенты повязаны между собой???
Laplas вне форума Ответить с цитированием
Старый 06.03.2010, 09:44   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Прочтите ссылку. Там показан один из вариантов "склейки".

"и почему на каждом интервале полином будет разный,"
Для лучшего приближения. Например, возьмем для простоты порядок 1 - т.е. кусок прямой. Можно ли ей приблизить весь график функции (естественно, не прямой линии)?

"если все коэффициенты повязаны между собой???"
ВСЕ коэффициенты не повязаны строго говоря.
p51x вне форума Ответить с цитированием
Старый 06.03.2010, 12:03   #7
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

Метод сплайн-интерполяции заключается в следующем: отрезок, на котором производится интерполяция, делится на n равных частей, на каждой части строится полином невысокой степени, обычно третьей. Полином этот выглядит как полином, разложенный по степенному ряду вот так: S(x) = a + b(x-x0)+c(x-x0)^2+d(x-x0)^3; В узлах деления, как вы называете "сшивки", чтобы приближение функции, построенное по сплайну, было непрерывно-дифференцируемым и имело в каждой своей точке производную, мы приравниваем первые и вторые производные в этих точках. Далее вычисляем коэффициенты a,b,c,d ( они представляют собой векторы, каждый из которых имеет (n-1) компоненту, эти компоненты привязаны к своим частям отрезка ), потом, интерполируя в заданной точке, по этой точке ищем отрезок, которому эта точка принадлежит, и в ней вычисляем интерполяционный полином по формуле, написанной выше. Так, если x принадлежит [x(k),x(k+1)] отрезку, то вычисление производится по формуле Sk(x) = ak + bk(x-xk)+ck(x-xk)^2+dk(x-xk)^3;

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

что касается как вычислять производные - зная вид полинома, всегда можно написать для него парочку производных, зная их заранее, тем более, что третья производная, например для вычисления 2 доп. условий, о которых я упоминал, для полинома 3 степени - постоянна

сплайн интерполирование используется обычно ( а может даже и только! ) на практике, когда таблица узлов и значений функции получены экспериментально с погрешностью, тогда сплайн интерполяция ( полиномом 3 степени ) ведет себя лучше ( дает погрешность меньше ), чем интерполяционный полином того же Лагранжа более высокой степени, потому что последний очень чувствителен к погрешности в исходных данных при больших степенях, но сплайн может и "проиграть" в погрешности Лагранжу более высокой степени в том случае, когда исходные данные достаточно точны

вообще есть программное обеспечение, позволяющее вычислить сплайн-функцию в заданной точке.
это процедура Spline, которая по заданному набору узлов и значений функций в узлах находит вектора a,b,c,d (коэффициенты)
это функция Seval, которая по входным векторам, найденным процедурой Spline, и по узлам интерполирования вычисляет полином в заданной точке

Последний раз редактировалось capta1n; 06.03.2010 в 12:10.
capta1n вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
интерполяция сплайнами tanek Помощь студентам 5 06.07.2011 00:23
Интерполяция лагранжа Styks Общие вопросы C/C++ 4 14.12.2009 18:47
линейная интерполяция Auster Помощь студентам 4 22.04.2008 18:02