Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_VB_ч_1_МГУС.doc
Скачиваний:
45
Добавлен:
23.08.2019
Размер:
1.41 Mб
Скачать

Задание № 9. Приближенное вычисление определенного интеграла

В задании используется элемент управления ScriptControl, который позволяет писать исполняемый код – подынтегральное выражение, в момент выполнения приложения.

Постановка задачи

Разработать программу приближённого вычисления определенного интеграла по формулам трапеций. Программа должна вычислять любой определенный интеграл, а не только те, которые предусмотрены в программе заранее, позволять изменять пределы интегрирования.

Анализ задачи

Для интеграла, который в общем виде изображен на рис. 9.1, формулы трапеций для приближенного вычисления интеграла I можно записать в виде:

(9.1)

где

Δx – шаг интегрирования;

n – количество точек интегрирования.

Основная проблема – как использовать программу для приближенного вычисления любого интеграла. Чтобы это стало возможным, необходимо найти способ, при котором текстовое выражение по вычислению подынтегральной функции, записанное по правилам программирования, воспринималось как программный код Visual Basic и выполнялось системой программирования VB.

Если этого нельзя будет реализовать, тогда для вычисления нового интеграла придется вносить изменения в программу, и откомпилированную программу можно будет использовать для вычисления только одного определенного интеграла.

Алгоритм задачи

Вид формы при запуске приложения представлен на рис. 9.1.

Из рис. 9.1 понятно, как выглядит блок ввода начальных данных.

Блок приближенного вычисления интеграла по формулам трапеций (9.1) оформлен в виде процедуры.

И еще один блок – это вычисление подынтегральной функции. Этот блок также представлен как процедура, но записывается вся процедура как скрипт, в виде текстовой переменной. Выполняется этот скрипт только при построении на форме объекта управления ScriptControl.

Разработка пользовательского интерфейса

После загрузки нового проекта Standart.exe разместите на форме следующие элементы управления, установив для них свойства, указанные в табл. 9.1.

Таблица 9.1

Объект

Свойство

Установленное значение

Form1

Имя

frmИнтег

Caption

Приближенное вычисление определенного интеграла

Label1

Caption

Запрограммируйте подынтегральное выражение:

Label2

Caption

и задайте пределы интегрирования

Label3

Caption

I =

Label4

Caption

Интеграл I =

Label5

Caption

Результат вычислений

Label6

Caption

- точность расчета

Text1

Имя

txFormula

Text2

Имя

txtA

Text3

Имя

txtB

Text4

Имя

txtТочность

ScriptControl1

все свойства

принять по умолчанию

Image1

Picture

(Bitmap) – внедрить формулу, введенную в Word с помощью редактора формул

Line1

BorderWith

2

Command1

Имя

cmdИнтеграл

Caption

Вычислить

Command2

Имя

cmdEnd

Caption

Выход

Для размещения на форме элемента управления ScriptControl необходимо сначала установить его на панель управления. Для этого следует щелкнуть правой кнопкой на панели управления и в контекстном меню выполнить команду Компоненты… В диалоговом окне такого же названия на вкладке Управление отметить флажком Microsoft Script Control 1.0 и нажать кнопку ОК.

После размещения на форме всех элементов управления перейдите к написанию программного кода.

Написание программного кода

Перед написанием процедур объявите глобальные переменные в модуле формы в разделе (General) (Declarations):

Dim formula As String, x As Variant, y As Variant

Dim acode As String

Для события Click кнопки cmdИнтеграл (<Вычислить>) напишите следующий код:

Private Sub cmdИнтеграл_Click()

Dim a1 As Single, b1 As Single, n As Long

Dim OpInt As Single, Y1 As Single

Dim Точно As Single, i As Integer

On Error GoTo err1 ‘перехватываем ошибку, вызванную

‘ неправильным вводом подынтегрального выражения или

‘ или пределов интегрирования

frmИнтег.Cls

Cls

Точно = Val(txtТочность)

If Точно = 0 Then Точно = 0.0001

formula = txtFormula

a1 = Val(txtA): b1 = Val(txtB)

n = 200

'формирование скрипта, который выполняется в процедуре Fun():

acode = "Sub F(x, y):" & "y = " & formula & ":" & "End Sub"

ScriptControl1.Reset

ScriptControl1.AddCode acode

‘ обращаемся к процедуре Интеграл:

Интеграл a1, b1, n, OpInt, Точно

lblResult = OpInt ‘ выдаем вычисленное значение интеграла

err1:

If Err Then

MsgBox "Проверьте синтксис введенного выражения _ f(x)" & vbCrLf & "и пределы интегрирования", _

vbCritical + vbOKOnly, "Внимание!"

Exit Sub ‘ досрочно выходим из процедуры

End If

End Sub

В модуле формы программируем процедуру вычисления определенного интеграла методом трапеций с именем Интеграл и пятью формальными параметрами.

Sub Интеграл(a As Single, b As Single, n As Long, _

IntO As Single, Точность As Single)

Dim H As Single, i As Long, IntO_1 As Single, x1 As Single

frmИнтег.Cls

'a, b - пределы интегрирования, n - кол-во отрезков

'Fun() -подынтегральная функция

'IntO - результат - определенный интеграл

IntO = 200

IntO_1 = 300

kol = 1

Do

kol = kol + 1

IntO_1 = IntO

H = (b - a) / n: x = a: IntO = 0 's = 0:

For i = 1 To n - 1

x = x + H: Fun: IntO = IntO + y

Next i

x = a: Fun: ya = y

x = b: Fun: yb = y

IntO = H * (ya + yb + 2 * IntO) / 2

n = n * 1.2

Loop While Abs(IntO - IntO_1) > Точность

End Sub

Функция Fun() создана для обращения к функции F, которая вводится пользователем и выполняется с помощью объекта управления ScriptControl1.

Sub Fun()

ScriptControl1.Run "F", x, y

End Sub

Private Sub cmdEnd_Click()

End

End Sub

Остальные практические задания по программированию на Visual Basic содержатся в части 2 Методических указаний.