Файл: Лабораторная работа 4 Численное интегрирование по дисциплине Численные методы студент гр. Бик2106 Михеева Е. В.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 30.11.2023

Просмотров: 34

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

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

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



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

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

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

по дисциплине

«Численные методы»

Выполнил: студент гр. БИК2106 Михеева Е. В.

Проверил: ст. преподаватель Юсков И. О.

Москва, 2023 г.

  1. Индивидуальный вариант задания

– подынтегральная функция

a=−2.5, b=-1.5 – пределы интегрирования

Вычислить интеграл методом средних прямоугольников, написать программу для вычисления интеграла методом Симпсона.

h0=0,25 – начальный шаг интегрирования

методы интегрирования – средних прямоугольников, трапеций, Симпсона

  1. Метод средних прямоугольников

Правило Рунге

Его применяют для вычисления погрешности путём двойного просчёта интеграла с шагами , при этом погрешность вычисляется по формуле .

Полагают, что интеграл вычислен с точностью E, если ; тогда , где I – уточнённое значение интеграла, P – порядок метода (для метода средних прямоугольников и трапеций – 2, для метода Симпсона – 4).

Итак, перейдем к методу средних прямоугольников и оценим погрешность интегрирования методом двойного просчёта:






Из расчетов можем сделать вывод, что погрешность не превышает 10-3, так как модуль R меньше, чем 10-3.

  1. Метод Симпсона

Теперь вычисляю интеграл по формуле Симпсона используя программу, написанную мной на языке Python. По заданию надо вычислить точностями 10-2, 10-3, 10-4.

Программа представлена на следующем рисунке:

import numpy as np

import math as m

def f(x):

  return -2*m.sin(4*x)*m.log(-x)+5

def Simpson(func,a,b,h):

  n = (b-a)/h

  f0 = func(a)

  ev = 0

  for i in range(1,int(n)):

    f0 += 2*func(a+i*h) if ev else 4*func(a+i*h)

    ev = not ev

  f0 += func(b)

  return f0*(h/3)

def Solve(func,a,b,h,eps):

  I1 = Simpson(func,a,b,h)

  I2 = Simpson(func,a,b,h/2)

  R = (I2-I1)/((2**4)-1)

  print(R)

  if np.abs(R) > eps:

    return Solve(func,a,b,h/2,eps)

  return I2+R

print(Solve(f,-2.5,-1.5,0.25,10**-4))

-0.00026182170223876255

-1.4517635460660946e-05

5.590374499495849

Исходя из результатов работы, можно сделать вывод что по формуле Симпсона интеграл вычисляется гораздо точнее, нежели по формуле прямоугольников. Чтобы увеличить точность расчётов, достаточно уменьшить шаг интегрирования h.