Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Матан v.0.1.doc
Скачиваний:
15
Добавлен:
01.04.2025
Размер:
3 Мб
Скачать
☆

6.4. Вычисление интеграла по формуле прямоугольников

Sub Pryamougolnik() 'начало программы, название программы

Dim x1 As Single 'задание типа параметра х1

Dim x2 As Single 'задание типа параметра х2

Dim h As Single 'звдвние типа параметра шага

Dim a As Single 'задание типа нижнего предела

Dim b As Single 'задание типа верхнего предела

Dim k As Integer 'задание типа числа разбиений

Dim s As Single 'задание типа площади

a = CSng(InputBox("Введите нижний предел")) 'диалог запроса размера нижнего педела

b = CSng(InputBox("Введите верхний предел")) 'диалог запроса размера верхнего предела

k = CSng(InputBox("Введите число разбиений")) 'диалог запроса числа разбиений

h = (b - a) / k 'вычисление длины шага

x1 = a - h / 2 'Вычисление параметра х1

Do 'начало цикла

x2 = x1 + h 'вычисление значения х2

s = s + h * func(x2) 'вычисление площади

x1 = x2 'переприсвоение значений

Loop While x2 < b 'конец цикла и его условие

k = MsgBox(s, 0, "Результат") 'вывод сообщения на экран

Worksheets(1).Cells(1, 1).Value = "Результат" 'вывод слова "Результат" на лист 1

Worksheets(1).Cells(1, 2).Formula = s 'вывод искомого значения на лист1, ячейку (1,2)

End Sub 'конец программы

6.5 Вычисление интеграла по формуле трапеций

Sub Trap() 'начало программы

Dim a As Single 'Задание типа нижнего предела

Dim b As Single 'Задание типа верхнего предела

Dim n As Integer 'зажание типа числа отрезков

Dim h As Single 'задание типа числа отрезков

Dim i As Integer 'задание типа переменной в цикле

Dim Integ As Single 'задание типа значения интеграла

Dim x0 As Single 'задание типа х0

a = CSng(InputBox("Введите нижний предел")) 'диалог запроса нижнего предела

b = CSng(InputBox("Введите верхний предел")) 'диалог запроса верхнего предепа

n = CSng(InputBox("Введите число разбиений")) 'диалог запроса числа отрезков

h = (b - a) / n 'вычисление длины шага

Integ = 0 'присвоение интегралу значение 0

x0 = a + h 'вычисление х0

For i = 1 To n - 1 'начало цикла

Integ = Integ + func(x0) 'вычисление интеграла

x0 = x0 + h 'вычисление х0

Next i 'конец цыкла

Integ = h / 2 * (func(a) + 2 * Integ + func(b)) 'вычисление интеграла

Worksheets(1).Cells(1, 1).Value = "Значение интеграла" 'вывод на лист 1 "значение интеграла"

Worksheets(1).Cells(2, 1).Formula = Integ 'вывод на лист 1 значение вычисленного интеграла

MsgBox Integ, vbExclamation, "интеграл равен" 'вывод сообщения

End Sub 'конец программы

Function func(x) As Single 'объявление функции

func = x ^ 3 'функция получена из ур-я

End Function 'конец объявления

6.6. Вычисление интеграла методом Симпсона

, n = 2m частей: с шагом . Пусть , тогда ,

Затем количество точек разбиения удваивается и производится оценка точности вычислений:

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

где где k = 0, 1, 2, …, 2M; , .

Sub Симпсон ()

h = (b-a) / (2 * m)

S1 = 0

S2 = 0

For k =1 to m

x = a + h (2 * k - 1)

S1 = S1 + funk (x)

next k

for k =1 to m -1

x = a + h * 2 * k

S2 = S2 + funk (x)

next k

S = h * (funk (a) + funk (b) + 4 * S1 + 2 * S2) / 3

K = MsgBox (S, 1,”Интеграл по Симпсону = ”)

end Sub

Function funk (x)

funk k = exp (x)

end Function