1 / 1 / 0
Регистрация: 25.12.2012
Сообщений: 33
|
|
1 | |
Интерполяция сплайнами20.03.2013, 22:29. Показов 10046. Ответов 11
Метки нет (Все метки)
Люди добрые , нужна помощь , препод поставил задачу сделать программу которая будет вычислять интерполяцию сплайнами и стоить график ... но беда в том что я пролежал в больнице всю эту тему, и не чего не понял из того что читал сам
Если есть у кого исходник или может наклепать , да так что бы работало , выручите пожалуйста , иначе капец моей летней сессии , надеюсь кто нибудь да поможет если кто поможет, отпишитесь тут
0
|
20.03.2013, 22:29 | |
Ответы с готовыми решениями:
11
Аппроксимация кривых сплайнами. Форма В-Сплайнов субтабулирование функции (интерполяция) Кто делал программу интерполирование кубическими сплайнами? Интерполяция |
22.03.2013, 09:07 | 2 |
Интерполяция сплайнами - тема весьма объемная.
Есть готова процедура для сплайнов Эрмита - нужно? Добавлено через 3 минуты Да, кстати, еще книжка есть электронная по теме - Шишкин, Плис, Кривые и поверхности на экране компьютера.
0
|
130 / 54 / 27
Регистрация: 13.03.2013
Сообщений: 162
|
|
22.03.2013, 09:19 | 3 |
Пыталась недавно объяснить однокурсникам. Копипаста того объяснения.
Возможно, мой алгоритм действий не самый лучший, но так как я расписала его на бумаге, то перенесу и сюда. Может быть поможет разобраться (а может и запутает) Очень рекомендую посмотреть учебник. Там все поподробнее расписано, чем было на уроке и есть пример. 1) Задать массивы X [0..n] и Y [0..n] и записать в них значения точек 2) Массив H [1..n] заполнить значениями по формуле H[i]:=X[i]-X[i-1] --Ищем коэффициенты C[i] 3) Заполнить матрицу, которую в дальнейшем придется решать методом Гаусса по принципу как на картинке. Система уравнений вычисляется по формуле: H[i+1]*C[i+1]+2(H[i]+H[i+1])*C[i]+H[i]*C[i-1]=3*((Y[i+1]-Y[i])/H[i+1]-[Y[i]-Y[i-1])/H[i]) Ох, как она здесь страшно смотрится >.< Формулы есть в учебнике, если что. 224 страница _ От i:=1 до n ___От j:=1 до n-1 _____если j=i-1 тогда _____Матрица[i,j]:=H[i] иначе если j=i тогда _____Матрица[i,j]:=2*(H[i]+H[i+1]) иначе если j=i+1 тогда _____Матрица[i,j]:=H[j] иначе _____Матрица[i,j]:=0 _От i:=1 до n ___Матрица-Столбец[i]:=3*((Y[i+1]-Y[i])/H[i+1]-(Y[i]-Y[i-1])/H[i]) Ну и ответ, полученный методом Гаусса в массив C [0..n] (C[0] и C[n] должны быть равны 0) --Теперь проще: ищем коэффициенты D[i] 4) От i:=1 до n ____D[i]:=(C[i]-C[i-1])/3*H[i] --Коэффициенты B[i] 5) От i:=1 до n ____B[i]:=(Y[i]-Y[i-1])/H[i]+H[i]*C[i]-H[i]*H[i]*D[i] 6) Для построения графика или нахождения переменной нужно определить, попадает ли она в промежуток от Хo до Xn, а также, в какой именно промежуток. Для этого можно ввести переменную k и присвоить ей для начала значение -1 (это будет индикатором того, что искомая точка не входит в промежуток (Хо; Хn) k:=-1 _Oт i:=1 до n ____если ((x>=X[i-1]) AND (x<=X[i])) тогда ____k:=i И тогда значение у от искомого х будет высчитываться по формуле t:=x-X[k] (просто для удобства, дабы формула была не такой громоздкой) y:=Y[k]+B[k]*t+C[k]*t*t+D[k]*t*t*t Поясняющие картинки: Формулы взяты из учебника "Численные методы" Лапчик, Рагулина, Хеннер (P.S. Тут синтаксис паскаля, но, надеюсь общий смысл понятен)
0
|
1 / 1 / 0
Регистрация: 25.12.2012
Сообщений: 33
|
|
22.03.2013, 16:18 [ТС] | 4 |
Да , не помешало бы .
Добавлено через 37 секунд Erea, спасибо буду разбираться .
0
|
1 / 1 / 0
Регистрация: 25.12.2012
Сообщений: 33
|
|
25.03.2013, 15:57 [ТС] | 6 |
0
|
25.03.2013, 16:14 | 7 | ||||||||||||||||||||
Успел
Значит, так. Я буду кидать куски кода, потом сам слепишь. Работает класс TInterpolator1D.
TPoint_Float - двумерная точка с иском и игреком. ADerivative1, ADerivative2: Double - производные. Добавлено через 1 минуту GetValueIn в нашем случае можно считать GetErmith.
0
|
1 / 1 / 0
Регистрация: 25.12.2012
Сообщений: 33
|
|
25.03.2013, 16:28 [ТС] | 8 |
dondublon, спасибо , начну разбираться !
0
|
0 / 0 / 0
Регистрация: 14.05.2020
Сообщений: 12
|
|
21.05.2020, 13:01 | 9 |
Здравствуйте! Где найти класс TInterpolator1D?
0
|
0 / 0 / 0
Регистрация: 14.05.2020
Сообщений: 12
|
|
21.05.2020, 14:40 | 11 |
Начиная с Коструктора?
0
|
Модератор
|
|
21.05.2020, 15:09 | 12 |
Нет, начиная с описания класса. Конструктор - не более чем один из методов класса...
1
|
21.05.2020, 15:09 | |
21.05.2020, 15:09 | |
Помогаю со студенческими работами здесь
12
Интерполяция по Ньютону Delphi - Аппроксимация. Интерполяция? Интерполяция многочленом Лагранжа Интерполяция для изображений Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |