Інтерполяція функцій

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

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

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

Рік:
2010
Тип роботи:
Лабораторна робота
Предмет:
Інші

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” / Лабораторна робота №3 Тема: «Інтерполяція функцій» Завдання: Для функції, заданої таблично, побудувати інтерполяційний многочлен Ньютона через розділені різниці і обчислити її значення у точках , , . Функція С      0,0 0,00000 0,5 1,71828  0,1 0,22140 0,6 2,32011  0,2 0,49182 0,7 3,05519  0,3 0,82211 0,8 3,95303  0,4 1,22554 0,9 5,04964   Точки інтерполяції №     8 0,087 0,441 0,777   Короткі теоретичні відомості: Найпростіша задача наближення функції полягає у наступному. В дискретні моменти часу  спостерігаються (відомі) значення функції ; необхідно знайти її значення при інших . За означенням розділена різниця нульового порядку  від функції  по одному вузлу  збігається з значенням функції . Розділені різниці першого порядку визначаються рівністю: , різниці другого порядку рівністю:  і т.д. Розділені різниці -го порядку  визначаються через різниці  порядку за формулою: . Лема. Справджується рівність . Якщо  інтерполяційний многочлен для функції , то його значення у вузлах  збігається із значенням функції , а отже, збігаються і розділені різниці, тому інтерполяційний многочлен для функції  можна записати у вигляді:  (1) Такий запис інтерполяційного многочлена називають інтерполяційним многочленом у формі Ньютона, а формулу (1) – інтерполяційною формулою Ньютона. Якщо відомі розділені різниці (таблиця розділених різниць), то многочлен Ньютона зручно обчислювати за схемою Горнера:  (2) Неважко помітити, що коли покласти  , то . Це рекурентне співвідношення легко програмується. Код програми: #include <iostream.h> #define k 10 const double X[k] = {0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9}; const double F[k] = {0.00000, 0.22140, 0.49182, 0.82211, 1.22554, 1.71828, 2.32011, 3.05519, 3.95303, 5.04964}; const double x1 = 0.087, x2 = 0.441, x3 = 0.777; double Rozd_Rizn[k]; void Calc_Rozd_Rizn(); double Calc_Func(double); void main() { cout<<" x\t F(x)\n"; for(int i = 0; i < k; i++) cout<<X[i]<<"\t"<<F[i]<<endl; cout<<"x1 = "<<x1<<endl <<"x2 = "<<x2<<endl <<"x3 = "<<x3<<endl; Calc_Rozd_Rizn(); //for(i = 0; i < k; i++) // cout<<Rozd_Rizn[i]<<endl; cout<<endl; cout<<"f(x1) = "<<Calc_Func(x1)<<endl <<"f(x2) = "<<Calc_Func(x2)<<endl <<"f(x3) = "<<Calc_Func(x3)<<endl; } void Calc_Rozd_Rizn() { for(int i = 0; i < k; i++) { Rozd_Rizn[i] = 0; for(int j = 0; j < i + 1; j++) { double temp = 1; for(int l = 0; l < i + 1; l++) if(l != j) temp = temp * (X[j] - X[l]); Rozd_Rizn[i] += F[j] / temp; } } } double Calc_Func(double x) { double Ln = 0; for(int i = 1; i < k + 1; i++) Ln = (x - X[k - i]) * Ln + Rozd_Rizn[k - i]; return Ln; } Результат виконання програми: / Висновок: В процесі виконання даної лабораторної роботи я побудував інтерполяційний многочлен Ньютона через розділені різниці для функції, заданої таблично. Так чином побудувавши многочлен Ньютона я мав змогу приблизно обчислювати значення функції в будь-якій точці на інтервалі, і обчислив значення функції в точках , , .
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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