Розробка програмного модуля для обчислення інтеграла

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати


Зміст

Введення

Постановка завдання

Проектування програмного модуля

Тестування програмного модуля

Висновок

Список використаних джерел

Введення

Метою даної курсової роботи є розробка програмного модуля для обчислення інтеграла за формулою трапеції і Сімпсона із заданою точністю , Визначаючи крок інтегрування за оцінкою залишкового члена. Для розробки використовується табличний процесор Excel і мова програмування Visual Basic for Application.

Ця курсова робота складається з 4 розділів.

У розділі «Постановка завдання» описані: математична модель задачі, вхідні і вихідні дані, обробка помилок, які можуть бути допущені при роботі з даною програмою.

У розділі «Проектування програмного модуля» приведена структурна діаграма програмного модуля, схема програмного модуля з її описом і описаний користувальницький інтерфейс.

У розділі «Реалізація програмного модуля» знаходиться код програми за коментарями до нього і описані використовувані оператори і функції.

У розділі «Тестування програмного модуля» показано роботу програми.

1. Постановка завдання

1.1 Математична модель задачі

Нехай потрібно обчислити інтеграл , Де f (x) - неперервна функція. Для простоти міркувань обмежимося випадком, коли f (x) ³ 0. Розіб'ємо відрізок [a, b] на n відрізків точками a = x 0 <x 1 <x 2 <...< x k-1 <x k <.. . <x n = b і за допомогою прямих х = х k побудуємо n прямолінійних трапецій (ці трапеції заштриховані на рис. 1). Сума площ трапецій наближено дорівнює площі криволінійної трапеції, тобто

Де f (x k-1) і f (x k) - відповідно підстави трапецій; x k - x k-1 = (ba) / n - їх висоти.

Таким чином, отримана наближена формула

яка і називається формулою трапецій. Ця ​​формула тим точніше, чим більше n.

Розділимо відрізок [a, b] на парне число рівних частин n = 2 m. Площа криволінійної трапеції відповідної першим двом відрізкам [x 0 x 1] та [x 1 x 2] і обмеженою заданої кривої y = f (x) замінимо площею криволінійної трапеції яка обмежена параболою другого ступеня проходить через три точки M (x 0 y 0) M 1 (x 1 y 1) M 2 (x 2 y 2) і має вісь паралельну осі Oy. Таку криволінійну трапецію будемо називати параболічної трапецією.

Рівняння параболи з віссю паралельної осі Oy має вигляд

Коефіцієнти A, B і C однозначно визначаються з умови що парабола проходить через три задані точки. Аналогічні параболи будуємо і для інших пар відрізків. Сума площ параболічних трапецій і дасть наближене значення інтеграла.

Обчислимо спочатку площа однієї параболічної трапеції.

Лемма: Якщо криволінійна трапеція обмежена параболою

віссю Ох і двома ординатами відстань між якими дорівнює 2 h то її площа дорівнює

(1)

де y 0 і y 2 - крайні ординати а y 1 - ордината кривої в середині відрізка.

Доказ: Розташуємо допоміжну систему координат так як показано на малюнку

Коефіцієнти в рівнянні параболи визначаються з наступних рівнянь:

Якщо то

Якщо то (2)

Якщо то

Вважаючи коефіцієнти ABC відомими визначимо площа параболічної трапеції з допомогою визначеного інтеграла:

Але з рівності (2) випливає що

.

Отже

що і було потрібно довести.

Повернемося знову до основної нашої задачі (див. рис). Користуємося формулою (1) ми можемо написати такі наближені рівності ( ):

Складаючи ліві і праві частини отримаємо зліва шуканий інтеграл праворуч його наближене значення:

або (3)

У кінцевому підсумку ми одержали формулу Сімпсона. Тут число точок ділення 2 m довільно але чим більше це число тим точніше сума в правій частині рівності (3) дає значення інтеграла.

1.2 Вхідні дані

У даному програмному модулі вхідних даних немає. Всі необхідні дані спочатку закладені в програму.

1.3 Вихідні дані

