ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 23.11.2023
Просмотров: 71
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Министерство цифрового развития, связи и массовых коммуникацийРоссийской ФедерацииОрдена Трудового Красного Знамени федеральное государственноебюджетное образовательное учреждение высшего образованияМосковский технический университет связи и информатики_________________________________________________________________Кафедра «Информатика»Лабораторная работа № 4 по дисциплине Численные методы«Численное интегрирование»Выполнил студент группы БИН2109: Зубков М.В.Проверил: Мацкевич А.Г.Москва 2023Цель работы:В этой лабораторной работе решается задача численного интегрирования.Индивидуальное задание:Для решения задачи численного интегрирования выберем функцию подынтегральную функцию, пределы интегрирования и метод интегрирования, согласно варианту №5:
(
и
) методом трапеций и оценка его погрешности по правилу РунгеПравило Рунге применяют для вычисления погрешности путём двойного просчёта интеграла с шагами и h, при этом погрешность вычисляется по формуле Полагают, что интеграл вычислен с точностью Е, если |R| < E, тогда , где I – уточненное значение интеграла, p – порядок метода.
Вычислим интеграл по формуле трапеций и оценим погрешность интегрирования методом двойного просчета: , где yi = f(xi)Расчет производился с помощью математического пакета Mathcad и представлен на рисунке 1.Рисунок 1 – вычисление интеграла методом трапецийОценка погрешности:Вычисление интегралов с шагом h0 и
(
и
) методом средних прямоугольников при помощи программыНиже представлен программный код, вычисляющий интеграл с заданной точностью.import matha = float(input("Введите нижний предел интегрирования: "))b = float(input("Введите верхний предел интегрирования: "))eps = float(input("Введите точность: "))n = 1I = 0iterations = 0while True:h = (b - a) / nsumma = 0for i in range(n):xi = a + i * h + h / 2fxi = math.cos(2 * xi) + 2 * math.sin(xi)summa += fxiI_new = h * summaiterations += 1R = (I_new - I) / 3if abs(R) < eps:breakelse:I = I_newn *= 2print(f"При точности {eps} интеграл равен {I_new}")print(f"Количество итераций: {iterations}")print(f"Оценка погрешности: {R}")На рисунке 2 представлен результат вычисления интеграла программой для точности 10-2.Рисунок 2 – вычисление интеграла с точностью 10-2Результаты вычислений интеграла с другими точностями представлены в таблице 1.Таблица 1 – результаты вычислений интеграла при помози программы
График зависимости количества итераций от точности приближения представлен на рисунке 3.Рисунок 3 – зависимость количества итераций от точности приближения
-
f(x) = cos(2x) + 2 sin(x) – подынтегральная функция; -
a = 1, b = 3 – пределы интегрирования; -
m = 2, т.е. метод интегрирования – метод трапеций; -
t = 1, т.е. метод интегрирования – метод средних прямоугольников; -
h0 = 0.5 – шаг интегрирования.
(
и
) методом трапеций и оценка его погрешности по правилу РунгеПравило Рунге применяют для вычисления погрешности путём двойного просчёта интеграла с шагами и h, при этом погрешность вычисляется по формуле Полагают, что интеграл вычислен с точностью Е, если |R| < E, тогда , где I – уточненное значение интеграла, p – порядок метода.
Вычислим интеграл по формуле трапеций и оценим погрешность интегрирования методом двойного просчета: , где yi = f(xi)Расчет производился с помощью математического пакета Mathcad и представлен на рисунке 1.Рисунок 1 – вычисление интеграла методом трапецийОценка погрешности:Вычисление интегралов с шагом h0 и
(
и
) методом средних прямоугольников при помощи программыНиже представлен программный код, вычисляющий интеграл с заданной точностью.import matha = float(input("Введите нижний предел интегрирования: "))b = float(input("Введите верхний предел интегрирования: "))eps = float(input("Введите точность: "))n = 1I = 0iterations = 0while True:h = (b - a) / nsumma = 0for i in range(n):xi = a + i * h + h / 2fxi = math.cos(2 * xi) + 2 * math.sin(xi)summa += fxiI_new = h * summaiterations += 1R = (I_new - I) / 3if abs(R) < eps:breakelse:I = I_newn *= 2print(f"При точности {eps} интеграл равен {I_new}")print(f"Количество итераций: {iterations}")print(f"Оценка погрешности: {R}")На рисунке 2 представлен результат вычисления интеграла программой для точности 10-2.Рисунок 2 – вычисление интеграла с точностью 10-2Результаты вычислений интеграла с другими точностями представлены в таблице 1.Таблица 1 – результаты вычислений интеграла при помози программы| Точность приближения | Значение интеграла | Оценка погрешности | Количество итераций |
| 10-2 | 2.47284 | -0.00425 | 3 |
| 10-3 | 2.46667 | -0.00043 | 5 |
| 10-4 | 2.46626 | -2.77606·10-5 | 7 |
| 10-5 | 2.46624 | -6.94716·10-6 | 8 |
График зависимости количества итераций от точности приближения представлен на рисунке 3.Рисунок 3 – зависимость количества итераций от точности приближения