Построение Spline-моделей. Алгоритм определения коэффициентов кубического сплайна

Страницы работы

Содержание работы

Построение Spline моделей.

1D-Spline(теоретическая часть).

При большом количестве узлов интерполяции сильно возрастает степень интерполяционных многочленов, что делает их неудобными для проведения вычислений. Высокой степени многочленов можно избежать, разбив отрезок интерполирования на несколько частей, с построением в каждой части своего интерполяционного полинома. Такой метод называется интерполяцией сплайнами. Наиболее распространенным является построение на каждом отрезке [xi, xi+1], i=0..n-1 кубической функции.

Сплайн – это кусочно полиномиальная функция. Кубический сплайн на каждом из частичных отрезков [xi, xi+1] будет иметь вид:

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

Уравнения для определения коэффициентов  и можно получить из:

1.  Условия равенства значений интерполируемой функции и сплайна в узловых точках

2.  Сшивки на границах элементарных интервалов первых производных сплайнов

,                 (i = 1,2, …, n-1)

3.  Сшивки на границах элементарных интервалов вторых производных сплайнов

,   (i = 1,2, …, n-1)

4.  Условие «Свободного закрепления концов»

;                 ;

Использование данных условий и кубического сплайна приводит к следующей системе уравнений:

Где  - расстояние между соседними точками (шаг по x).

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

1.  Определение коэффициентов :

                             (i = 1, 2, …, n)

2.  Формирование матрицы коэффициентов и вектора свободных членов СЛАУ

- элементы главной диагонали

- элементы побочных диагоналей

- компоненты вектора свободных членов

3.  Решение СЛАУ относительно

                        (i = 2, 3, …, n)

И дополнение массива коэффициентов с элементом

4.  Расчет коэффициентов

              (i = 2, 3, …, n)

5.  Расчет коэффциентов

Построение одномерных сплайн моделей:

В данной работе использовалась программа Sensor modeling моделирующая зависимости выходного сигнала от температуры и давления(Рис. 1.):

Рис. 1. Используемая программа.

С помощью данной программы была рассчитана и построена температурная зависимость выходного сигнала (Рис. 2.):

Рис. 2. Зависимость выходного сигнала от температуры полученная в программе Sensor modeling.

Для получения одномерной сплайн модели использовались:

1.  Модуль Spline.cpp содержащий подпрограммы:

- SplineCoeff – расчет коэффициентов кубических сплайнов таблично заданной функции.

- LineProgon– решение СЛАУ методом прогонки

- Spline – вычисление значений функции в заданной точке на основе ее сплайн интерполяции

- SdxSpline – вычисление интеграла от табличной функции в заданных пределах на основе ее сплайн-интерполяции.

2.  Программа SPL1_001.cpp моделирующая сплайн функцию

3.  Программа Graphic2.cpp для расчета графика функции.

В результате использование данных программ была получена сплайн функция:

#include "define.h"

double s(double x)

{

// описание данных

int i,j,n;

double dx,Spl;

Vector X,A,B,C,D;

// точки интерполяции

n=5;

X[ 0]= 2.0000000E+02;

X[ 1]= 2.4000000E+02;

X[ 2]= 2.8000000E+02;

X[ 3]= 3.2000000E+02;

X[ 4]= 3.6000000E+02;

X[ 5]= 4.0000000E+02;

// коэфффициенты сплайнов

A[ 1]= 3.7784000E-01;  B[ 1]=-1.6093600E-03;

A[ 2]= 3.1741000E-01;  B[ 2]=-1.3135299E-03;

A[ 3]= 2.7400000E-01;  B[ 3]=-9.2452033E-04;

A[ 4]= 2.4076000E-01;  B[ 4]=-7.3713876E-04;

A[ 5]= 2.1473000E-01;  B[ 5]=-5.7217464E-04;

C[ 1]= 0.0000000E+00;  D[ 1]= 6.1631280E-08;

C[ 2]= 7.3957536E-06;  D[ 2]=-4.2218900E-08;

C[ 3]= 2.3294856E-06;  D[ 3]= 2.1306818E-10;

C[ 4]= 2.3550538E-06;  D[ 4]=-4.8833732E-09;

C[ 5]= 1.7690490E-06;  D[ 5]=-1.4742075E-08;

// определение номера интервала, в который попадает x

j=0;

for (i=1; i<=n; i++)

if ((x >= X[i-1])&&(x < X[i]))  j=i;

if   ((x >= X[n-1])&&(x <= X[n])) j=n;

if (j==0) return 0.0;

//  вычисление значения сплайна

dx=x-X[j-1];

Spl=A[j]+B[j]*dx+C[j]*dx*dx+D[j]*dx*dx*dx;

//  завершение

return Spl;

}

