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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



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

 

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

, , ;

, , ;

.

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

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

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

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

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

 

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

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

 

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

.

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

.

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

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

 

Программа

#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; просмотров: 536; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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