Методи чисельного диференціювання функцій - TikkY-hash/Command GitHub Wiki

Основні поняття та терміни

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

Важливо, що чим менше буде приріст аргументу, тим точніше чисельне значення похідної.

Відомі методи чисельного диференціювання функції

Знаходження першої похідної двоточковими методами

Даний метод для знаходження похідної використовує значення функції в двох точках. Приріст аргументу задається трьома способами, відкладаючи Δx = h вправо, вліво і в обидві сторони від досліджуваної точки. Відповідно виходить три двоточкових методу чисельного диференціювання:

Принцип роботи зазначених методів пояснюється на графіку нижче. Чисельне значення тангенса кута α утвореного дотичною до графіка y(x) і віссю абсцис, показує точне значення похідної, тобто її геометричний зміст. Тангенси кутів α1, α2, α3 відповідають наближеним значеннями похідних, визначених методами 1,2,3 відповідно.

Приклад знаходження похідної двоточковим методом для функції y = 3*x^2, з узятою точкою х = 2 і кроком Δx (h) = 1:

Метод №1: (y(x + Δx) - y(x)) / (Δx) = (y(2 + 1) - y(2)) / (1) = (y(3) - y(2)) / (1) = (27-12) / (1) = 15

Метод №2: (y(x) - y(x - Δx)) / (Δx) = (y(2) - y(2 - 1)) / (1) = (y(2) - y(1)) / (1) = (12 - 3) / (1) = 9

Метод №3: (y(x + Δx) - y(x - Δx)) / (2Δx) = (y(2 + 1) - y(2 - 1)) / (21) = (y(3) - y(1)) / (2) = (27 - 3) / (2) = 12

Обчислення першої похідної за триточковими схемами.

При знаходженні похідної за триточковими схемами також використовується прийом відкладання кроку Δx = h вправо, вліво і в обидві сторони від досліджуваної точки (див. рис).

Формули для обрахунку похідної за триточковими методами:

Приклад знаходження похідної триточковим методом для функції y = 2*x^3, з точкою х = 1 і кроком Δx (h) = 2:

y'(-1) = (1 / 2Δx) * (-3 * y(-1) + 4 * y(0) - y(1)) = (1 / 22) * (-3 * (-2) + 4 * 1 - 54) = (1 / 4) * (10 - 54) = -44 / 4 = -11

y'(0) = (1 / 2Δx) * (-y(-1) + 0 * y(0) + y(1)) = (1 / 22) * (-(-2) + 0 * 1 + 54) = (1 / 4) * (2 + 54) = 56 / 4 = 14

y'(1) = (1 / 2Δx) * (y(-1) - 4 * y(0) + 3(y1)) = (1 / 22) * (-2 - 4 * 1 + 354) = (1 / 4) * (-6 + 162) = 156 / 4 = 39

Обчислення похідної другого порядку

Принцип знаходження похідної другого порядку співпадає з алгоритмом знаходження першої похідної. Тобто - похідна другого порядку знаходиться від першої похідної так само, як перша похідна знаходиться від заданої функції. Знаходження другої похідної за методом чисельного диференціювання передбачає п'ятиточкову схему вікладання кроків вліво, вправо і в обидві сторони від точки, що досліджується:

Відповідна формула, що працює за п'ятиточковою схемою, має вигляд:

Приклад знаходження похідної другого порядку для функції y = x*x, з точкою х = 3 і кроком Δx (h) = 2:

(d^2(y)) / (d(x^2)) = (d / dx) * (dy / dx) =

= (y'(1) - y'(-1)) / (2Δx) = (((y(2) - y(0)) / 2Δx) - ((y(0) - y(2)) / 2Δx)) / (2h) =

= (y(2) - 2 * y(0) + y(-2)) / ((2Δx)^2) = (y(1) - 2 * y(0) + y(-1)) / ((2Δx)^2) =

= (y(x + Δx) - 2 * y(x) + y(x - h)) / ((2Δx)^2) = (y(3 + 2) - 2 * y(3) + y(3 - 2)) / ((22)^2) =

= (y(5) - 2 * y(3) + y(1)) / (4^2) = (25 - 18 + 1) / (16) = (8) / (16) = 0.5

Метод аналізу ефективності кожного способу знаходження похідної від функції

В даному проекті використовується метод підрахунку часу, за який виконуватиметься функція, що включає в себе метод знаходження похідної. Метод обчислення значення функції в певній точці (похідна) обирається самим користувачем. Алгоритм даного методу наступний: 1.Встановити додаткову бібліотеку sys/time.h в проект

2.Дізнатись час до виконання функцій встановивши clock() int start = clock().

3.Дізнатись час після виконання функцій clock() int end = clock() .

4.Вивести у консоль час після виконання функцій cout << start - end.