При использовании данной функции была полученная сплайн-интерполяция зависимости выходного сигнала от температуры (Рис. 3.):

Рис. 3. Сплайн-интерполяция зависимости выходного сигнала от температуры.

2D-Spline(теоретическая часть).

Для сплайн-интерполяции функции двух переменных область интерполяции разбивается прямоугольной сеткой с шагами  и  по осям  и , соответственно (Рис. 4.).

Рис. 4. Область сплайн-интерполяции с двумерной сеткой.

В каждом квадрате сетки работает бикубический сплайн, представляемый формулой

, где  .

Квадрат сетки, где работает , с тремя соседними квадратами укрупненно представлен на рис. 5.

Рис. 5. Фрагмент сетки вблизи точки с индексами i и j

Коэффициенты  кубического сплайна рассчитываются из условия непрерывности сплайна  и его первых и вторых производных в узлах сетки. Для i-го j-го узла они могут быть записаны следующим образом:

;

;

;

;

;

;

;

;

;

;

;

;

;

;

;

;

;

;                      

Всего – 18(m-1)(n-1) уравнений. Недостающие уравнения для определения 16mn коэффициентов сплайнов определяются из условий на границах области интерполяции.

Граничные условия:

1.  в граничных узлах сетки задаются значения первых частных производных по x и по y интерполируемой функции, а в угловых узлах – значения второй смешанной производной;

2.  в граничных узлах сетки задаются значения вторых частных производных по x и по y интерполируемой функции, а в угловых узлах – значения второй смешанной производной;

3.  требуют, чтобы сплайн был периодической функцией с периодом  по переменной  и с периодом  по переменной ;

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

Построение двумерных сплайн моделей:

Использовалась программа Sensor modeling позволяющая смоделировать зависимость выходного сигнала от температуры и давления (рис. 1.).

С помощью программы мы получили набор точек описывающий характер данной зависимости (Рис. 6.)

Рис. 6. Зависимость выходного сигнала от температуры и давления.

Для получения двумерной сплайн модели использовались:

1.  Модуль Spline2D.cpp содержащий подпрограммы:

- Spline2dCoeff – расчет коэффициентов кубических сплайнов таблично заданной функции.

- Progon3– решение СЛАУ методом прогонки

- Spline2d – вычисление значений функции в заданной точке на основе ее сплайн интерполяции

- Spline1d – построение одномерного интерполяционного кубического сплайна

2.  Программа main1.cpp для построения двумерной сплайн модели

3.  Программа main2.cpp расчет коэффициентов сплайн-интерполяции и вывод в фаил сплайн модели

4.  Программа main3.cppдля расчета графика функции.

В результате использование данных программ была получена сплайн функция которая использовалась для построения зависимости выходного сигнала от температуры и давления (Рис.7.):

Рис. 7. Двумерная сплайн-интерполяция зависимости выходного сигнала от температуры и давления.

Похожие материалы

Информация о работе

Предмет:
Моделирование
Тип:
Отчеты по лабораторным работам
Размер файла:
236 Kb
Скачали:
0