«Интерполяция функций»



Скачать 82.94 Kb.
Дата26.07.2014
Размер82.94 Kb.
ТипЛабораторная работа

Московский технический университет связи и информатики

Лабораторная работа №3

По вычислительной математике




Выполнил: Пименов Алексей Сергеевич, студент группы ПО0801

2009г.



Тема: «Интерполяция функций»

Вариант 9

1. Задание для интерполяции функций:

  • функция y=f(x), заданная таблично значениями в узлах интерполяции:

узла-i

6

8

9

10

12

14

xi

0.35

0.45

0.5

0.55

0.65

0.75

y=f(xi)

-3.7555

-3.489

-3.325

-3.1385

-2.692

-2.1375




  • для вычисления значения интерполирующей функции в точке x=b=0.48 методом Лагранжа выберем номера узлов интерполяции 8, 9, 10, 12, что соответствует значениям узлов х0=0.5, х1=0.45, х2=0.55, х3=0.35 (из указанного диапазона узлов);

  • для вычисления значения интерполирующей функции в точке x=a=0.
    06
    методом Ньютона выберем узлы интерполяции х0=0.05, х1=0.1 х2=0.15, х3=0.2 (x0=0.05 – ближайший к точке х=а=0.06 узел слева);

2. Линейная, квадратичная и кубическая интерполяция «расчетом на ПК»:

Для построения интерполяционного многочлена Лагранжа воспользуемся формулой:



Для обеспечения большей точности интерполяции перенумеруем узлы интерполяции: выберем узел х0=0.5 (ближайший к точке b=0.48), далее выбираем узлы по возможности симметрично относительно точки интерполяции b=0.48: х1=0.45, х2=0.55, х3=0.35.

Вычислим значение интерполирующего многочлена Лагранжа в точке b=0.48. При n+1=1 (линейная интерполяция) значение интерполирующего полинома будет следующим:


L1(b)=L1(0. 48)=-3.391

Проведя аналогичные вычисления, получим значения интерполирующего полинома:



  • при n+1=2 (квадратичная интерполяция) - L2(b)=L2(0.17)= -3.3933

  • при n+1=3 (кубическая интерполяция) - L3(b)=L3(0.17)= -3.393216


Вычислим погрешность интерполяции по формулам практической оценки погрешности.



Для линейной интерполяции:



Для квадратичной интерполяции:


Проведем вычисление на компьютере по следующим алгоритмам:

Интерполяция по формуле Лагранжа

Вычисление многочлена Лагранжа k-ой степени в точке xl



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

//файл header.h

#ifndef HEADER_H

#define HEADER_H


#include

#include

#include
using namespace std;
double LX(int,double*,double*,double);

double* count_Lagrange(double*,double*,double,int,int&,double);


#endif
//файл func.cpp

#include "header.h"


double LX(int k, double* x, double* y, double xl)

{ //функция вычисления многочлена Лагранжа k-ой степени в точке xl, зная аргументы х и значения функции y

double L=0,l1;

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

{

l1=1;


for(int j=0;j<=k;j++)

{

if(i!=j)



l1=(xl-*(x+j))/(*(x+i)-*(x+j))*l1; //вычисление множителей

}

L=L+l1**(y+i); //вычисление слогаемых



}

return L;

}
double* count_Lagrange(double* x, double* y, double E, int n, int& k, double xl)

