Разработка в Visual Basic приложения 'Исследование методов вычисления определённых интегралов'
метод прямоугольник трапеция интеграл
Постановка задачи
Задача: в среде программирования Visual Basic 6.0 создать приложение, которое вычисляет нижеследующий определенный интеграл с помощью методов приближенного вычисления (методы прямоугольников и парабол):
Необходимо также представить график зависимости погрешности от числа разбиений N (N изменяется от 10 до 200 с шагом 10), показать визуализацию метода в виде вписанных N прямоугольников , или криволинейных трапеций ограниченных параболой второго порядка, указать погрешность при заданном числе разбиений (N задается произвольно на интервале от 10 до 200).
Теоретическая часть
Метод прямоугольников
Идея численного интегрирования методом прямоугольников заключается в том, что из каждой точки xi=x0+i · h, i=1,...., n - 1 проводится перпендикуляр до пересечения с кривой y = f(x), а затем отрезок кривой подынтегральной функции заменяется прямой, параллельной оси абсцисс, т.е. Каждая маленькая криволинейная трапеция заменяется на прямоугольник. Площадь полученной фигуры (рис.1) можно найти как сумму площадей прямоугольников, стороны которых равны h и yi
метод прямоугольник трапеция интеграл
Рис.1
Площадь отдельного прямоугольника составит
Si=yi·h
тогда
Формулу численного вычисления определенного интеграла можно записать в виде
Программа:
Private Sub Command1_Click()
Picture1.Cls
a = Val(Text1)
b = Val(Text2)
n = Val(Text3)
If Option1.Value Then
h = (b - a) / n
s = 0
x = a
For i = 0 To n - 1
y = f(x)
s = s + y
x = x + h
Next
D = s * h
End If
If Option2.Value Then
h = (b - a) / n
s = 0
x = a
For i = 1 To n - 1
x = x + h
y = f(x)
s = s + y
Next
D = (2 * s + f(a) + f(b)) / (2 * n)
End If
Picture1.Print D
End Sub
Private Sub Command2_Click()
Form2.Show
Form1.Hide
End Sub
Private Sub Command5_Click()
Form4.Show
End Sub
Приведём блок схему:
Рис.
Метод трапеций
Идея численного интегрирования методом трапеций заключается в том, что значение определенного интеграла можно найти как сумму площадей соответствующих трапеций
S1=(y0 + y1)·h/2 S2=(y1 + y2)·h/2 , … , Sn=(yn-1 + yn)·h/2
Приведём блок схему
Рис.
Cоздание проекта в VB
Курсовая работа была сделана в среде программирования Visual Basic 6.0. При запуске данной программы автоматически появляется окно, предлагающее нам создать новый проект Standard exe. Примем предложение и продолжим процедуру. Начнём с титульного листа, на котором будет располагаться кнопка перехода к другой форме: меню.
Рис.
Для создания формы «меню» нам необходимо в меню Tools выполним команду Menu Editor. В диалоговом окне впишем названия пунктов меню и названия процедур, которые будут запускаться при выполнение команд.
Рис.
Для создания форм, на которых будут выполняться команды необходимо кликнуть Project, затем выбрать Add Form, в появившемся окне выбрать Form. Каждая форма будет выполнять определённую функцию: визуализация, исследование и прочие. Рассмотрим форму информирующую нас поставленной задаче о программе.
Рис.
Создание этого приложения аналогично предшествующему.Для запуска программы вычисления интеграла методом прямоугольников нажимаем в меню кнопку: визуализация и исследование методов.
Рис.
Здесь также можно построить метод прямоугольников и построить графики погрешностей, а также записать некоторые значения в текстовый документ.
Рис.
Заключение
При выполнение курсовой работы было изучено методы прямоугольников и трапеций применяемые к решению определённых интегралов. Проанализирована погрешность при их использование на практике. Также в процессе выполнения работы были закреплены знания по информатике, практические навыки работы на персональном компьютере и разработке пользовательских приложений с использованием языков программирования высокого уровня и современных компьютерных технологий обработки информации, а также навыки в составлении текстовой документации.
Список литература
1.Г. М. Фихтенгольц «Курс дифференциального и интегрального исчисления» , том 2, Учебник для ВТУЗОВ , глава «Приближенное вычисление определенных интегралов».
2.Лабораторный комплекс по Visual Basic 6.0 .
3.MS Visual Basic 6.0 для профессионалов. Микаэл Хальворсон. ЭКОМ 2001 г.
4.Информатика. Высшая школа. Острейковский В. А. 2000 г.
5.www.informatic.ugatu.ic.ru - официальный сайт кафедры информатики УГАТУ, отдел дистанционной помощи студентам по написанию курсовых работ.
Приложение
Код программы вычисления площади
Dim x As Double
Dim a As Double
Dim b As Double
Private Sub Command1_Click()
Picture1.Cls
a = Val(Text1)
b = Val(Text2)
n = Val(Text3)
If Option1.Value Then
h = (b - a) / n
s = 0
x = a
For i = 0 To n - 1
y = f(x)
s = s + y
x = x + h
Next
D = s * h
End If
If Option2.Value Then
h = (b - a) / n
s = 0
x = a
For i = 1 To n - 1
x = x + h
y = f(x)
s = s + y
Next
D = (2 * s + f(a) + f(b)) / (2 * n)
End If
Picture1.Print D
End Sub
Private Sub Command2_Click()
Form2.Show
Form1.Hide
End Sub
Private Sub Command3_Click()
Form5.Show
Form1.Hide
End Sub
Private Sub Command5_Click()
Form4.Show
End Sub
Код программы построения графика
Private Sub Command1_Click()
Dim a As Double, i As Double, k As Double
a = Val(Form1.Text1.Text)
b = Val(Form1.Text2.Text)
n = Val(Form1.Text3.Text)
Max = f(a)
Min = f(a)
For i = a To b Step 0.5
If f(i) > Max Then Max = f(i)
If f(i) < Min Then Min = f(i)
Next
Picture1.Scale (a, Max)-(b, Min)
Picture1.Line (a, Min)-(b, Min)
Picture1.Line (a, Min)-(a, Max)
For i = a To b Step 0.001
Picture1.PSet (i, f(i))
Next
h = (b - a) / n
For k = a To b Step h
Picture1.Line (k, f(k + h))-(k + h, 0), RGB(255, 0, 0), B
Next
End Sub
Private Sub Command2_Click()
Form4.Hide
End Sub
Private Sub Command3_Click()
Picture1.Cls
End Sub
Код программы исследования на погрешность
Dim Et(200) As Double
Dim es(200) As Double
Private Sub Check2_Click()
End Sub
Private Sub Command1_Click()
Form5.Hide
Form2.Show
End Sub
Public Function f(x)
f = (x ^ 3) / (3 + x)
End Function
Public Function f1(x)
f1 = x ^ 3 / 3 - 1.5 * x ^ 2 + 9 * x - 27 * Log(Abs(x + 3))
End Function
Private Sub Command2_Click()
a = Text1
b = Text2
n1 = 10
N2 = 200
For n = 1 To 200 Step 10
Picture2.Cls
h = (b - a) / n
s = f1(b) - f1(a)
Next
Picture2.Print 'S= '; s
Picture1.Cls
Picture1.Scale (0, 40)-(215, -2)
Picture1.Line (0, 0)-(215, 0)
Picture1.Line (10, 0)-(10, 200)
a = 0
b = 1
j = 0
For n = 10 To 200 Step 10
h = (b - a) / n
s = 0
X1 = 0
For i = 1 To n
X1 = X1 + h
s = s + f(X1)
Next
Pr = h * s
h = (b - a) / n
s = 0
X1 = 0
For i = 1 To n - 1
X1 = X1 + h
s = s + f(X1)
Next
Tr = ((b - a) / (2 * n)) * (a + b + 2 * s)
N_L = f1(b) - f1(a)
Et(j) = Abs(Pr - N_L) * 100
es(j) = Abs(Tr - N_L) * 100
j = j + 1
Next n
n = 10
For i = 0 To j
Picture1.Line (n, 0)-(n, -0.5)
Picture1.Print n
If n = 200 Then Exit For
Picture1.Line (n, Et(i))-(n + 10, Et(i + 1)), vbRed
Picture1.Line (n, es(i))-(n + 10, es(i + 1)), vbBlue
n = n + 10
Next
For i = 2 To 40 Step 2
Picture1.Line (8, i)-(10, i)
Picture1.Print i
Next
save = Text4
If Check1.Value = vbChecked Then
Open save For Output As 1
Print #1, 'корень уравнения'; Format(X1, '0.000')
Close #1
End If
End Sub
Private Sub Text3_Change()
End Sub
25.