ТОП 10:

Нахождение коэффициентов интерполяционного



Параболического сплайна

 

Из определения интерполяционного параболического сплайна вытекает система линейных уравнений размерности относительно неизвестных , и , . Эта система линейных уравнений имеет единственное решение, если все узлы сетки различны. Система линейных уравнений легко решается, и мы можем записать следующие явные формулы для нахождения коэффициентов , и :

, , ;

, , ;

.

Отметим, что мы привели формулы для случая левого краевого условия . Для правого краевого условия формулы записываются аналогично.

Теорема (оценка погрешности). Пусть . Тогда для любой точки справедлива следующая оценка погрешности: ,

где , положительная константа не зависит от .

Из оценки погрешности вытекает, что при уменьшении равномерного шага в два раза погрешность интерполяции параболическим сплайном уменьшается в восемь раз.

Производная интерполяционного параболического сплайна – это непрерывная кусочно-линейная функция, то есть линейный сплайн: , , . Отметим, что производная интерполяционного сплайна – это сплайн, который не является интерполяционным.

 

Нахождение значений интерполяционного параболического сплайна

И его производной

 

Как и в случае линейного сплайна, сначала находим номер отрезка, содержащего точку , по формуле . Зная все коэффициенты , , и номер отрезка, находим значение интерполяционного параболического сплайна в точке , принадлежащей отрезку ,

.

Как и для линейного сплайна, введем дополнительные коэффициенты: , , . Эти коэффициенты потребуются для вычисления и в точке . Значение производной интерполяционного параболического сплайна в точке , принадлежащей отрезку , вычисляется по формуле

.

Сложность вычислительного алгоритма построения интерполяционного параболического сплайна. Число арифметических действий, необходимых для построения интерполяционного параболического сплайна, пропорционально числу отрезков ( ), объем памяти также пропорционален числу отрезков ( ).

Пример. Приведем текст программы, которая по интерполяционной таблице и левому краевому условию строит интерполяционный параболический сплайн и его производную. Интерполяционная таблица строится на отрезке , с равномерным шагом , где . Узлы сетки вычисляются по формуле , где , , значения находятся по формуле Задано краевое условие . На печать выдаются значения интерполяционного параболического сплайна и функции производной интерполяционного параболического сплайна и производной функции в точке .

 

Программа

#include <stdio.h>

#include <conio.h>

#include <math.h>

 

float A,B; //границы отрезка

 

float Xi[21],Yi[21]; //интерполяционная таблица

float Ai[21],Bi[21],Ci[21]; //коэффициенты ai, bi, ci

float h; //шаг сетки

float n; //число отрезков

float d1;

 

//Функция sin(x)

float fn (float x) { return (sin(x)); }

 

//Производная функции sin(x)

float fsh (float x) { return (cos(x)); }

 

//Вычисление значений сплайна S(x)

float Sx (float x)

 

{

int i=int((x-A)/h);

return Ai[i]+Bi[i]*(x-Xi[i])+Ci[i]*(x-Xi[i])*(x-Xi[i]);

}

 

//Вычисление значений производной сплайна

float Sshx (float x)

 

{

int i=int((x-A)/h);

return Bi[i]+2*Ci[i]*(x-Xi[i]);

}

 

void main()

{

clrscr();

float Ti=0; //вспомогательная переменная ti

 

 

//Инициализация начальных значений

A=0; B=2; //отрезок [0,2]

n=20; //число отрезков n

h=float(B-A)/n; //шаг

d1=1;

//Создание интерполяционной таблицы

for(int i=0;i<=n;i++)

 

{

Xi[i] = A+i*h;

Yi[i] = fn(Xi[i]);

}

 

 

//Находим коэффициенты сплайна ai, bi, ci

//Расчет коэффициентов ai

for(i=0;i<=n;i++) Ai[i]=Yi[i];

 

//Расчет коэффициентов Bi и ci

Bi[0]=d1;

for(i=0;i<=n-2;i++)

{

Bi[i+1]=2*(Yi[i+1]-Yi[i])/h-Bi[i];

Ci[i]=(Bi[i+1]-Bi[i])/(2*h);

}

Ci[n-1]=((Yi[n]-Yi[n-1])/(h*h))-Bi[n-1]/h;

Ci[n]=Ci[n-1];

Bi[n]=Bi[n-1]+2*Ci[n-1]*h;

 

//Вывод результатов на печать

 

printf("Значение функции f в точке x=%.2f равно %.5f\n",0.15,fn(0.15));

printf("Значение сплайна P в точке x=%.2f равно %.5f\n",0.15,Sx(0.15));

printf("Значение производной функции f' в точке x=%.2f равно

%.4f\n",0.15,fsh(0.15));

printf("Значение производной сплайна P' в точке x=%.2f равно

%.4f\n",0.15,Sshx(0.15));

getch();

 

}

Результат работы программы

 

Значение функции f в точке x=0.15 равно 0.14943

Значение сплайна P в точке x=0.15 равно 0.14945

Значение производной функции f'в точке x=0.15 равно 0.9887

Значение производной функции P'в точке x=0.15 равно 0.9883

 

2.3. Интерполяционный кубический сплайн

 

Наиболее часто на практике используется интерполяционный кубический сплайн. Кубический сплайн - это дважды непрерывно дифференцируемая функция, состоящая из «кусочков» полиномов третьей степени. Обозначим кубический сплайн. Для каждого из отрезка

,

где , , и - числовые коэффициенты. Таким образом, на каждом отрезке , четыре неизвестных коэффициента: , , и , а на всем отрезке число неизвестных коэффициентов равно . Следовательно, нам требуется уравнений.

Так как является интерполяционной функцией, то уравнения получаем из условий , . Во всех внутренних узлах сетки (число внутренних узлов равно ) функция должна быть непрерывной, непрерывно дифференцируемой и дважды непрерывно дифференцируемой функцией. Таким образом, три условия в каждой внутренней точке, в итоге условий. В сумме получаем линейных уравнений. Два недостающих условия – это краевые (граничные) условия. Для кубических сплайнов рассматриваются четыре типа краевых условий, в дальнейшем мы будем рассматривать краевое условие вида

.

Определение. Кубический сплайн, удовлетворяющий краевым условиям , называется естественным кубическим сплайном.

Сформулируем определение естественного интерполяционного кубического сплайна.

Определение естественного интерполяционного кубического сплайна. Пусть на отрезке задана сетка , в узлах которой заданы значения , . Естественным интерполяционным кубическим сплайном называется функция , удовлетворяющая следующим условиям:

1) функция – дважды непрерывно дифференцируемая функция на ;

2) на каждом из отрезков функция является полиномом третьей степени вида

, ;

3) функция – интерполяционная функция, то есть: , ;

4) краевым условиям .

Отметим, что, отбросив условие три, мы получаем определение естественного кубического сплайна.

Пример. Функция

является естественным кубическим сплайном, определенным на отрезке . Эта же функция является естественным интерполяционным кубическим сплайном, удовлетворяющим следующей интерполяционной таблице:

 

 

Пример программы, которая по интерполяционной таблице строит естественный интерполяционный кубический сплайн, приводится в примере выполнения задания 2 расчетно-графического задания 1.

Теорема существования и единственности. Пусть на отрезке задана интерполяционная таблица , , причем все узлы сетки различны ( при ). Тогда существует единственный естественный кубический сплайн такой, что .

Другими словами, если задана интерполяционная таблица, в которой все узлы сетки различны, то существует единственный естественный интерполяционный кубический сплайн, удовлетворяющий этой таблице.

 







Последнее изменение этой страницы: 2017-02-07; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.233.239.102 (0.012 с.)