Выбор интерполирующей функции к заданной и ее построение

Автор работы: Пользователь скрыл имя, 22 Мая 2015 в 15:10, курсовая работа

Описание работы

Пусть на отрезке задано N точек , которые называются узлами интерполирования, и значения некоторой функции в этих точках: . Нужно построить функцию ( функцию, которая интерполирует), которая совпадала бы с в узлах интерполяции и приближала ее между ними, то есть такую, что . Геометрическая интерпретация задачи интерполяции состоит в том, что нужно найти такую кривую некоторого вида, что проходит через заданную систему точек С помощью этой кривой можно найти приближенное значение , де Задача интерполяции становится однозначной, если вместо произвольной функции искать многочлен степени не выше , который удовлетворяет условия:

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

Постановка задачи.
1. Введение.
2. Теоретическая часть.
3. Практическая реализация:
3.1 Программа на языке Pascal.
3.2 Решение в Excel.
4. Выводы.
Список использованной литературы.

Файлы: 1 файл

курс.doc

— 515.50 Кб (Скачать файл)

 

 

Практическая реализация

 

Программа на языке Pascal

В процессе выполнения работы мною была написана программа EITKIN на языке Pascal.

В данной программе есть два массива: одномерный массив X, в нем хранятся значения узлов интерполирования хi и двумерный массив Р, в нем хранятся значения многочленов степени не выше n, переменная z это, то значение для которого надо найти значение функции, n – количество узлов интерполирования. Все вычисления проводятся в одном встроенном цикле. Данные на экран выводятся в виде двухмерной матрицы.

 

Код программы:

 

program EITKIN;

uses wincrt, strings;

var x:array [1..60]of real;

p:array [1..60,1..60] of real;

z :real; i,j,n: integer;

begin

StrCopy(WindowTitle, 'Программа интерполяции функции по схеме Эйткина ');

clrscr;

write ('vvedite k-vo uzlov interpolirovanija n=');

readln (n);

write ('vvedite X dlja kotorogo nado najti znach func=');

readln (z);

writeln ('vvedite mas Xi');

for i:=1 to n do

begin

write ('vvedite elem X[',i,']=');

readln (x[i]);

end;

writeln ('vvedite mas Yi');

for i:=1 to n do

begin

write ('vvedite elem Y[',i,']=');

readln (p[1,i]);

end;

writeln ('PROCES VICHISLENIJA......');

for i:=2 to n do

begin

for j:=1 to n+1-i do

begin

p[i,j]:=1/(x[j+i-1]-x[j])*(p[i-1,j]*(x[j+i-1]-z)-p[i-1,j+1]*(x[j]-z));

end;

end;

writeln ('REZ MATRICA::::');

for i:=1 to n do

begin

write ('P^',i,'(',z:4:5,') | ');

for j:=1 to n+1-i do

begin

write (p[i,j]:4:5,' | ');

end;

writeln;

end;

writeln ('!!!!!!!!!OTVET!!!!!!!!!');

writeln ('y(',z:4:5,')=',p[n,1]:4:5);

readkey;

DoneWinCrt;

end.

 

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

Также для определения степени интерполирующего многочлена я написал программу konechn_razn.

Код программы:

 

program konechn_razn;

uses wincrt, strings;

var y:array [1..50,1..50] of real;

i,j,n: integer;

begin

StrCopy(WindowTitle, 'Программа построения  конечных разностей ');

clrscr;

write ('vvedite k-vo znachenij funcii n=');

readln (n);

writeln ('vvedite mas Yi');

for i:=1 to n do

begin

write ('vvedite elem Y[',i,']=');

readln (y[i,1]);

end;

writeln ('PROCES VICHISLENIJA......');

for j:=2 to n do

begin

for i:=1 to n+1-j do

begin

y[i,j]:=y[i+1,j-1]-y[i,j-1];

end;

end;

writeln ('REZ MATRICA::::');

writeln (' Yi | Dyi ');

for i:=1 to n do

begin

for j:=1 to n+1-i do

begin

write (y[i,j]:4:5,' | ');

end;

writeln;

end;

readkey;

DoneWinCrt;

end.

 

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

 

Решение в Excel

 

Для проверки вычислений я решил поставленную задачу в Excel по схеме Эйткина:

 

 

 

 

Также в целях проверки вычислений я решил данную задачу с помощью кубических сплайнов:

 

 

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

 

 

Выводы

 

Все многочлены, которые надо вичислить для данного х выражаются через определитель 2-го порядка, что делает вычисления единообразными. Схему Эйткина просто программировать.

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

Сопоставим исходные данные, у нас имеется 6 узлов интерполирования. По этим точкам можно построить интерполяционный полином, причем 5-й степени, привлекая к исследованию интерполяцию кубическим сплайном, утверждаю, что данным методом можно построить на каждом подинтервале полином 3-й степени. Последним словом в выборе между первым и вторым методом будут конечные разности на заданном множестве узлов. Конечные разности являются аналогом производной от функции. В данном случае конечные разности использованы для определения степени полинома и для определения полином данная функция или нет, с помощью которого можно максимально приблизить данную функцию.

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

 

Эйткин

 

x=

0,47

y=

0,45289


сплайн

 

x=

0,47

y=

0,45277


 

В результате вычисления значения функции в точке 0,47 видно что значения функции в искомой точке мало отличимые. То есть в данном случае можно применять оба метода.

Если взять точность вычисления до четвертого знака после запятой, то степень полинома по данным конечных разностей будет полином 3-й степени. Поскольку по схеме Эйткина строятся все полиномы степени не выше 6-й. И в этом случае лучше применять кубические сплайны.

 

 

Список использованной литературы

 

  1. Б. П. Демидович и И. А. Марон. “Основы вычислительной математики”, Москва, 1963г.
  2. Н.С.Бахвалов, Н.П.Жидков, Г.М.Кобельков. “Численные методы”, Москва, 1987г.
  3. Козин А. С., Лященко Н. Я. Вычислительная математика: Пособие для факультативных занятий в 10 классе.- К.: Рад. школа, 1983. – 191 с.
  4. Мусіяка В. Г. Основи чисельних методів механіки: підручник. – К.: Вища освіта, 2004. – 240 с.: іл.
  5. Л. Д. Назаренко Чисельні методи. Дистанційний курс.

 

 

Приложение

 

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

 

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

 


 



Информация о работе Выбор интерполирующей функции к заданной и ее построение