![]() |
|
![]() ![]() ![]() |
|
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Вобщем трабл такой... Опять же для курсовика надо сделать три задачи на интерполяцию.
С методами Ньютона и Лагранжа я разобрался без проблем, но вот алгоритм работы интерполяции сплайнами не совсем понял... Т.е. юзер вводит определенное количество иксов и соответствующих им значения функции, значение икса, которое требуется узнать. Вопрос, что дальше делать... В итоге-то получить должны члены a[i] для многочлена и значение функции для указанного ранее икса... |
|||
|
||||
achmed |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 12.4.2004 Репутация: нет Всего: нет |
получаешь набор многочленов, савокупность которых образует искомую функцию,
(т.е они образуют кусочную функцию), вычисляешь нужное значение в нужной точке, в чем прблема то ? |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
проблема в том, что я не совсем догоняю, как и что надо сделать и в каком порядке и интерполяции сплайнами...
|
|||
|
||||
podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
Рассмотрим на примере.
Предположим, ты хочешь знать значение несущей частоты радиосигнала. Известными методами (хоть БПФ даже) ты строишь график спектральной плотности мощности (СПМ) и ищешь, какой частоте соответствует максимум. Но вот беда: ограничение, связанное с реализацией метода измерений, позволяет оценить значение частоты с точностью только, скажем, до Гц. А позарез надо до 0.01 Гц, например. Что делаем? Уточняем значение частоты! Как? Интерполируем области между максимумом и двумя его соседями сплайном! Математически это выглядит так, что используется несколько исходных точек - узлов интерполяции. Среди них находится и наш грубо оцененный максимум, обозначим его как точка f[0]. Далее с использованием формул интерполяционных сплайнов (специального вида полином) вычисляем значения функции (у нас - СПМ) между узлами f[-1], f[0], f[1] с выбранным шагом (0.01). Ищем в полученном большом массиве максимум. Ему соответствует уточненное значение несущей частоты, которое мы искали. Вычислить его просто. Допустим, уточненный максимум - 16-й элемент массива отсчетов СПМ между узлами f[0] и f[1]. Тогда уточненное значение частоты для нашего случая равно f[0] + 0.01*16. |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
podval, а кодом не намекнешь простым ??
А то на alglib.manual.ru хрен поймешь. Код аж на три страницы... |
|||
|
||||
df_3 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 19.5.2003 Репутация: нет Всего: 1 |
в Maple могу подогнать тебе дай адрес
-------------------- ИЗ ВСЕХ ВОЗМОЖНОСТЕЙ НА ЗЕМЛЕ САМАЯ ЯРКАЯ - ЭТО ЖИЗНЬ! |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Mal Hack
Чего тебе код потребовался? Смотри. Есть у тебя груда точек: x1, x2, x3, .... xN. Допустим используем интерполяцию сплайнами порядка 2 - квадратичными (в общем случае сплайны не обязаны быть полиномиальными - то есть под словом "порядок" мы будем понимаем уменьшенное на 1 количество коэффициентов в уравнении сплайна.). Возьмем первые 3 точки. Парабола, на которой они лежат - одна-единственная, и посчитать коэффициенты квадратного трехчлена (те самые твои a[i]), на графике которого лежат эти 3 точки - пара пустяков. И теперь, когда эти коэффициенты посчитаны, мы можем посчитать значение этой сплайновой функции в любой промежуточной точке, которая нам нужна (том самом твоем иксе). Чем выше порядок сплайна - тем больше точек берется для расчета коэффициентов (скажем при кубическом сплайне - 4 точки). Фигня в том, что если искомый икс лежит между 2 и 3 точками, можно считать сплайн и интерполировать значение по точкам 1-3, а можно и по точкам 2-4... есссно получатся разные приближенные значения... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
Mal Hack
Действительно, там всё просто. Имеешь формулу сплайна - вперед. Просто сейчас нет времени копаться в старых архивах ![]()
Ты уверен? Не обращай внимание на "лишние" участки кода. В суть смотри. На http://algolist.manual.ru/maths/approx.php еще погляди. |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Вопрос такой: имеет ли значение какие сплайны я испоьзую (квадратичные или кубические) ?
Akina, вот смотри, юзер ввел три икса и три игрека. После этого мы сортируем все это дело так, чтоб самый большой икс - первый в массиве. Так ? Затем берем три точки и какие вычисления с ними проводим ? Это мы получим а[i] (3 штуки). Но как быть, если юзер ввел 5 иксов и 5 игреков. Тогда ведь нам надо пять а[i] найти... И потом по какой формуле вычисляется значение нужной точки ? Че-то я уже совсем запутался... |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Mal Hack
чего? почему 5? если юзер ввел 5 точек, то либо один сплайн 4 порядка, либо 2 сплайна 3 порядка (для точек 1-4 и для точек 2-5), либо 3 сплайна 2 порядка... скажем если квадратичные сплайны и требуется рассчитать функцию в иксе, который между 3 и 4 точками, то мы берем точки 2-4 (или 3-5), остальные отбрасываем, считаем по 3 точкам параболу, и по ней - значение функции. Как выбрать какая из двух троек лучше? по-разному... можно даже посчитать по обоим тройкам и взять среднее ![]() Это ещепростой вариант - нет условия неразрывности производных... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Akina, а мржешь прям по шагам объяснить что мне надо сделать и какие циклы, формулы, что вводить надо и т.п. А то я уже совсем запутался..
|
|||
|
||||
Therion |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 21.12.2003 Репутация: нет Всего: нет |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |