DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

Дослідження похибки інтерполяції функцій многочленом Ньютона

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2015
Тип роботи:
Звіт
Предмет:
Інші
Група:
ПМ-31

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ Національний Університет „Львівська Політехніка” Звіт до лабораторної роботи №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.
Антиботан аватар за замовчуванням

2015

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!