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

Лабы / ЧМ. 7варик / ЛР4. 7варик

.odt
Скачиваний:
4
Добавлен:
18.10.2025
Размер:
198.93 Кб
Скачать

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

КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

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

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

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

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

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

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

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

Выполнил: студент гр. БИК2107 Мальцев В.В.

Проверил:

Москва, 2022 г.

4.1. Вопросы, подлежащие изучению

  1. Постановка задачи численного интегрирования.

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

  3. Оценка погрешности численного интегрирования. Правило Рунге.

  4. Графическая иллюстрация методов прямоугольников, трапеций и Симпсона.

4.2. Задание

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

  • f(x) – подынтегральную функцию;

  • a, b– пределы интегрирования;

  • методы интегрирования для выполнения п.2 – значение в столбце tиm;

  • начальный шаг интегрирования h0.

При этом значения в столбцах t и m означают: 1 –интегрирование методом средних прямоугольников, 2 – методом трапеций, 3 – методом Симпсона.

  1. В сценарии пакета Scilab создать функцию для вычисления интеграла по 1-му заданному методу, определяя значения (столбец m)из табл. 3-1, с шагом и h0 и h0 / 2 (I и I).

  2. Провести оценку погрешностей полученных результатов по правилу Рунге.

  3. Провести оценку погрешностей полученных результатов по правилу Рунге.

  4. Написать и выполнить программу вычисляется интеграла по 2-му заданному методу (столбец t из табл. 3-1) с точностью 10-4.

  5. Вычислить заданный интеграл с использованием функции 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. Содержание отчета

  1. Индивидуальное задание.

  2. Сценарий пакета Scilab для проведения расчета двумя заданными методами интегралов с шагом h0 и h0/2 (IH0 и IH0/2 ) и значения погрешностей по правилу Рунге.

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

  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)

Вывод:

В данной работе я смог сделать численное интегрирование. На компьютере и на бумаге

Соседние файлы в папке ЧМ. 7варик