Московського державного будівельного університету p>
Курсова робота
«Програма наближеного обчислення певного інтеграла за допомогою ф - ли Сімпсона на комп'ютері» p>
Виконав: p>
студент ф - та ЕОУС - 1 - 12 p>
Валюгін А. С. p>
Прийняв: p>
Зоткін С. П. p>
Москва 2001 p>
1. Введення p>
Визначений інтеграл від функції, що має неелементарную первісних, можна обчислити за допомогою тієї чи іншої наближеної формули. Для вирішення цього завдання на комп'ютері, серед
інших, можна скористатися формулами прямокутників, трапецій або формулою Сімпсона. У даній роботі розглядається
саме остання. p>
Розглянемо функцію y = f (x). Будемо вважати, що на відрізку [a, b] вона позитивна і безперервна.
Знайдемо площу криволінійної трапеції aABb (рис. 1). p>
p>
рис. 1 p>
Для цього поділимо відрізок [a, b] точкою c = (a + b)/2 навпіл і в точці C (c, f (c)) проведемо
дотичну до лінії y = f (x). Після цього розділимо [a, b] точками p і q на 3 рівні частини і проведемо через них прямі x = p і x = q. Нехай P і Q - точки перетину цих прямих з дотичній.
Поєднавши A з P і B з Q, отримаємо 3 прямолінійні трапеції aAPp, pPQq, qQBb. Тоді площа трапеції aABb можна
наближено порахувати за такою формулою p>
I »(aA + pP)/2 * h + (pP + qQ)/2 * h + (qQ +
bB)/2 * h, де h = (b - a)/3. p>
Звідки отримуємо p>
I »(b - a)/6 * (aA + 2 * (pP + qQ) + bB) p>
зауважимо, що aA = f (a), bB = f (b), а pP + qQ = 2 * f (c), у результаті отримуємо малу
фор - лу Сімпсона p>
I »(b - a)/6 * (f (a) + 4 * f (c) + f (b)) (1)
p>
p>
Мала формула Сімпсона дає інтеграл з хорошою точністю, коли графік
підінтегральною функції мало зігнутий, у випадках ж, коли дана більш складна функція мала формула Сімпсона непридатна. Тоді, щоб порахувати інтеграл
заданої функції потрібно розбити відрізок [a, b] на n частин і до кожного з відрізків застосувати формулу
(1). Після наведених вище дій вийде "велика" формула Сімпсона, що має вигляд, p>
ТАК p>
p>
НІ p>
p>
p>
3. Специфікації p>
Ім'я змінної b>
Тип b>
Призначення b>
n
int
Число розбиття відрізка [a, b]
i
int
Лічильник циклів
a
float
Нижня межа інтегрування
b
float
Верхня межа інтегрування
h
float
Крок розбиття відрізка
e
float
Допустима відносна помилка
f
float (*)
Покажчик на інтегруються фун - цію
s_ab
float
Сума значень фун - ції в точках a і b
s_even
float
Сума значень фун - ції в парних точках
s_odd
float
Сума значень фун - ції в парних точках
s_res
float
Поточний результат інтегрування
s_pres
float
Попередній результат інтегрування
4. Лістинг програми p>
# include p>
# include p>
/* Прототип фун - ції, яка обчислює інтеграл */ p>
float integral (float, float, float, float (*) (float)); p>
/* Прототип фун - ції, що задає інтегруються фун - цию */ p>
float f (float); p>
main () p>
( p>
float result; p>
result = integral (0, 6, .1, f); p>
printf ( "% f", result); p>
return 0; p>
) p>
/* Реалізація фун - ції, що задає інтегруються фун - цию */ p>
float f (float x) p>
( p>
/* Функція f (x) = x