Вихідними даними є значення інтеграла .

Вимоги до вихідних даних:

  1. Всі вихідні дані виводяться на форму;

  2. До всіх вихідних даних заборонений доступ з боку користувача.

1.4 Обробка помилок.

У даній програмі кількість помилок користувача зведено до мінімуму, тому що користувач не вводить дані. Всі необхідні дані закладені в програму.

2 Проектування програмного модуля

2.1 Структурна діаграма програмного модуля


Малюнок 1. Структурна діаграма програмного модуля.

UserForm 1 - користувальницька форма.

UserForm _ Initialize () - процедура початкової ініціалізації користувача форми.

CommandButton 1_ Click () - процедура, що спрацьовує при натисканні кнопки «Обчислити інтеграл», яка виробляє обчислення і записує результат.

Simp (a As Double, b As Double) - функція обчислення інтеграла за формулою Сімпсона.

Trap (a As Double, b As Double) - функція обчислення інтеграла за формулою трапеції.

f (x As Double) - функція обчислює значення функції .

Розробка схеми програмного модуля та її опис

Малюнок 2. Блок схема основної програми.

1 - відбувається виклик функції обчислення інтеграла методом трапеціі.2 - відбувається виклик функції обчислення інтеграла за формулою Сімпсона.

Малюнок 3. Блок схема функції обчислення інтеграла за формулою Сімпсона.

1 - відбувається привласнення змінним початкових значень.

2 - відбувається присвоєння змінним чергових значень.

3 - описаний цикл від 0 до n.

4 - обчислюється аргумент.

5 - перевіряється умова.

6 - відбувається обчислення інтеграла.

7 - перевіряється умова.

8 - відбувається обчислення інтеграла.

9 - перевіряється умова.

10 - відбувається обчислення інтеграла.

11 - перевіряється умова.

12 - функції присвоюється значення інтеграла.

Малюнок 4. Блок схема функції обчислення інтеграла за формулою трапеції.

1 - відбувається присвоєння змінним початкових значень.

2 - відбувається присвоєння змінним чергових значень.

3 - описаний цикл від 0 до n.

4 - обчислюється аргумент і відбувається обчислення інтеграла.

5 - перевіряється умова.

6 - функції присвоюється значення інтеграла.

Малюнок 5. Блок схема обчислення значення функції.

1 - відбувається обчислення значення функції.

2.3 Розробка користувальницького інтерфейсу

При запуску програми з'являється наступне вікно:


Малюнок 6. Вікно програми.

У вікні програми розташовані вихідні дані в елементі управління Label, результат (елемент управління Label), таблиці значень елементі управління ListBox і кнопка «Обчислити».

3 Реалізація програмного модуля

3.1 Код програми

Dim n As Integer 'кількість поділок відрізка

Dim i As Integer 'рахівник ітерацій

Dim i1 As Double 'мінлива для знаходження інтеграла

Dim i2 As Double 'мінлива для знаходження інтеграла

Dim x As Double 'значення аргументу

Dim h As Double 'крок

Private Sub UserForm_Initialize ()

Application.Visible = False 'робимо Excel невидимим

End Sub

Private Sub CommandButton1_Click ()

Label3.Caption = Trap (0, 1) 'обчислення інтеграла методом трапеції

Label5.Caption = Simp (0, 1) 'обчислення інтеграла методом Сімпсона

End Sub

Public Function Trap (a As Double, b As Double) As Double 'знаходження інтеграла методом трапеції

n = 2

i2 = 0

h = 0.1

With ListBox1

. ColumnCount = 2

ListBox1.AddItem "x"

ListBox1.ColumnWidths = "30; 30"

ListBox1.List (0, 1) = "Результат"

Do

n = n * 2

h = (b - a) / n

i1 = i2

i2 = 0

For i = 1 To n

x = a + h * i

ListBox1.AddItem x

i2 = i2 + h * (f (x) + f (a + h * (i - 1))) / 2

ListBox1.List (i, 1) = i2

Next i

Loop While (Abs (i1 - i2) <0.005)

