Добавил:
Developer Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3 Лаборторная работа ВМ

.docx
Скачиваний:
0
Добавлен:
02.01.2024
Размер:
223.04 Кб
Скачать

Федеральное агентство связи Ордена

Трудового Красного Знамени

федеральное бюджетное образовательное учреждение высшего образования

«Московский Технический Университет Связи и Информатики»

(МТУСИ)

Кафедра Информатики

Предмет: Вычислительные модели

Лабораторная работа № 3

Тема:

«Численное интегрирование»

Вариант 00

Выполнил:

Проверил(а): Величайший преподаватель

_________________

Москва 0000

Задание

  1. Выбрать индивидуальное задание из табл. 6.4-1 для численного интегрирования.

  2. Составить схему алгоритма и написать программу по выбранному методу численного интегрирования (или по указанному преподавателем), провести контрольное тестирование на примере, разобранном в п. 6.4-5.

  3. Вычислить интеграл с точностью и записать результаты вычислений в табл. 6.4-2.

  4. Зависимости числа итераций от заданной точности в логарифмическом масштабе.

  5. Вычислить «ручным расчетом» интеграл методом, определяемым значением столбца m из таблицы 6.4-1, с шагом и ( и ) и оценить погрешность по правилу Рунге.

  6. Получить решения для индивидуального варианта задания с помощью одного из математических пакетов и сравнить с результатами, полученными ранее.

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


Результаты «ручного расчета» интеграла с шагом и ( и ) и оценка его погрешности по правилу Рунге

  1. Правило Рунге применяют для вычисления погрешности путём двойного просчёта интеграла с шагами h/2 и h, при этом погрешность вычисляется по формуле .

  2. Полагают, что интеграл вычислен с точностью Е, если тогда , где – уточненное значение интеграла, 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