Методы интерполяции
Сущность и главные задачи интерполяции. Общая характеристика и принципы работы четырех методов интерполирования: Лагранжа, Эйткена, Ньютона и метод кубических сплайнов. Графическое представление работы рассмотренных методов с помощью функции graphic.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 26.06.2013 |
Размер файла | 187,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Федеральное агентство связи
Государственное образовательное учреждение
Высшего профессионального образования
«Сибирский государственный университет
телекоммуникаций и информатики»
Кафедра: ПМ и К
Курсовая работа
по теме: Методы интерполяции
Выполнил: студент гр. ИП-11
Пакичев А.И.
Проверил: Доцент
Рубан А. А.
Новосибирск, 2013
Содержание
1. Введение
2. Методы интерполяции
2.1 Формула Лагранжа
2.2 Формула Эйткена
2.3 Формула Ньютона
2.4 Метод кубических сплайнов
3. Графическое представление
1. Введение
интерполяция метод графический
Интерполяция -- способ нахождения промежуточных значений величины по имеющемуся дискретному набору известных значений.
Задачи интерполяции: научиться вычислять значение функции в любой наперед заданной точке.
Интерполяция иногда делится на два вида:
1) - собственная интерполяция.
2) - экстраполяция.
В данной работе я бы хотел продемонстрировать принципы работы четырех методов интерполирования: Метод Лагранжа, Метод Эйткена, Метод Ньютона и Метод кубических сплайнов.
2. Методы интерполяции
2.1 Метод Лагранжа
Интерполяционный многочлен Лагранжа -- многочлен минимальной степени, принимающий данные значения в данном наборе точек. Для пар чисел , где все различны, существует единственный многочлен степени не более , для которого .
В простейшем случае () -- это линейный многочлен, график которого -- прямая, проходящая через две заданные точки.
Лагранж предложил способ вычисления таких многочленов:
где базисные полиномы определяются по формуле:
обладают следующими свойствами:
· являются многочленами степени
·
· при
Отсюда следует, что , как линейная комбинация , может иметь степень не больше , и
Код метода:
double p(double X,int n) // В качестве входных параметров используется
{ // double X - переменная относительно которой
double result=0,temp=1; // Нужно найти f(x), а также int n - количество
for (int i=0;i<=n;i++) // точек интерполяции. Матрицы x[], y[] заданы
{ // глобально.
for (int j=0;j<=n;j++)
if (i!=j)
temp*=(X-x[j])/(x[i]-x[j]);
result+=temp*y[i];
temp=1;
}
return result;
}
2.2 Метод Эйткена
Итерационно-интерполяционный метод Эйткена позволяет свести вычисления коэффициентов интерполяционного полинома Лагранжа, с учетом его равенства в узлах интерполяции с исходными данными к вычислению функциональных определителей второго порядка. При этом эффективность метода повышается в тех случаях, когда нет необходимости в получении приближенного аналитического выражения функции f(х), заданной таблично, а требуется лишь определить значение в некоторой точке х*, отличной от узловых точек. Этот метод заключается в последовательной линейной интерполяции. Процесс вычисления f(x*) состоит в следующем: необходимо пронумеровать узлы интерполяции, например, в порядке убывания их от х*. Затем для каждой узловой точки интерполяции строятся соотношения, которые является интерполяционными полиномами, построенными соответственно по узлам хi, хj, хk. Полученный полином является интерполяционным полиномом, построенный по узлам хi, xj, …, хk, хm. Это утверждение верное, так как Рn-1ij…k(х) и Рn-1j…km(x) являются интерполяционными полиномами. При его реализации предполагается, что функция гладкая, а также критерием оценки погрешности определяется некоторое значение, определяемое условиями конкретной задачи.
Код метода:
Double P(double X,int n) // В качестве входных параметров используется
{ // double X - переменная относительно которой
float l[n+1],result; // Нужно найти f(x), а также int n - количество
for (int i=0;i<=n;i++) // точек интерполяции. Матрицы x[], y[] заданы
l[i]=y[i]; // глобально.
for (int i=1;i<=n;i++)
for (int j=1;j+i<=n;j++)
{
l[j]=(l[j]*(x[i+j]-X)-l[j+1]*(x[j]-X))/(x[i+j]-x[j]);
result=l[j];
}
return result;
2.3 Метод Ньютона
Формула Ньютона:
где
Конечной разностью функции у=f(х) называется функция , где h - фиксированный шаг. Конечные разности иногда называются конечными разностями первого порядка.
Функция обозначается:
Принимаем
В программе для подсчета конечных разностей мы используем следующую функцию:
double Delta(double X, int n, double h) //Где n - порядок, h - шаг
{
if (n>1)
return (Delta(X+h,n-1,h)-Delta(X,n-1,h));
else
return (f(X+h)-f(X));
}
Код программы:
double Pn(double X, int h, int n) // В качестве входных параметров используется
{ // double X - переменная относительно которой
double result=y[0],qq,q; // Нужно найти f(x), а также int n - количество
q=(X-x[0])/h; // точек интерполяции. Матрицы x[], y[] заданы
for (int i=1;i<=n;i++) // глобально.
{
qq=1;
for (int j=1;j<=i;j++)
qq*=(q-j+1);
result+=Delta(x[0],i,h)*qq/fact(i);
}
return result+1;
}
{
float l[n+1],result;
for (int i=0;i<=n;i++)
l[i]=y[i];
2.4 Метод кубических сплайнов
Кубическим сплайном на сетке x0,x1,…xn называется функция S(х), которая обладает следующими свойствами:
на каждом интервале [хi-1, хi], где 1 i n, функция S(х) является кубическим многочленом (на каждом интервале свой многочлен).
на всем интервале [х0, хп] S(х) - дважды непрерывно дифференцируемая функция
на краях интервала вторая производная обращается в ноль (краевое условие).
Sґґ(x0)=Sґґ(xn)=0
3'. для периодических кубических сплайнов.
Sґґ(x0)=Sґґ(xn)=0 ; Sґ(x0)=Sґ(xn)=0
CM=d
Элементы матрицы С вычисляются по формуле:
, () - вектор правых частей.
Код программы:
const int n = 5;
double x[n];
double y[n];
float C[n-1][n-1];
float Cd[n-1][n];
double S(double X, int n)
{
int i,j;
float S,k1,k2,k3,k4;
float h[n],d[n-1],M[n+1],G[n-1];
for (i=0;i<n;i++)
h[i]=x[i+1]-x[i];
for (i=1,j=0;i<n;i++,j++)
d[j]=((y[i+1]-y[i])/h[i])-((y[i]-y[i-1])/h[i-1]);
for (i=0;i<n-1;i++)
for (j=0;j<n-1;j++)
{
if (i==j)
C[i][j]=(h[i]+h[i+1])/3;
if (j==i+1)
C[i][j]=h[i+1]/6;
if (j==i-1)
C[i][j]=h[i]/6;
if (fabs(i-j)> 1)
C[i][j] = 0;
}
for (i=0;i<n-1;i++)
for (j=0;j<n-1;j++)
Cd[i][j]=C[i][j];
for (i=0;i<n-1;i++)
Cd[i][n-1]=d[i];
Gauss(G,n-1);
for (i=0;i<n-1;i++)
M[i+1]=G[i];
i=3;
k1=M[i-1]*(pow((x[i]-X),3)/(6*h[i-1]));
k2=M[i]*(pow((X-x[i-1]),3)/(6*h[i-1]));
k3=(y[i-1]-((M[i-1]*h[i-1]*h[i-1])/6))*((x[i]-X)/h[i-1]);
k4=(y[i]-((M[i]*h[i-1]*h[i-1])/6))*((X-x[i-1])/h[i-1]);
S=k1+k2+k3+k4;
return S;
}
Для вычисления матрицы М используется метод гаусса отдельная функция Gauss:
void Gauss(float *y, int N)
{
int i, j, k;
float temp;
for (j=0;j<N;j++)
{
for (i=j+1;i<N;i++)
{
temp=Cd[i][j]/Cd[j][j];
for (k=j;k<=N;k++)
Cd[i][k]-=Cd[j][k]*temp;
}
}
y[N-1]=Cd[N-1][N]/Cd[N-1][N-1];
for (i=N-2;i>=0;i--)
{
float summa=0;
for (j=N-1;j>i;j--)
summa+=y[j]*Cd[i][j];
y[i]=(Cd[i][N]-summa)/Cd[i][i];
}
}
3. Графическое представление
Для графического представления работы методов написана функция graphic (int n, int method)
void graphic(int n, int method)
{
float X, Y;
initwindow(1000,640);
line(500,0,500,640);//y
line(490,20,500,0);
line(510,20,500,0);
outtextxy(520,10,"y");
line(0,320,1000,320);//x
line(990,310,1000,320);
line(990,330,1000,320);
outtextxy(985,330,"x");
X=-100;
moveto(500+X*20,160+(160-(Y*3)));
setcolor(4);
for (int i=0;i<=n;i++) //Отмечаем на графике заданные точки интерполяции
circle(500+x[i]*20,160+(160-(y[i])),5);
setcolor(10);
do
{
if (method==0) //Выбираем метод
{
Y=p(X,4);
outtextxy(520,850,"Lagranj");
}
if (method==1)
{
Y=P(X,4);
outtextxy(520,850,"Eytkin");
}
if (method==2)
{
Y=Pn(X,1,4);
outtextxy(520,850,"Newton");
}
if (method==3)
{
Y=S(X,n); // С помощью определенного метода находим y для
outtextxy(520,850,"Splayn"); // Заданного x
}
lineto(500+X*20,160+(160-(Y))); //И проводим к точке (x,y) линию от предыдущей точки
X=X+0.02;
}
while(X<=100);
getch();
closegraph();
}
Таким образом, например, для метода Лагранжа и значений точек интерполяции:
x[0]=1; x[1]=2; x[2]=3; x[3]=4; x[4]=5;
y[0]=1; y[1]=4; y[2]=9; y[3]=16; y[4]=25;
Получаем график функции:
Размещено на Allbest.ru
...Подобные документы
Понятие и характеристика некоторых методов интерполяции. Вычисление значения функции между заданными точками несколькими методами. Алгоритм линейной интерполяции. Алгоритм локальной интерполяции по формуле Лагранже. Инструкция пользования программой.
курсовая работа [186,5 K], добавлен 30.05.2015Назначение и возможности пакета MATLAB. Цель интерполирования. Компьютерная реализация решения инженерной задачи по интерполяции табличной функции различными методами: кусочно-линейной интерполяцией и кубическим сплайном, а также построение их графиков.
контрольная работа [388,3 K], добавлен 25.10.2012Сущность теории приближений и характеристика интерполяции как процесса получения последовательности интерполирующих функций. Полиномы Эрмита и интерполирование с кратными узлами. Программная разработка приложения по оценке погрешности интерполирования.
курсовая работа [1,1 M], добавлен 05.06.2014Постановка задачи в численной интерполяции. Интерполяционный многочлен Лагранжа. Интерполяционная формула Ньютона. Практическая реализация методов в среде MathCad. Операции с действительными и комплексными числами. Векторные и матричные операции.
курсовая работа [823,2 K], добавлен 13.10.2015Роль интерполяции функций в вычислительной математике. Реализация интерполирования функций полиномом Лагранжа в программном продукте MatLab. Интерполяционная формула Лагранжа. Интерполяция по соседним элементам, кубическими сплайнами. Анализ результатов.
курсовая работа [1,4 M], добавлен 10.06.2012Разработка программы, применяемой для интерполяции таблично заданной функции методом Ньютона. Метод структурного программирования для облегчения написания и отладки программы, повышения ее наглядности, читаемости. Применение языка программирования Pascal.
курсовая работа [371,8 K], добавлен 05.01.2010Исследование методов интерполяции функции и разработка программного продукта для автоматизации расчётов, выполняемых в данных методах. Обоснование выбора языка программирования. Требования к программе и программному изделию. Организация работы с ПЭВМ.
дипломная работа [2,1 M], добавлен 16.06.2017Интерполяция методом наименьших квадратов. Построение функции с применением интерполяционного многочленов Лагранжа и Ньютона, кубических сплайнов. Моделирование преобразователя давления в частоту в пакете LabVIEW. Алгоритм стандартного ПИД-регулятора.
курсовая работа [2,7 M], добавлен 20.04.2011Задача интерполирования алгебраическими многочленами. Рассмотрение интерполяционных формул Лагранжа и Ньютона. Расчет гиперболического синуса и создание демонстративной программы на Delphi 7, которая наглядно показывает достоверность решения методов.
курсовая работа [312,7 K], добавлен 10.08.2014Аналоговое и цифровое представление информации. Понятие, классификация и характеристика методов сжатия данных: алгоритмы одно- и двухпараметрической адаптации, линейной экстра- и интерполяции. Кодирование информации и вычисление циклического кода.
курсовая работа [157,4 K], добавлен 07.12.2012Построение интерполяционного полинома Ньютона по значениям функции в узлах согласно методу Лагранжа. Составление алгоритмов решения задачи, их реализация на программном уровне на языке Turbo Pascal. Представление результатов работы программы Polinom.
курсовая работа [667,9 K], добавлен 01.10.2010Обзор методов аппроксимации. Математическая постановка задачи аппроксимации функции. Приближенное представление заданной функции другими, более простыми функциями. Общая постановка задачи метода наименьших квадратов. Нахождение коэффициентов функции.
курсовая работа [1,5 M], добавлен 16.02.2013Суть основных идей и методов, особенностей и областей применения программирования для численных методов и решения нелинейных уравнений. Методы итераций, дихотомии и хорд и их использование. Алгоритм метода Ньютона, создание программы и ее тестирование.
курсовая работа [423,0 K], добавлен 17.02.2010Интерполирование рабочих точек в пакете Mathcad с помощью полиномов (канонического, Лагранжа и Ньютона) и сплайнов (линейного, квадратичного, кубического). Реализация программы для решения системы линейных алгебраических уравнений на языке Pascal.
лабораторная работа [202,8 K], добавлен 15.11.2012Получение навыков работы в Mathcad при использовании интерполяции и регрессии. Постройте функции сглаживания и предсказания данных с помощью различных встроенных функций. Применение операций как калькулятор, математический анализ, матрица и вычисление.
лабораторная работа [205,1 K], добавлен 23.12.2014Постановка задачи численного интегрирования. Классификация методов интегрирования: методы Ньютона-Котеса; методы статистических испытаний; сплайновые методы; методы наивысшей алгебраической точности. Метод Симпсона: суть; преимущества и недостатки.
реферат [165,3 K], добавлен 01.03.2011Решение нелинейного уравнения вида f(x)=0 с помощью программы Excel. Построение графика данной функции и ее табулирование. Расчет матрицы по исходным данным. Проведение кусочно-линейной интерполяции таблично заданной функции с помощью программы Mathcad.
контрольная работа [1,8 M], добавлен 29.07.2013Задачи оптимизации в математике и информатике. Классификация методов оптимизации. Методы с переменной метрикой. Значение функции на заданном интервале. Локальный минимум функции. Методы минимизации функции. Классификация методов многомерной оптимизации.
курсовая работа [1,5 M], добавлен 19.06.2012Формирование растровых изображений. Изменение их разрешения путем интерполяции. Понятие глубины цвета. Редактирование рисунков с помощью масок, каналов и фильтров. Характеристика инструментов выделения, ретуширования и работы со слоями в Adobe Photoshop.
курсовая работа [294,1 K], добавлен 18.05.2016Составление алгоритма и программного обеспечения для реализации конечноразностных интерполяционных формул Ньютона, Гаусса и Стирлинга. Описание метода полиномиальной интерполяции. Изучение метода оптимального исключения для решения линейных уравнений.
курсовая работа [19,8 K], добавлен 25.12.2013