Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PZ_Interp_Appr_Koshi Осинська.doc
Скачиваний:
28
Добавлен:
07.02.2016
Размер:
785.92 Кб
Скачать

3.3.2 Метод Рунге збільшення порядку точності формул

Нехай в загальному випадку є формула (x,h) для обчислення z(x) по значеннях на рівномірній сітці з кроком h.

Проведемо тепер розрахунок по тій же наближеній формулі для тієї ж точки х, але використовуючи рівномірну сітку з іншим кроком rh. Тоді можемо провести обчислення похідної по уточнюючій формулі Рунге:

Приклад 3.3.1. Нехай функція y(x) задана таблицею 3.1 і необхідно обчислити першу похідну цієї функції для x=3.

Таблица 3.1 - Значення функції y(x)

x

1

2

3

4

5

y(x)

0

0,301

0,478

0,602

0,699

Виберемо для обчислень найпростішу формулу (3.3):

.

Збільшуємо крок удвічі (r=2), тобто обчислюємо похідну по точкам х=1 та х=5: .

Проведемо обчислення по другій формулі Рунге:

Точне значення похідної рівне 0,141. Похибка склала 2%. Апостеріорна оцінка похибки для

3.3.3 Функції matlab для чисельного диференціювання

Як відомо, чисельне диференціювання будується на використовуванні апарату кінцевих різниць і відповідного різноманіття апроксимацій. Тут корисні функції:

diff(X), diff(X, n), diff(X, n, dim) - обчислення кінцевих різниць (перших, n-го порядку або по вказаному вимірюванню); якщо Х -масив, беруться різниці між стовпцями:

>> F=

[ 0

0.0998

0.1987

0.2955

0.3894

0.4794]

>> D=diff(F)

D =

0.0998

0.0988

0.0969

0.0939

0.0900

>> D2=diff(F,2)

D2 =

-0.0010

-0.0020

-0.0030

-0.0039

Приклад 3.3.2. Обчислення значення похідної функції f(x)= sin(0.01x2) на інтервалі [0,10] в системі MatLab

>>f=inline('sin(0.01*x.^2)'); %завданя ф-ії, що диференціюється

>>dx=0.01; % крок координатної сітки

>>x=0:dx:10*pi; % обчислення координат вузлів

сітки

>>yf=feval(f,x); % обчислення значень функції у

вузлах сітки

>>n=length(x);

>>m=1:n-1;

>>df(m)=(yf(m+1) -уf(m))/dx; % виконання процедури

чисельного диференціювання

>>f1=inline('0.02*x.*cos(0.01*x.^2)'); % завдання функції, що

описує першу похідну

>>yf1=feval(f1,x); % обчислення значень

першої похідної

по аналітичній формулі

>>plot(x(m),abs(yf(m) -yf1(m)); %визуализация різниці

між чисельними і аналитичними

значеннями похідної

3.4 Індивідуальне завдання до лабораторної роботи

1. Написати програмний код, для обчислення значень першої похідної, використовуючи дві різні формули диференціювання (аналітичну і чисельну).

2. Створені програми використовувати для обчислення значень похідної для функції з таблиці 3.2 на відрізку [а,b]. Порівняти набуті значення. Побудувати графіки похідних. Графік абсолютної похибки.

3. У Command Window для однієї з внутрішніх точок сітки одержати:

а) оцінку абсолютної і відносної похибки;

б) уточнене значення похідної, використовуючи правило Рунге.

Таблиця 3.2 - Варіанти індивідуальних завдань

f(x)

a

b

f(x)

a

b

1

2

5

12

2

5

2

-9

9

13

-2

2

3

-2

2

14

-3

3

4

-1

5

15

2

5

5

-5

3

16

-3

3

6

1

3

17

-1

4

7

0

4

18

0

5

8

-5

5

19

-2

2

9

0

4

20

-2

3

10

-3

3

21

0

4

11

0

4

22

-3

3

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]