{

double A,LL,E1; //опеределение временных переменных для вычислений



double* L=new double[n-1]; //создание массива многочленов Лагранжа

k=1; //обнуление(так как первый элемент в массиве - нулевой) степени многочлена

LL=LX(k,x,y,xl);

*(L+k)=LL;

do

{

A=LL;



k++;

*(L+k)=LL=LX(k,x,y,xl);

E1=abs(LL-A);

}while(E1>E||k

return L;

}

//файл main.cpp



#include "header.h"
void main(void)

{

setlocale(LC_ALL,"Russian");



char ans; //определение переменной для проверки перевыполнить ли программу

int n,k; //определение переменных для количества узлов интерполяции и степени интерполяции

double xl,E; //определение переменных для точки для вычисления многочлена лагранжа и точности интерполяции

do

{



/*блок ввода данных задачи интерполяции*/

cout<<"\nВведите количество узлов интерполяции:\t";

cin>>n;

n=n;


cout<<"\nВведите точку для интерполяции в ней:\t";

cin>>xl;


cout<<"\nВведите требуемую точность интерполяции:\t";

cin>>E;


double* x=new double[n-1]; //выделение памяти для массива аргументов узлов интерполяции

double* y=new double[n-1]; //выделение памяти для массива значений функции в узлах интерполяции

for(int i=0;i

{

cout<<"\nВведите аргумент и соответствующее ему значение функции:\t";



cin>>*(x+i)>>*(y+i);

}

/*конец блока ввода данных задачи интерполяции*/



double* L; //создание указателя на массив многочленов Лагранжа

L=count_Lagrange(x,y,E,n,k,xl); //заполнение массива многочленов Лагранжа

/*блок вывода полученных многочленов Лагранжа*/

cout<<"\nПолученые значения интерполяции при разных степенях многочлена:";

for(int i=1;i<=k;i++)

{

cout<

}

/*конец блока вывода полученных многочленов Лагранжа*/

cout<<"\nВычислить еще раз?[y/n]";

ans=_getch();

/*удаление созданных массивов*/

delete[] x;

delete[] y;

delete[] L;

}while(ans=='y'||ans=='1'||ans=='д');

cout<<"\nFIN.";

_getch();

}

Точка интерполяции: b=0.48



Узлы: х0=0.5, х1=0.45, х2=0.55, х3=0.35

Значения в узлах: y0=-3.325, y1=-3.489, y2=-3.1385, y3=-3.7555


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

Число Узлов(n+1)



Оценка погрешности

2





3





4





3. Построение интерполяционных многочленов второй степени в явном виде (ручной расчет)

Будем искать значение интерполяционного многочлена по 1ой формуле Ньютона в точке a=0.06.

Выберем узлы интерполяции: х0=0.05, х1=0.1 х2=0.15, х3=0.2 (x0=0.05 – ближайший к точке х=а=0.06 узел слева);

Шаг h=0.05

Составим таблицу конечных разностей:




X

Y

Y

Y

Y

0

0,05

-4.171

0,038

0,0105

0,0015

1

0,1

-4.133

0,0485

0,012




2

0,15

-4.0845

0,0605







3

0,2

-4.024









Общий вид 1ой формулы Ньютона:



Интерполяционный многочлен Ньютона 2ой степени:




Интерполяционный многочлен Ньютона 2ой степени в явном виде:






xi

0.05

0.1

0.15

P2(xi)

-4.171

-4.133

-4.0845

y=f(xi)

-4.171

-4.133

-4.0845



4. Получение решения для варианта задания с помощью математических пакетов

Похожие:

«Интерполяция функций» iconЗадача табуляции функции. Задача приближения функций. Линейная интерполяция
Интерполяция полиномом. Теорема о существовании и единственности интерполяционного полинома
«Интерполяция функций» iconЛабораторная работа Интерполяция и предсказание
Функция j (х) при этом называется аппроксимирующей. Типичной задачей аппроксимации функций является задача интерполяции. Необходимость...
«Интерполяция функций» iconЛабораторная работа №1 интерполяция функций с помощью сплайна 1
Ознакомление студентов с задачей интерполяции функций, с методом прогонки для решения систем линейных алгебраических уравнений с...
«Интерполяция функций» iconОтчет по курсовой работе по дисциплине «информатика» Интерполяция полиномами Лагранжа
Интерполяция­­­ метод нахождения промежуточных значений некоторой величины по известному дискретному набору значени
«Интерполяция функций» iconИнтерполяция сплайнами
Интерполяция сплайнами. Пусть отрезок [a,b] разбит точками на n частичных отрезков. Сплайном степени m называется функция, обладающая...
«Интерполяция функций» iconОтчет по курсовой работе по дисциплине «информатика» Интерполяция полиномами Лагранжа
Интерполяция[1]­­­ – метод нахождения промежуточных значений некоторой величины по известному дискретному набору значений
«Интерполяция функций» icon14 Интерполяция данных
Интерполяция может проводиться как на основе регулярной, так и на основе нерегуляной точечной сети. В гис поверхности, получаемые...
«Интерполяция функций» iconИнтерполяция кубическими сплайнами
Эта задача решается на основе использования статистических методов, которые позволяют получить параметры функций (полиномы 3-ей степени),...
«Интерполяция функций» iconТема Интерполяция функций
Вычисление значений функции y = f(x) – одна из тех задач, с которой приходится постоянно сталкиваться в инженерной практике. Однако...
«Интерполяция функций» iconИнтерполяция
Ацп (аналого-цифровой преобразователь). Цап осуществляет интерполяцию, а ацп дискретизацию. Часто интерполяцию и аппроксимацию рассматривают...
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org