Программирование и исследование алгоритмов вычисления определенных интегралов
Краткое сожержание материала:
Размещено на
13
Размещено на
Пояснительная записка к курсовой работе:
“Программирование и исследование алгоритмов вычисления определенных интегралов”
Введение
На практике часто возникает необходимость вычислить определённый интеграл. Если интеграл берётся в алгебраических функциях, то всё в порядке и взять его вручную не представляет труда. А если интеграл не берётся в алгебраических функциях или просто их очень много, то приходится прибегать к помощи компьютерной техники. Существуют несколько способов вычисления определённых интегралов на ЭВМ, причем абсолютно все эти способы получают лишь приближённые значения. В этой работе мы рассмотрим два метода вычисления: метод трапеций и метод Симпсона (метод парабол).
Метод трапеций
Пусть Y=, где - интегрируемая функция, непрерывная на отрезке . Для наглядности будем предполагать, что положительна на отрезке . В этом случае Y представляет собой площадь криволинейной трапеции, ограниченной линиями: ,,,. Выберем произвольное натуральное число и разобьём отрезок на равных отрезков при помощи точек: , , , , …, . Прямые разбивают нашу трапецию на полосок. Каждая полоса имеет граничные вертикали: и . Соединим прямой те точки, в которых эти вертикали пересекают интегрируемую функцию . В результате площадь каждой полоски приблизительно стала равна площади обычной прямолинейной трапеции (см. рис. 1).
Рис. 1
Площадь самой левой полоски приближённо равна площади самой левой трапеции, а именно: . Из математических соображений и , а высота трапеции . Значит . Площади всех следующих полосок выразятся аналогичным способом и составят: , , , …, . Чтобы найти площадь интересующей нас криволинейной трапеции необходимо сложить площади всех полосок, которые в свою очередь приближённо равны площадям соответствующих прямолинейных трапеций. Следовательно, площадь криволинейной трапеции, а значит и численное значение заданного интеграла , равны.
Эту формулу можно записать в другом виде, используя математические сокращения и утверждение, что - длина одного из равных отрезков или высота каждой прямолинейной трапеции:
(1).
Данная формула называется формулой трапеций. Её точность зависит от . Чем больше количество разбиений отрезка интегрирования, тем выше точность вычислений.
Теперь перейдём к заданию: нам необходимо найти толщину слоя меди, выделившейся в результате электролиза водного раствора хлорида меди (II) на катоде. Известна зависимость силы тока от времени . Отсюда имеем . Фактически нам надо оформить функцию вычисления заданного определённого интеграла на Visual Basic 6.0 методом трапеций. Назовём функцию metod_trapec. При вызове функции задаваемыми параметрами будут down_predel=0 - нижний предел интегрирования, up_predel - верхний предел интегрирования (время наблюдения), chislo_razb - число разбиений отрезка интегрирования. Программный код функции будет выглядеть так:
Public Function metod_trapec(ByVal a As Single, ByVal b As Single, ByVal n As Long) As Double
Dim h As Single
Dim s As Double
Dim i As Long
h = (b - a) / n
s = (F(a, Io) + F(b, Io)) * h / 2
For i = 1 To n - 1
s = s + F(a + i * h, Io) * h
Next i
metod_trapec = s
End Function
__________
Фактические параметры down_predel, up_predel, chislo_razb соответствуют формальным параметрам a, b, n. В основе лежит формула трапеций (1), записанная по-другому:
.
Накапливаем сумму, результат которой и будет искомым значением определённого интеграла. Далее присваиваем имени функции значение переменной s.
Метод Симпсона (метод парабол)
Пусть Y=, где - интегрируемая функция, непрерывная на отрезке . Для наглядности будем предполагать, что положительна на отрезке . В этом случае Y представляет собой площадь криволинейной трапеции, ограниченной линиями: ,,,. Выберем произвольное натуральное чётное число и разобьём отрезок на равных отрезков при помощи точек: ,,,, …,. Прямые разбивают нашу трапецию на полосок. Каждая полоса имеет граничные вертикали: и . Отметим точки, в которых эти вертикали пересекают интегрируемую функцию . В результате получились точки: , , , …,. На всём отрезке интегрирования через точки и проведём графики квадратичных функций. В результате получилось, что площадь двух соседних полосок, ограниченных прямыми и приближённо равна площади под параболой, проведённой через точки и (см. рис. 2).
Рис. 2
Вычислим площадь под параболой, проходящей через точки и . Уравнение параболы имеет общий вид . Площадь под параболой:
(2).
Парабола проходит через три точки , и , где . Решая систему из трёх уравнений,
получаем: .
Подставляем в формулу (2). Отсюда следует, что , где . Распространяем на весь отрезок:
. Запишем с применением математических операндов:
(3).
Данная формула называется формулой Симпсона. Её точность зависит от . Чем больше количество разбиений отрезка интегрирования, тем выше точность вычислений.
Фактически нам надо оформить функцию вычисления заданного определённого интеграла на Visual Basic 6.0 методом Симпсона. Назовём функцию metod_Simpson. При вызове функции задаваемыми параметрами будут down_predel - нижний предел интегрирования, up_predel - верхний предел интегрирования, chislo_razb - число разбиений отрезка интегрирования. Программный код функции будет выглядеть так:
Public Function metod_Simpson(ByVal a1 As Single, ByVal b1 As Single, ByVal n As Long) As Double
Dim h As Single
Dim s As Double
Dim i As Long
Dim x As Single
h = (b1 - a1) / n
s = F(a1, Io) + F(b1, Io) + 4 * F(a1 + h, Io)
For i = 1 To Int(n / 2) - 1
x = a1 + 2 * h * i
s = s + 2 * F(x, Io) + 4 * F(x + h, Io)
Next i
metod_Simpson = s * h / 3
End Function
Фактические параметры down_predel, up_predel, chislo_razb соответствуют формальным параметрам a, b, n. В основе лежит формула Симпсона. Сумма первых трёх слагаемых в этой формуле является начальным значением переменной . Далее пробегаем по всему отрезку интегрирования, кроме конечных полосок, и накапливаем сумму. В конце умножаем её на . Результат и будет искомым значением определённого интеграла. Далее присваиваем имени функции значение переменной .
Создание приложения
При запуске Microsoft Visual Basic 6.0 автоматически выскакивает окно с предложением создать новый проект Standard EXE. Нажимаем OK. Начнём создание проекта с титульного листа. Для этого в меню Project выберем команду Add Form. В появившемся диалоговом окне выберем Dialog и нажмем OK. В открывшейся форме расставим объекты: Label1, Label2,..., Label8, как показано на рисунке (см. рис. 3).
Рис. 3 Титульный лист
алгоритм вычисление определенный интеграл
Присвоим свойству Caption значение “Титульный лист”. На кнопку Вход напишем следующий программный код:
Private Sub OKButton_Click()
Unload Dialog
Form1.Show
End Sub
При щелчке на кнопке Вход из памяти выгружается форма Dialog и загружается базовая форма, служащая начальной точкой для всех операций с программой, форма Form1. Для того, чтобы создать форму Form1, в меню Project выполним команду Add Form. В появившемся диалоговом окне выберем Form и нажмем OK. Щёлкнем правой кнопкой мыши на панели инструментов, выберем вкладку Components, загрузим нестандартные инструменты, которые понадобятся в будущем: Microsoft Windows Common Controls 6.0. Присвоим свойству Caption формы Form1 значение “Курсовой проект - Тема 7 вариант 9 (нахождение толщины слоя)”. Создадим меню для проекта. Для этого в меню Tools выполним команду Menu Editor. В появившемся диалоговом окне напишем названия пунктов меню и названия процедур, которые будут запускаться при выполнении команд меню. Редактор меню с введёнными именами представлен на рисунке (см. рис. 4).
Рис. 4 Редактор меню
Опишем, какие процедуры выполняются в каждом пункте меню.
1. MnuFileExit - осуществляет выход из приложения.
Private Sub MnuFileExit_Click()
End
End Sub
Рис. 5
2. MnuFileSave_rez - осуществляет сохранение результата эксперимента. Результат сохраняется в файле log.txt, куда записывается используемый метод, нижний предел интегрирования, верхний предел интегрирования, количество разбиений отрезка интегрирования, вычисленное значение интеграла, истинное значение интеграла, погрешность вычислений.
Private Sub MnuFileSave_rez_Click()
Dim metod As String
If Option1.Value Then
metod = "Метод трапеций"
Else
metod = "Метод Симпсона"
End If
Open "log.txt" For Output As #1
Print #1, "ОТЧЕТ П...
Разработка в Visual Basic приложения "Исследование методов вычисления определённых интегралов"
Рассмотрение методов прямоугольников и трапеций как способов вычисления определенных интегралов. Характеристика графика зависимости погрешности от чис...
Сущность метода Монте-Карло и моделирование случайных величин
Исследование способа вычисления кратных интегралов методом Монте-Карло. Общая схема метода Монте-Карло, вычисление определенных и кратных интегралов....
Программа для вычисления интегралов
Разработка программного обеспечения решения задач численного вычисления определенных интегралов. Анализ задачи, методы, инструменты: требования к аппа...
Численные методы
Понятие определенного интеграла, его геометрический смысл. Численные методы вычисления определенных интегралов. Формулы прямоугольников и трапеций. Пр...
Определенный интеграл. Теория и практика вычислений
Издание посвящено теоретическим и практическим аспектам вычисления определенных интегралов, а также методам их оценок, свойствам и приложениям к решен...