ПОИСК Статьи Рисунки Таблицы Интерполяция с помощью сплайн-функции из "Компьютеры Применение в химии" Интерполяция с помощью сплайн-функции особенно эффективна для построения гладких интерполяционных кривых. Поэтому она часто используется в машинной графике. Возьмем опять п экспериментальных точек или точек, удовлетворяющих некоторой функции. При сплайн-интерполяции через каждые две соседние (сглаженные) точки проводят полином третьей степени. Разумеется, что по двум заданным точкам невозможно однозначно определить коэффициенты этого полинома, поскольку две точки однозначно определяют только полином первой степени (т. е. прямую). [c.267] Таким образом, для всех внутренних полиномов сформулированы и формализованы четыре условия, которые достаточны для построения этих полиномов. Если объединить эти условия, то получится система уравнений. [c.267] Эти п линейных уравнений с п неизвестными параметрами можно рещить с помощью программы для решения систем линейных уравнений. Если параметры к найдены, то сплайн-полиномы полностью заданы, и теперь для любого значения х можно рассчитать соответствующее интерполящюнное значение у. Сначала надо найти для данного значения соответствующий полином, т. е. определить, между какими узловыми точками лежит это значение х. Потом переходят от переменной х к переменной t и вычисляют значение полинома Р(лг). Рассмотренный алгоритм реализован в. программе СПЛАЙН , распечатка которой приведена ниже. [c.269] В этой программе число заданных точек, по которым вычисляются коэффициенты интерполяционных полиномов, не должно превышать 25. Поэтому максимальное число элементов одномерных массивов Х( ) и Y( ), элементы которых равны координатам заданных точек, и одномерных массивов Н( ), D( ) и К( ), используемых в программе для запоминания вспомогательных величин, равно 25. Максимальный порядок системы линейных уравнений равен, таким образом, 25, и двухмерный массив А( ), соответствую-ший расширенной матрице системы, имеет наибольший размер 25 X 26. [c.271] В строках 1100—1400 вводятся координаты п точек, которые присваиваются элементам массивов Х( ) и ( ). На участке программы от строки 1500 до строки 1800 входные данные сортируются в порядке возрастания значений х в соответствии с рассмотренной выше процедурой сортировки данных. Это особенно удобно для экспериментальных данных, поскольку их не всегда получают уже упорядоченными. [c.272] В цикле, занимающем строки 2000—2300, рассчитывается п вспомогательных величин 0(1) и Н(1), соответствующих величинам (1 и h в уравнении (6). В следующих строках (5000—7500) в соответствии с линейными уравнениями (9) и (10) вычисляются элементы расширенной матрицы системы. В строках 5000, 5100 и 5200 по уравнению (10) рассчитываются элементы первой и п-й строк матрицы. С помощью цикла в строках 6000—7200 по уравнению (9) вычисляются элементы (л — 2) строк матрицы. [c.272] После того как вычислены все элементы расширенной матрицы системы, в строке 80(Ю вызывается подпрограмма для решения системы линейных уравнений. После преобразования расширенной матрицы системы решение — значения параметров к — находится в ее (п + 1)-м столбце. [c.272] Поскольку теперь все параметры вычислены, можно вводить значения х, для которых рассчитываются интерполированные значения у. Это происходит в строке 10000. [c.272] В приведенном примере заданы 5 точек, лежащих достаточно близко к параболе. Значения сплайн-функции в узлах интерполяции совпадают с заданным, и интерполированные точки вполне достоверны. Лишь для одного значения х, лежащего за пределами заданной области, программа дает экстраполированное значение у, которое явно отклоняется от параболы. Поэтому для экстраполяции этой программой лучше не пользоваться. [c.273] Задание 162. Примените алгоритм сплайн и сглаживающий сплайн при составлении программы для численного дифференцирования. [c.273] Задание 163. Перепишите подпрограмму 50000, в которой использован метод Гаусса — Жордана, для решения системы линейных уравнений. Поскольку в данной задаче ненулевые элементы расширенной матрицы системы находятся только на главной диагонали и на двух соседних диагоналях, вместо этой матрицы размера Nx(N + 1) можно использовать матрицу А размера Nx4, три столбца для элементов трех диагоналей и один дая правых частей системы уравнений. [c.273] Вернуться к основной статье