Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы.doc
Скачиваний:
48
Добавлен:
07.03.2016
Размер:
3.6 Mб
Скачать

Розділ 16. Чисельне диференціювання та інтегрування

16.1. Методи правих та центральних різниць чисельного диференціювання

Приріст аргументу і приріст функції. Нехай функція y = f(x) визначена в точках x0 та x1 = x0 + Δx. Різниця x1x0 = Δx називається приростом аргументу, а різниця f(x1) – f(x0)= f(x0 + Δx) – f(x0) називається приростом функції при переході від значення аргументу x0 до аргументу x1 = x0 + Δx. Приріст функції позначається Δf або Δy, тобто Δf = f(x0 + Δx) – f(x0).

Похідною функції f(x) в точці x0 (позначають f'(x0)) називається межа відношення приросту функції до приросту аргументу при умові, що приріст аргументу прямує до нуля, тобто

,

де Δx = x1x0 – приріст аргументу; x1 і x0 – два значення незалежної змінної з області визначення функції f(x); f(x0 + Δx) – f(x0) = Δf – приріст функції в точці x0.

Наприклад, якщо f(x)= 3x2 + 2, то f'(x0) =

= =

= .

Функція, яка має похідну в точці x0, називається такою, що диференціюється в цій точці. Якщо функція має похідну в кожній точці деякого проміжку, то вона диференційована на цьому проміжку. Похідна функції f(x), що диференціюється на проміжку, сама є функцією аргументу x.

Похідна широко використовується в різних методах аналізу даних, причому від ефективності обчислення похідної залежить ефективність, а часто і сама можливість реалізації вживаних методів аналізу. Похідні можуть визначатися аналітично або чисельно.

Кінцево-різницеві схеми чисельного визначення похідних побудовані на ідеї застосування такого малого приросту аргументу (похитування), що обчислення дає достатню для практичного застосування точність. Формула методу правих різниць є класичною формулою визначення похідної і виглядає наступним чином:

,

а метод центральних різниць може бути записаний як

,

де в обох випадках h – кінцево-різницевий інтервал (крок похитування).

Крок похитування h повинен наближуватись до нуля (дорівнює маленькій величині).

Наведемо фрагмент програми чисельного диференціювання.

#include <iostream>

using namespace std;

double func(double x)

{

return x*x + 5*x + 6;

}

void main()

{

double x,h,t1,t2;

h = 0.0000000001;

x = 3;

t1 = (func(x+h)-func(x))/h;

t2 = (func(x+h)-func(x-h))/(2*h);

cout<<"\nПохідна (метод правих різниць) "<<t1;

cout<<"\nПохідна (метод центральних різниць) "<<t2;

}

У даному фрагменті на прикладі функції y = x2 + 5x + 6 реалізовано методи правих та центральних різниць, відповідно змінні t1 та t2. Результат виконання програми при значенні аргументу x = 3 виглядатиме наступним чином:

Похідна (метод правих різниць) 11

Похідна (метод центральних різниць) 11

16.2. Методи прямокутників, трапецій, Сімпсона (парабол) чисельного інтегрування

Задача обчислення визначеного інтеграла, тобто вирази вигляду

,

часто виникає в аналізі даних. Числа а і b називають відповідно нижньою і верхньою межами інтеграції, а відрізок [а, b] називається ділянкою інтеграції. Функція f(x) називається підінтегральною функцією. Якщо підінтегральна функція безперервна на ділянці інтеграції і одна межа або обидві відразу покладені рівними ∞, а також якщо підінтегральна функція має один або декілька розривів на ділянці інтеграції, інтеграл називається невласним. Невласний інтеграл сходиться (існує), якщо існує межа інтеграла в даних випадках, інакше говорять, що невласний інтеграл розходиться (не існує). Невласні інтеграли часто виникають, наприклад, при обчисленні теоретичних функцій розподілу. Із зменшенням або збільшенням, залежно від типу розподілу, меж інтеграції ці функції зменшуються дуже швидко, тому практично обчислення можна здійснювати по тих же алгоритмах, що і для звичайних визначених інтегралів, тільки відповідна нескінченній нижній або верхній межі величина підбирається, відповідно, достатньо малою або достатньо великою для того, щоб точність обчислень була допустимою. Типовими для обчислення визначених інтегралів є методи прямокутників, трапецій, Сімпсона (парабол).

Формула за методом прямокутників має наступний вигляд:

,

де h = (b – а)/n – крок інтеграції;

n – задане число ділянок розбиття області інтегрування;

xi = а + ih, i = 0, 1, 2 ., n.

Формула за методом трапецій виглядає наступним чином:

.

Формула за методом Сімпсона (парабол) представлена в наступному вигляді:

,

де n – парне.

Наведемо фрагмент програми реалізації методів чисельного інтегрування.

#include <iostream>

using namespace std;

double func(double x)

{

return x*x + 5*x + 6;

}

void main()

{

double a,b,h,x;

double s,s1,s2,t1,t2,t3;

int i,n;

a = 1;

b = 4;

n = 100;

h = (b-a)/n;

// Метод прямокутників

s = 0;

for(i=0;i<n;i++)

{

x = a + i*h;

s+= func(x);

}

t1 = s*h;

cout<<"\nІнтеграл (метод прямокутників) "<<t1;

// Метод трапецій

s = 0;

for(i=1;i<n;i++)

{

x = a + i*h;

s+= func(x);

}

t2 = ((func(a)+func(b))/2+s)*h;

cout<<"\nІнтеграл (метод трапецій) "<<t2;

// Метод Сімпсона (парабол)

s1 = s2 = 0;

for(i=1;i<n;i++)

{

x = a + i*h;

if (i&1)s1+= func(x);

else s2+= func(x);

}

t3 = (func(a)+func(b)+2*s2+4*s1)*h/3;

cout<<"\nІнтеграл (метод Сімпсона) "<<t3;

}

Для інтегрування вибрано функцію y = x2 + 5x + 6, межі інтегрування: a = 1, b = 4. Фігура обмежена цими величинами розбивається на 100 частин (n = 100). Слід зауважити, що для реалізації методу Сімпсона (парабол) число n повинне бути парним.

Результат виконання програми:

Інтеграл (метод прямокутників) 76,0505

Інтеграл (метод трапецій) 76,5005

Інтеграл (метод Сімпсона) 76,5

Найточнішим методом є метод Сімпсона (метод парабол).