Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Сплайны. ⇐ ПредыдущаяСтр 4 из 4
Если функция имеет много локальных максимумов и точек перегиба, то часто интерполирование ее по точкам бывает неудовлетворительным. Поэтому появились методы кусочной или многоинтервальной интерполяции. Они заключаются в том, что значение функции , определяется в ряде промежуточных узлов [a, b], [b, c] и т.д. на широком интервале с помощью полиномов невысокой степени (1, 2 или 3 порядка). Использование полиномов высокой степени на всем выбранном интервале приводит к большему объёму вычислений и не обеспечивает высокой точности. Наиболее распространенны: 1. Применение кусочно – линейной интерполяции при равномерном расположении узлов. Имеем: шаг и , для функции . Вычисление функции где . Обычно степень полинома росла вместе с ростом числа узлов, здесь она неизменна. Уменьшение монотонно снижает погрешность интерполяции, но массив растёт. Формула неизменна. 2. Квадратичная интерполяция – требует чётного числа парных интервалов (n – чётное число). Имеем: , - шаг, и массив . Если использовать формулу Лагранжа для трёх ординат, то получим где и +1 В узлах i значения y(x) и совпадают. 3. Кубическая интерполяция (также локальная) - это интерполяция полиномом третьей степени. где , - первые производные y(x). Производные могут вычисляться с помощью формул численного дифференцирования по трём точкам: Значения можно вычислить и запасти в массив. У кубичного локального сплайна обеспечивается непрерывность нулевой и первой производных. Поэтому они не учитывают точек перегиба и не обеспечивают совпадения по кривизне в узловых точках. Далее приведены примеры использования функций MATLAB с расчетом сплайна для таблицы и для функции (splayn_tabl.m, splayn _fun.m) function splayn_tabl x = -4: 4; y = [0.15 1.12 2.36 2.36 1.46.49.06 0]; cs = spline(x, [0 y 0]); xx = linspace(-4, 4, 101); plot(x, y, 'o', xx, ppval(cs, xx), '-') function splayn_fun x = 0: 10; y = sin(x); xx = 0:.25: 10; yy = spline(x, y, xx); plot(x, y, 'o', xx, yy)
|