Возможна ли разработка приложения на Octave с GUI? |
Обработка результатов эксперимента. Интерполяция функций
12.2 Интерполяция сплайнами
Рассмотрим один из наиболее распространённых вариантов интерполяции кубическими сплайнами. Было установлено [2], что недеформируемая линейка между соседними углами проходит по линии, удовлетворяющей уравнению
( 12.7) |
Функцию
будем использовать для интерполяции зависимости y(x), заданной на интервале (a, b) в узлах значениямиКубическим сплайном, интерполирующим на отрезке данную функцию , называется функция [2]
( 12.8) |
удовлетворяющая следующим условиям:
- (условие интерполяции в узлах сплайна);
- функция дважды непрерывно дифференцируема на интервале ;
- на концах интервала функция должна удовлетворять следующим соотношениям .
Для построения интерполяционного сплайна необходимо найти коэффициента
Из определения сплайна получаем соотношение (12.9)
( 12.9) |
Из условий гладкой стыковки звеньев сплайна (во внутренних узловых точках совпадают значения двух соседних звеньев сплайна1Звеном сплайна называется функция на интервале , их первые и вторые производные) получаем ещё ряд соотношений (12.10–12.11) [2]:
( 12.10) |
( 12.11) |
Соотношения (12.9)–(12.11) образуют соотношений для нахождения коэффициентов сплайна. Подставляя выражения функций (12.8) и их производных (12.12)
( 12.12) |
в соотношения (12.9)–(12.11) и принимая во внимание соотношение
( 12.13) |
получим следующую систему уравнений (12.14)–(12.20)
( 12.14) |
( 12.15) |
( 12.16) |
( 12.17) |
( 12.18) |
( 12.19) |
( 12.20) |
Задача интерполяции свелась к решению системы (12.14–12.20). Из соотношения (12.15) следует, что все коэффициенты . Подставив соотношения (12.14), (12.15) в (12.16) и используя фиктивный коэффициент , получим соотношение между и
Отсюда коэффициенты b k вычисляются по формуле
( 12.21) |
Из (12.18) и (12.19) выразим через (с учётом коэффициента )
( 12.22) |
Подставим (12.22) в (12.21)
( 12.23) |
Введём обозначение
( 12.24) |
после чего соотношение (12.23) примет вид:
( 12.25) |
Подставим (12.25) и (12.22) в соотношение (12.17), получим систему относительно
( 12.26) |
( 12.27) |
Систему (12.26) можно решить, используя метод прогонки (http://ru.wikipedia.org/wiki/Метод_прогонки). Этот метод сводится к нахождению прогоночных коэффициентов по формулам прямой прогонки
( 12.28) |
( 12.29) |
а затем к нахождению искомых коэффициентов по формулам обратной прогонки
( 12.30) |
После нахождения коэффициентов по формуле (12.30), находим и по формулам (12.22), (12.25).
Таким образом, алгоритм расчёта коэффициентов интерполяционного сплайна можно свести к следующим шагам.
Шаг 1. Ввод значений табличной зависимости , массивов и .
Шаг 2. Расчёт элементов массивов и по формулам (12.13) и (12.25).
Шаг 3. Расчёт массивов прогоночных коэффициентов δ и λ по формулам (12.28), (12.29).
Шаг 4. Расчёт массивов коэффициентов по формуле (12.30).
Шаг 5. Расчёт массивов коэффициентов по формуле (12.25).
Шаг 6. Расчёт массивов коэффициентов по формуле (12.22).
После этого в формулу (12.8) можно подставлять любую точку и вычислять ожидаемое значение.
Расчёт коэффициентов кубического сплайна очень громоздкий и зачастую на практике вместо кубического сплайна используется линейная интерполяция (линейный сплайн). Использование линейного сплайна оправдано в случае, если необходимо просто вычислить значение в определённых точках и нет требования непрерывности производных интерполяционной функции.
В случае линейной интерполяции в качестве сплайна выступает линейная функция
( 12.31) |
удовлетворяющая условию интерполяции в узлах сплайна . Коэффициенты и в этом случае рассчитываются по формулам (12.32), которые получаются из уравнения прямой,проходящей через две точки с координатами
.( 12.32) |
Найдя коэффициенты линейного сплайна, можно рассчитать значения в любой точке интервала . Линейная интерполяция даёт достаточно хорошие результаты при практическом счёте внутри интервала , когда от получаемой функции не требуют дополнительных свойств (дифференцируемости и т.д.).
Напряжение , В | 132 | 140 | 150 | 162 | 170 | 180 |
Мощность , Вт | 330 | 350 | 385 | 425 | 450 | 485 |
Рассмотрим реализацию сплайн-интерполяции в Octave. Это можно сделать запрограммировав рассмотренные выше методы сплайн-интерполирования или воспользовавшись функцией, где — массив абсцисс экспериментальных точек, — массив ординат экспериментальных точек, — точки, в которых необходимо вычислить значение с помощью сплайна, — определяет метод построения сплайна, для реализации сплайн-интерполяции параметр может принимать одно из следующих значений: ’linear’ — линейная интерполяция, ’spline’ — кубический сплайн.
Рассмотрим несколько практических задач.