3 Лаборторная работа ВМ
.docxФедеральное агентство связи Ордена
Трудового Красного Знамени
федеральное бюджетное образовательное учреждение высшего образования
«Московский Технический Университет Связи и Информатики»
(МТУСИ)
Кафедра Информатики
Предмет: Вычислительные модели
Лабораторная работа № 3
Тема:
«Численное интегрирование»
Вариант 00
Выполнил:
Проверил(а): Величайший преподаватель
_________________
Москва 0000
Задание
Выбрать индивидуальное задание из табл. 6.4-1 для численного интегрирования.
Составить схему алгоритма и написать программу по выбранному методу численного интегрирования (или по указанному преподавателем), провести контрольное тестирование на примере, разобранном в п. 6.4-5.
Вычислить интеграл с точностью и записать результаты вычислений в табл. 6.4-2.
Зависимости числа итераций от заданной точности в логарифмическом масштабе.
Вычислить «ручным расчетом» интеграл методом, определяемым значением столбца m из таблицы 6.4-1, с шагом и ( и ) и оценить погрешность по правилу Рунге.
Получить решения для индивидуального варианта задания с помощью одного из математических пакетов и сравнить с результатами, полученными ранее.
-
№
f(x)
a
b
t
m
18
cos(2x + 1) ln (2 / x) + 3
1
3
3
2
0.5
Задания для численного интегрирования:
cos(2x + 1) ln (2 / x) + 3– подынтегральная функция;
a=1, b=3 – пределы интегрирования;
методы интегрирования для выполнения расчета на ПК – Метод Симпсона
методы интегрирования для выполнения ручного рассчета –Метод Трапеций
начальный шаг интегрирования h0=0.5.
Алгоритм программы
Код программы
Код программы для Метода Симпсона
Option Strict On
Option Explicit On
Imports System.Math
Public Class Form1
Sub vvod(ByRef z As Double, ByVal T As TextBox)
z = Val(T.Text)
End Sub
Function fun(ByVal x As Double) As Double
Dim f As Double
f = Cos(2 * x + 1) * Log(2 / x) + 3
Return f
End Function
Sub work(ByVal a As Double, ByVal b As Double, ByVal ee As Double, ByRef n As Integer)
Dim h, x, c, s, s1 As Double
Dim i As Integer
n = 2
h = (b - a) / n
s = (fun(a) + 4 * fun((a + b) / 2) + fun(b)) * (h / 3)
ListBox1.Items.Add("n: " & n) : ListBox2.Items.Add(vbNewLine)
ListBox3.Items.Add("s: " & s) : ListBox4.Items.Add("h: " & h)
Do
n = 2 * n
h = (b - a) / n
s1 = s
c = 4
x = a
s = fun(a) + fun(b)
For i = 1 To n - 1
x = x + h
s = s + c * fun(x)
c = 6 - c
Next i
s = s * h / 3
ListBox1.Items.Add("n: " & n) : ListBox2.Items.Add("s1: " & s1)
ListBox3.Items.Add("s: " & s) : ListBox4.Items.Add("h: " & h)
Loop Until Abs((s - s1) / 15) < ee
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim n As Integer
Dim a, b, ee As Double
ListBox1.Items.Clear() : ListBox2.Items.Clear() : ListBox3.Items.Clear() :
ListBox4.Items.Clear()
vvod(a, TextBox1)
vvod(b, TextBox2)
vvod(ee, TextBox3)
work(a, b, ee, n)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End
End Sub
End Class
Результат выполнения программы
Зависимости числа итераций от точности по формуле Симпсона:
-
E
0.1
0.01
0.001
0.0001
n
4
4
8
16
График зависимости числа разбиений отрезка интегрирования n от -lg(E), где Е заданная точность:
Результаты вычисления «расчета на ПК»
i |
E |
n |
h |
I |
1 |
0.1 |
4 |
0,5 |
5,56648649944128 |
2 |
0.01 |
4 |
0,5 |
5,56648649944128 |
3 |
0.001 |
8 |
0,25 |
5,56270842664581 |
4 |
0.0001 |
16 |
0,125 |
5,56249275048056 |
Результаты «ручного расчета» интеграла с шагом и ( и ) и оценка его погрешности по правилу Рунге
Правило Рунге применяют для вычисления погрешности путём двойного просчёта интеграла с шагами h/2 и h, при этом погрешность вычисляется по формуле .
Полагают, что интеграл вычислен с точностью Е, если тогда , где – уточненное значение интеграла, p – порядок метода.
Вычислим интеграл методом Трапеций и оценим погрешность интегрирования методом двойного просчета:
· Подынтегральная функция 𝒇(𝒙)= cos(2*x+1)*ln(2/x)+3
· Пределы интегрирования a = 1, b = 3
· Начальный шаг интегрирования: h0 = 0. 5
Вычисление Ih с шагом h = 0.5:
n = n = 4
Рассчитаем :
Рассчитаем :
n = n = 8
5,5597509
Вычислим значение погрешности:
R= 0,0029575
I= 5,5597509+0,002957=5.562707927
Проверим в Mathcad