КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Методи прямокутників, трапецій, Сімпсона (парабол) чисельного інтегрування
Задача обчислення визначеного інтеграла, тобто вирази вигляду , часто виникає в аналізі даних. Числа а і 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;
|