End With

Trap = i2

End Function

Public Function Simp (a As Double, b As Double) As Double 'знаходження інтеграла методом Сімпсона

n = 2

i2 = 0

h = 0.1

With ListBox2

. ColumnCount = 2

. ColumnWidths = "30; 30"

. AddItem "x"

. List (0, 1) = "Результат"

Do

n = n * 2

h = (b - a) / n

i1 = i2

i2 = 0

For i = 0 To n

x = a + h * i

. AddItem x

If (i = 0 Or i = n) Then

i2 = i2 + f (x) * (b - a) / (3 * n)

. List (i + 1, 1) = i2

Else

If (i Mod 2 = 0) Then

i2 = i2 + f (x) * 2 * (b - a) / (3 * n)

. List (i + 1, 1) = i2

Else

If (i Mod 2 <> 0) Then

i2 = i2 + f (x) * 4 * (b - a) / (3 * n)

. List (i + 1, 1) = i2

End If

End If

End If

Next i

Loop While (Abs (i1 - i2) <0.005)

End With

Simp = i2

End Function

Public Function f (x As Double) As Double 'знаходження значення функції

f = 1 / Sqr (1 + x ^ 2)

End Function

Private Sub UserForm_QueryClose (Cancel As Integer, CloseMode As Integer) 'Закриття форми

Select Case MsgBox ("Закрити вікно? ", vbYesNo + vbQuestion," Завершення роботи ")

Case vbYes

Cancel = 0

Application.Quit

Case vbNo

Cancel = -1

End Select

End Sub

3.2 Опис використовуваних операторів і функцій

При розробці програми були використані наступні оператори і функції:

Оператор присвоювання - задає змінної значення іншої змінної, вирази або об'єкта.

Умовний оператор (If ... Then ... Else ... End If) - можна вибирати та виконувати дії в залежності від істинності деякої умови.

Оператор циклу For - дозволяє повторювати групу операторів задане число разів.

Цикл з постусловіем (Do ... Loop While) - використовуються, коли заздалегідь невідомо, скільки разів буде виконуватися тіло циклу, але хоча б раз тіло циклу виконається.

Функція f (x As Double) - функція, яка обчислює значення функції в залежності від аргументу.

Функція Abs (x) - функція, яка повертає значення аргументу по модулю.

4 Тестування програмного модуля

Після натискання на кнопку «Обчислити інтеграл» з'являється результат.

Малюнок 7. Результат виконання програми.

Висновок

Метою даної курсової роботи є розробка програмного модуля для обчислення інтеграла за формулою трапеції і формулою Сімпсона із заданою точністю , Визначаючи крок інтегрування за оцінкою залишкового члена. Тестування показало, що результати, отримані розробленим програмним модулем, відповідають теоретичним розрахункам, але розрахунок за формулою Сімпсона виявився точніше.

Список використаних джерел

  1. Гарнаєв А. Ю. Самовчитель VBA. - СПб: БХВ - Санкт-Петербург, 2002.

  2. Гарнаєв А. Ю. Розробка додатків. - СПб: БХВ - Санкт-Петербург, 2004.

3. Павловська Т. Підручник з програмування С / С + +. - СПб, 2001.

4. Васильєв А. VBA в Office 2000: навчальний курс - СПб: Питер, 2002.

5. Кузьменков В. Г. VBA 2002. - М.: Видавництво БІНОМ, 2002.

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
46.7кб. | скачати


Схожі роботи:
Розробка універсального програмного модуля УПМ для РЕУ
Розробка програмного модуля
Проект програмного модуля для знаходження кореня рівняння
Проект програмного модуля для знаходження наближеного значення нескінченної суми
Розробка програмного модуля який знаходить суму кутових елементів матриці і суму елементів
Обчислення визначеного інтеграла
Розробка програмного забезпечення для пошуку коренів біквадратні рівняння
Порядок розробки програмного модуля Атестація програмних засобів
Розробка програмного забезпечення для розр та дисперсійної характеристики планарного хвилеводу
© Усі права захищені
написати до нас