Мiнiстерство освiти і науки, молоді та спорту України
Національний університет "Львівська полiтехнiка"
Звіт
до лабораторної роботи №2
на тему «Методи наближення функцій»
з курсу: «Чисельні методи в інформатиці»
Мета роботи
Ознайомлення з методами наближення функцій та їх практичним застосуванням.
Теоретичні відомості
Перша інтерполяційна формула Ньютона
Нехай – значення деякої функції y=f(x), що відповідають рівновіддаленим значенням аргументу .
Величина називається скінченною різницею першого порядку функції f(x)в точці (з кроком h) і позначається або , тобто . Скінченна різниця другого порядку в точці xi визначається рівностями: .
Скінченна різниця n-го порядку функції y=f(x) в точці визначається рекурентною формулою:
, де
Скінченні різниці зручно розміщувати у вигляді таблиці:
Така таблиця називається діагональною таблицею різниць. Всі різниці будемо записувати цілими числами в одиницях молодшого розряду значень функції у вузлах інтерполювання.
x
y
…
…
…
…
…
…
…
Можна записати формулу:, (1)
де – біномні коефіцієнти. Остання формула виражає скінченні різниці через значення функції у вузлових точках.
Нехай для функції y=f(x) задано її значення для значень аргументу, які утворюють арифметичну прогресію (i=0,1,...,n), де h – крок таблиці. Треба побудувати многочлен степінь якого був би не більшим за n, а значення його у вузлах інтерполювання збігалися б із значенням функції y=f(x); тобто:
(i=0,1,2,...,n). (2)
Многочлен визначається у вигляді:
(3)
Коефіцієнти у (12) визначають так, щоб виконувались умови (11). Після деяких перетворень і застосування раніше введених означень скінченних різниць отримують співвідношення:
(4)
Формула (4) називається першою інтерполяційною формулою Ньютона. Доведено, що існує лише один інтерполяційний многочлен n-го степеня, значення якого у вузлах інтерполяції дорівнюють значенням функції .
Індивідуальне завдання
Варіант 11
Обчислити значення функції 1-ї формули Ньоютона
/
в 5 різних точках для двох різних інтервалів інтерполяції ([-3 3], [3 10]). Дослідити вплив степені полінома (n1=1,2,3 n2=4,5,6, n3=7,8,9) на точність одержаних результатів.
Виконання обчислень
Інтервал [-3 3]
Вибираємо n1=2
h=(3-(-3))/2=3
x
y
-3
0
0
3
0
0
3
3
3
Отриманий поліном
P2(x) = (x*x+3*x)/6
Вибираємо n2=4
h=(3-(-3))/4=1.5
x
y
-3
0
0
0
1.5
-3
-1.5
0
0
1.5
-1.5
0
0
1.5
0
1.5
1.5
1.5
3
3
Отриманий поліном
P4(x) = -0.0246x4 +0.0002 x3 +0.3883 x2 +0.499 x
Вибираємо n3=7
h=(3-(-3))/7=0.8571
x
y
-3
0
0
0
0
0.4287
-0.8577
0.8568
0.0006
-2.1429
0
0
0
0.4287
-0.429
-0.0009
0.8574
-1.2858
0
0
0.4287
-0.0003
-0.4281
0.8565
-0.4287
0
0.4287
0.4284
-0.4284
0.4284
0.4287
0.4287
0.8571
0
0
1.2858
1.2858
0,8571
0
2.1429
2.1429
0.8571
3
3
Інтервал [3 10]
На цьому інтервалі всі отримані поліноми збігаються з точною функцією P2(x)= P4(x)= P7(x)=у(х)=х
Програма на мові Matlab
clc
clear all
format compact
%Точна функція на проміжку [-3 3]
x=[-3 0 3.5]
y=[0 0 3.5]
plot(x,y,'LineWidth',1.5)
hold on
axis([-4 5 -1 5])
xx=[-3.5 -0.1 0.1 1.6 3.5]
yy=[0 0 0.1 1.6 3.5]
%наближена функція при n1=2, h=3
x2=[-3.5 -0.1 0.1 1.6 3.5]
y2=x2.^2/6+x2/2
plot(x2,y2,':')
grid
%наближена функція при n2=4, h=1.5, проміжок [-3 3]
y3 = -0.0246*x2.^4+0.0002*x2.^3+0.3883*x2.^2+0.499*x2
plot(x2,y3,'o')
%наближена функція при n3=7, h=0.8571, проміжок [-3 3]
y4=0.0000004*x2.^7+0.003*x2.^6-0.0001003*x2.^5-0.0531*x2.^4-0.000596*x2.^3+0.3778*x2.^2+0.5055*x2+0.1361
plot(x2, y4,'k:','LineWidth',1.5)
legend('Точна функція','Наближена функція при n=2','Наближена функція при n=4','Наближена функція при n=7')
%абсолютна похибка
figure(2)
absPoh2 = abs(yy - y2)
absPoh4 = abs(yy - y3)
absPoh7 = abs(yy - y4)
semilogy(x2, absPoh2,':')
hold on
semilogy(x2, absPoh4, 'LineWidth',1.5)
semilogy(x2, absPoh7);
legend('Абсолюнта похибка при n1=2','Абсолюнта похибка при n2=4','Абсолюнта похибка при n3=7')
%відносна похибка
figure(3)
vidPoh2 = abs(yy- y2)./abs(yy)
vidPoh4 = abs(yy - y3)./abs(yy)
vidPoh7 = abs(yy - y4)./abs(yy)
semilogy(x2, vidPoh2,':')
hold on
semilogy(x2, vidPoh4, 'LineWidth',1.5)
semilogy(x2, vidPoh7);
legend('Відносна похибка при n1=2','Відносна похибка при n2=4','Відносна похибка при n3=7')
%Точна функція на проміжку [3 10]
a1 = [2 7.5 10.5];
b1=a1;
figure(4)
plot(a1,b1)
axis([0 11.5 0 11.5])
hold on
%наближена функція при n1=2, h=3.5, проміжок [3 10]
a2 = [2 4 6 7 10.5];
b2=a2;
plot(a2,b2,'g*')
%наближена функція при n2=4, h=1.75, проміжок [3 10]
b3=a2
plot(a2,b3,'o')
%наближена функція при n2=7, h=1, проміжок [3 10]
b4=a2
plot(a2,b4,'r:')
legend('Точна функція','Наближена функція при n=2','Наближена функція при n=4','Наближена функція при n=7')
grid
Графіки результату
/
Рис. 1 Графіки точної функції та функцій, утворених поліномами на проміжку [-3 3]
/
Рис. 2 Графіки абсолютних похибок на проміжку [-3 3]
/
Рис. 3 Графіки відносних похибок на проміжку [-3 3]
/
Рис. 4 Графіки точної функції та функцій, утворених поліномами на проміжку [ 3 10]
З графіка видно, що всі функції співпадають, отже абсолютні і відносні похибки рівні 0
Висновок
На цій лабораторній роботі я ознайомилася з методами наближення функцій та їх практичним застосуванням. Розробила програму, яка будує графіки точної та наближених функцій, визначила, що для функції у=х всі поліноми збігаються з самою функцією.