Определенного интеграла

 

В задании используется элемент управления 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
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 Методических указаний.









Дата добавления: 2015-02-05; просмотров: 1179;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.012 сек.