Private Sub CommandButton1_Click()
Dim a As Double
Dim b As Double
Dim n As Integer
If Not IsNumeric(TextBox1) Or Not IsNumeric(TextBox2) Or Not IsNumeric(TextBox3) Then
MsgBox "Не цифровые данные"
Exit Sub
End If
a = CDbl(TextBox1)
b = CDbl(TextBox2)
n = CDbl(TextBox3)
If OptionButton1 Then
TextBox4 = Format(Prym(a, b, n), "0.0000000000")
TextBox5 = Format(trap(a, b, n), "0.0000000000")
TextBox6 = Format(simpson(a, b, n), "0.0000000000")
End If
If OptionButton2 Then
TextBox4 = Format(Prym1(a, b, n), "0.0000000000")
TextBox5 = Format(trap1(a, b, n), "0.0000000000")
TextBox6 = Format(simpson1(a, b, n), "0.0000000000")
End If
If OptionButton3 Then
TextBox4 = Prym2(a, b, n)
TextBox5 = trap2(a, b, n)
TextBox6 = simpson2(a, b, n)
End If
End Sub
Модуль программно поддерживающий кнопку Выходпользовательской формы Вычисление определённого интеграла в VBA имеет вид:
Private Sub CommandButton2_Click()
Unload Me
End Sub
Модули подынтегральных функций имеют вид:
Function integral_1(x)
integral_1 = (x * (1 - x) ^ 2) ^ (1 / 3)
End Function
Function integral_2(x)
integral_2 = 3 * x / (1 + x ^ 3) ^ (1 / 2)
End Function
Function integral_3(x)
integral_3 = (Exp(x / 2)) / ((x + 1) ^ (1 / 2))
End Function
Используемые при вычислениях модули имеют вид:
Prym(a As Double, b As Double, n As Integer)
h = (b - a) / n
Prym = 0
For i = 0 To n - 1
Prym = Prym + integral_1(a + i * h)
Next i
Prym = Prym * h
End Function
Function Prym1(a As Double, b As Double, n As Integer)
h = (b - a) / n
Prym1 = 0
For i = 0 To n - 1
Prym1 = Prym1 + integral_2(a + i * h)
Next i
Prym1 = Prym1 * h
End Function
Function Prym2(a As Double, b As Double, n As Integer)
h = (b - a) / n
Prym2 = 0
For i = 0 To n - 1
Prym2 = Prym2 + integral_3(a + i * h)
Next i
Prym2 = Prym2 * h
End Function
Function trap(a As Double, b As Double, n As Integer)
h = (b - a) / n
trap = integral_1(a) + integral_1(b)
For i = 1 To n - 1
trap = trap + integral_1(a + i * h)
Next i
trap = trap * h
End Function
Function trap1(a As Double, b As Double, n As Integer)
h = (b - a) / n
trap1 = integral_2(a) + integral_2(b)
For i = 1 To n - 1
trap1 = trap1 + integral_2(a + i * h)
Next i
trap1 = trap1 * h
End Function
Function trap2(a As Double, b As Double, n As Integer)
h = (b - a) / n
trap2 = integral_3(a) + integral_3(b)
For i = 1 To n - 1
trap2 = trap2 + integral_3(a + i * h)
Next i
trap2 = trap2 * h
End Function
Function simpson(a As Double, b As Double, n As Integer)
h = (b - a) / n
simpson = integral_1(a) + integral_1(b)
For i = 1 To n - 1 Step 2
simpson = simpson + 4 * integral_1(a + i * h)
Next i
For i = 2 To n - 2 Step 2
simpson = simpson + 2 * integral_1(a + i * h)
Next i
simpson = simpson * (h / 3)
End Function
Function simpson1(a As Double, b As Double, n As Integer)
h = (b - a) / n
simpson1 = integral_2(a) + integral_2(b)
For i = 1 To n - 1 Step 2
simpson1 = simpson1 + 4 * integral_2(a + i * h)
Next i
For i = 2 To n - 2 Step 2
simpson1 = simpson1 + 2 * integral_2(a + i * h)
Next i
simpson1 = simpson1 * (h / 3)
End Function
Function simpson2(a As Double, b As Double, n As Integer)
h = (b - a) / n
simpson2 = integral_3(a) + integral_3(b)
For i = 1 To n - 1 Step 2
simpson2 = simpson2 + 4 * integral_3(a + i * h)
Next i
For i = 2 To n - 2 Step 2
simpson2 = simpson2 + 2 * integral_3(a + i * h)
Next i
simpson2 = simpson2 * (h / 3)
End Function
Для обеспечения в калькуляторе возможности вычислять определённый интеграл с новой подынтегральной функцией необходимо:
– создать модуль новой подынтегральной функции;
– создать модули вычисления методами прямоугольников, трапеций и Симпсона для добавляемой подынтегральной функции;
– добавить на пользовательскую форму Вычисление определённого интегралы в VBA объект OptionButton(в данном случае OptionButton4) и в модуле программно поддерживающем, его с использованием объектов TextBox, задать вариант пределов интегрирования и числа разбиений;
– внести изменения в модуль программно поддерживающий кнопку Вычислитьпользовательской формы Вычисление определённого интеграла в VBA в части обращения через объект OptionButton4к вновь созданным модулям вычисления определённого интеграла с новой подынтегральной.
Это достаточно легко выполняется копированием уже существующих модулей.
Дата добавления: 2020-07-18; просмотров: 475;