Лабы / ЧМ. 7варик / ЛР4. 7варик
.odtМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ
КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики»
Кафедра «Информатика»
Лабораторная работа №4
«Численное интегрирование»
по дисциплине
«Численные методы»
Выполнил: студент гр. БИК2107 Мальцев В.В.
Проверил:
Москва, 2022 г.
4.1. Вопросы, подлежащие изучению
Постановка задачи численного интегрирования.
Методы прямоугольников, трапеций, Симпсона.
Оценка погрешности численного интегрирования. Правило Рунге.
Графическая иллюстрация методов прямоугольников, трапеций и Симпсона.
4.2. Задание
Выбрать индивидуальное задание из табл.3-1 для численного интегрирования:
f(x) – подынтегральную функцию;
a, b– пределы интегрирования;
методы интегрирования для выполнения п.2 – значение в столбце tиm;
начальный шаг интегрирования h0.
При этом значения в столбцах t и m означают: 1 –интегрирование методом средних прямоугольников, 2 – методом трапеций, 3 – методом Симпсона.
В сценарии пакета Scilab создать функцию для вычисления интеграла по 1-му заданному методу, определяя значения (столбец m)из табл. 3-1, с шагом и h0 и h0 / 2 (I и I).
Провести оценку погрешностей полученных результатов по правилу Рунге.
Провести оценку погрешностей полученных результатов по правилу Рунге.
Написать и выполнить программу вычисляется интеграла по 2-му заданному методу (столбец t из табл. 3-1) с точностью 10-4.
Вычислить заданный интеграл с использованием функции intg пакета Scilab.
4.3. Варианты задания
Таблица 3-1
-
№
Подынтегральная функция
a
b
t
m
1
f(x) = 8 e-x sin(-2x)
2
3
1
3
0.25
2
f(x) = e-x sin(2x)
0
2
2
1
0.5
3
f(x) = x3/2 – 2 x sin(x)
3
4
3
2
0.25
4
f(x) = e-xcos(-2x)
2
4
1
3
0.5
5
f(x) = cos(2x) + 2 sin(x)
1
3
2
1
0.5
6
f(x) = 8 sin(2x) – x
0.2
1.2
3
2
0.25
7
f(x) = 5 cos(-2x) e-x
-0.5
0.5
2
3
0.25
8
f(x) = x sin(x + 1) – cos(x – 5)
1
2
1
2
0.25
9
f(x) = 0,25 x3 + cos(x/4)
1
3
1
3
0,5
10
f(x) = sin(2x) – 2 sin(x)
3.5
5
1
3
0.5
11
f(x) = sin(ex) – e-x +1
0
1
2
1
0.25
12
f(x) = 5 x sin(x + 1) + 2 cos(x)
1
2
1
2
0.25
13
f(x) = 5 e-x + 4 x + x3/3
-1
1
1
2
0.5
14
f(x) = -2 sin(4x) ln(-x) + 5
-2.5
-1.5
1
3
0.25
15
f(x) = sin(x – 1) – x cos(x + 3)
-4
-2
3
1
0.5
16
f(x) = 4 sin (x) – x1/2
1
2
2
3
0.25
17
f(x) = 5 sin3(x) + cos3(x)
1
2
2
1
0.25
18
f(x) = cos(2x + 1) ln (2 / x) + 3
1
3
3
2
0.5
19
f(x) = 3 cos(x2) / ln(x + 5)
-1
1
1
3
0.5
20
f(x) = sin(x2) + 1 / (2 – x)
-1.5
0.5
2
1
0.5
21
f(x) = x sin(x) + cos(x) + 5
0
2
1
2
0.5
22
f(x) = – cos(x) – cos(2x) – x + 5
1
3
3
1
0.5
23
f(x) = 1 + sin(4x) / ln(x)
1.5
2.5
1
3
0.25
24
f(x) = (1 + x2)1/2 + e-x
-1
2
2
1
0.75
25
f(x) = sin(x + 1) e2 / x
1
2
3
2
0.25
26
f(x) = 2 (1 + x) e-x – 2 cos(x)
1
4
2
3
0.75
27
f(x) = – 8 sin(– x3) e-x
0.4
1.4
1
3
0.25
28
f(x) = – 10 sin(x3) cos(– x)
-1.4
-0.4
2
1
0.25
29
f(x) = x2cos(x + 3) – 4
3
4
3
1
0.25
30
f(x) = – cos(x – 5) e2x / 3
1
3
1
3
0.5
4.4. Содержание отчета
Индивидуальное задание.
Сценарий пакета Scilab для проведения расчета двумя заданными методами интегралов с шагом h0 и h0/2 (IH0 и IH0/2 ) и значения погрешностей по правилу Рунге.
Программа вычисления интеграла по 2-му заданному методу с точностью 10-4.
Результаты программы
Ход работы
Задания для численного интегрирования:
f(x) = 5 cos(-2x) e-x– подынтегральная функция;
a=-0.5, b=0.5–пределы интегрирования;
методы интегрирования – Симпсона, трапеций
начальный шаг интегрирования h0=0.25.
Вычисление интегралов с шагом h0 и h0/2 (Ih0 и Ih0/2 ) и оценка его погрешности по правилу Рунге
Правило Рунге применяют для вычисления погрешности путём двойного просчёта интеграла с шагами h/2 и h,при этом погрешность вычисляется по формуле R = |Ih - Ih/2| / (2p - 1) .
Полагают, что интеграл вычислен с точностьюЕ, если |R|<=E тогда I = Ih/2 + R , где I – уточненное значение интеграла, p – порядок метода.
Вычислим интеграл по формуле
Симпсона и оценим погрешность интегрирования методом двойного просчёта:
1) a = -0.5, b = 0.5, h = 0.25, n = (b – a) / h + 1 = 5
xi = [-0.5, -0.25, 0, 0.25, 0.5]
f(xi) = [4.454, 5.634, 5, 3.417 , 1.638 ]
I0.25 = 0.25/3 * ( 4.454+1.638+4*(5.634+3.417)+2*5) = 4.35825
2) a = -0.5, b = 0.5, h = h/2 = 0.125, n = (b – a) / h + 1 = 9
xi = [-0.5, -0.375, -0.25, -0.125, 0, 0.125, 0.25, 0.375, 0.5]
f(xi) = [4.454, 5.323, 5.634, 5.489, 5, 4.275, 3.417, 2.514, 1.638]
I0.125=0.125/3*(4.454+1.638+4*(5.323+5.489+4.275+2.514)+2*(5.634+5+3.417)) = 4.358
3) Ra = |I0.125 - I0.25 | = 0.0116, R = |I0.125 - I0.25 | / 3 = 0.0116/3 = 0.0038
Ra <= R
4.5 Вычисление определенных интегралов программой
from math import * def f(x): return 5*cos(-2*x)*e**(-x) a = -0.5 b = 0.5 n = 4 I = f(a) + f(b) def trapecia(a, I): h = (b - a) / n for i in range(1, n): x = a + i*h I = I + f(x) I = h*I return I, n+1, h trap = trapecia(a, I) print(trap) a = -0.5 b = 0.5 n = 2*n I = f(a) + f(b) def trapecia1(a, I): h = (b - a) / n for i in range(1, n): x = a + i*h I = I + f(x) I = h*I return I, n+1, h trap1 = trapecia1(a, I) print(trap1)
И его результат
(4.3587084273796055, 20001, 5e-05)
(4.358632272541257, 40001, 2.5e-05)
7.615483834833014e-05 n1=20000.0 n2=40000
from math import * def f(x): return x a = 0 b = 1 n = 20000 I = f(a) + f(b) def trapecia(a, I): h = (b - a) / n for i in range(1, n): x = a + i*h I = I + f(x) I = h*I return I, n, h trap = trapecia(a, I) print(trap) a = 0 b = 1 n = 2*n I = f(a) + f(b) def trapecia1(a, I): h = (b - a) / n for i in range(1, n): x = a + i*h I = I + f(x) I = h*I return I, n, h trap1 = trapecia1(a, I) print(trap1) def R(I0, e=0.0001): I = trap[0] if abs(I - I0)/3 < e: I0 = I I = trap1[0] return abs(I - I0) R = R(I, e) print(float(R), n/2, n)
Вывод:
В данной работе я смог сделать численное интегрирование. На компьютере и на бумаге
