МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Національний Університет „Львівська Політехніка”
Звіт до лабораторної роботи №4
на тему:
„Дослідження похибки інтерполяції функцій
многочленом Ньютона”
Варіант 28.
Завдання:
Для функції f(x), заданій на рівномірній сітці в точках а=x0, x1, ..., xn=b на інтервалі [a,b]:
знайти аналітичний вираз залишкового члена інтерполяційного многочлена;
обчислити його максимальне значення і значення в точках x΄, x΄΄, x΄΄΄;
побудувати інтерполяційний многочлен Ньютона через розділені різниці;
обчислити похибки інтерполяції у точках і порівняти їх із значеннями залишкового члена.
f(x)=1/100*sin(4x).
Розв’язання:
Проведемо дослідження похибки, яка виникає при заміні функції інтерполяційним многочленом. Нехай функція визначена в вузлі інтерполяції , а – інтерполяційний многочлен. Залишковий член (похибка) інтерполяційного многочлена має вигляд:
.
Очевидно, що у вузлах інтерполяції цей залишковий член дорівнює нулю. Припустимо, що функція має неперервну похідну на відрізку , тобто . Введемо допоміжну функцію
,
де , –константа. Зауважимо, що , , . Виберемо сталу з умови , де – точка, в якій оцінюється похибка. Для цього достатньо покласти
.
При такому виборі функція перетворюється в нуль в -x точках . На основі теореми Ролля її похідна має не менше коренів. Послідовно застосовуючи цю теорему до похідних вищого порядку функції одержимо, що має не менше коренів і.т.д., а функція має принаймні один корінь, тобто , де . Оскільки , то з умови будемо мати:
.
Отже, співвідношення можна записати у вигляді
. (1)
Покладаючи
,
дістанемо оцінку залишкового члена
.
1. Використовуючи формулу (1), знаходимо максимальне значення і значення в точках x΄, x΄΄, x΄΄΄.
2. Будуємо таблицю розділених різниць:
f(x0) f(x0;x1) f(x0;x1;x2) ..... f(x0;x1;...;xn)
f(x1) f(x1;x2) f(x1;x2;x3) .....
.................................................
f(xn) f(xn-1;xn) f(xn-2;xn-1;xn).
3. Записуємо інтерполяційний многочлен Ньютона за схемою Горнера (оскільки розділені різниці вже відомі):
Ln(x) = f(x0) + (x – x0)(f(x0;x1) + (x – x1)(f(x0;x1;x2) + ... + (x – xn-1)f(x0;x1;...;xn))...).
4. Обчислюємо значення многочлена в точках інтерполяції.
Код програми на мові С++:
#include <fstream.h>
#include <math.h>
const double pi=3.141528;
double chlen (double x);
int i, j;
char m;
double ss, s,s1, a [4][5]={{0.0, 0.0}, {pi/12.0, 1.0/100.0*sin(pi/3.0)}, {pi/6.0, 1.0/100.0*sin(2.0*pi/3.0)}, {pi/4.0, 0.0}};
double polinom (double Matrix [4][5], double x);
double polinom (double Matrix [4][5], double x)
{
double roz;
roz=Matrix[0][4];
for(int l=4;l>=1;l--)
roz=roz*(x-Matrix[l-1][0])+Matrix[0][l];
return roz;
}
double chlen (double x)
{
return 256.0/2400.0*sin(4*x)*x*(x-pi/12)*(x-pi/6)*(x-pi/4);
}
void main ()
{
cout<<"Analitychyj vyraz zalyshkovoho chlena:"<<'\n';
cout<<"R3(x)=256/2400*sin(4x)x(x-pi/12)(x-pi/6)(x-pi/4)"<<'\n'<<'\n';
//cout<<"M4=sup|256/100*sin(4x)|=256/100 "<<'\n';
s=256.0/2400.0*sin(4*pi/8)*pi/4*(pi/4-pi/12)*(pi/4-pi/6)*(pi/4-0);
cout<<"Maksymalne znachennja zalyshkovoho chlena = "<<s<<'\n'<<'\n';
/*s=chlen(0.188);
cout<<"R3(0.188) = "<<s<<'\n';
s=chlen(0.258);
cout<<"R3(0.258) = "<<s<<'\n';
s=chlen(0.691);
cout<<"R3(0.691) = "<<s<<'\n'<<'\n';*/
for (j=2;j<=4;j++) // îá÷èñëåííÿ ð³çíèöü
for(i=0;i<=4-j;i++)
a[i][j]=(a[i+1][j-1]-a[i][j-1])/(a[i+j-1][0]-a[i][0]);
cout<<"Interpolacijnyj polinom Newtona:"<<'\n'<<"L[4](x)="<<a[0][1]; // âèâ³ä ²ÌÍ
for(i = 0;i<=2;i++)
cout<<"+(x-"<<a[i][0]<<")("<<a[0][i+2];
cout<<"))))."<<'\n'<<'\n';
do
{
cout<<"Vvedit tochku x"<<'\n'; // îá÷èñëåííÿ çíà÷åííÿ ²ÌÍ
cin>>ss; // â òî÷êàõ ³íòåðïîëÿö³¿
//cout<<"Znachennja polinoma:"<<'\n';
s=polinom(a,ss);
s1=chlen(ss);
s=fabs(s-s1);
cout<<"Pokhybka interpoljaciji:"<<'\n';
cout<<s<<'\n';
cout<<"She tochku? (y/n)"<<'\n';
cin>>m;
}
while (m=='y');
}
Контрольний приклад:
Висновок: під час лабораторної роботи я ознайомився зі способом обчислення похибки інтерполяції функцій методом побудови інтерполяційного многочлена Ньютона. Для реалізації цього методу на ПК використав побудову таблиці розділених різниць, а також схему Горнера.
СПИСОК ЛІТЕРАТУРИ
Бахвалов Н.С., Жидков Н.П., Кобельков Г.М.. Численные методы.-М.:Наука, 1987.
Гаврилюк І.П., Макаров В.Л. Методи обчислень. –К.:Вища школа, 1995, ч.1, ч.2.
Данилович В., Кутнів М. Чисельні методи.-Львів:Кальварія, 1998.
Калиткин Н.Н. Численные методы.-М.:Наука, 1978.
Самарский А.А., Гулин А.В. Численные методы. - М.:Наука, 1989.
Трифонов Н.П., Пасхин Е.Н. Практикум работы на ЭВМ.-М.: Наука, 1982.