ЧислМетодЛаб4
.pdf1
Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Факультет безопасности (ФБ)
Кафедра безопасности информационных систем (БИС)
ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ Отчѐт по лабораторной работе 4
по дисциплине «Численные методы»
Студент гр.731-2
__________ Батаев А.С. 11.11.2022
Руководитель:
Доцент кафедры КИБЭВС
__________ __________ Якимук А.Ю. 11.11.2022
Томск 2022
2
Оглавление
1 |
Введение............................................................................................................................................. |
3 |
|
2 |
Ход работы ....................................................................................................................................... |
4 |
|
|
2.1 |
Вычисление интеграла .......................................................................................................... |
4 |
|
2.2 |
Метод левого прямоугольника .......................................................................................... |
4 |
|
2.3 |
Метод правого прямоугольника ....................................................................................... |
4 |
3 |
Заключение ...................................................................................................................................... |
6 |
3
1 Введение
Вариант:
Рисунок 1.1 – Вариант Необходимо рассчитать значение данного интеграла следующими
методами:
1)методом левых прямоугольников;
2)методом правых прямоугольников;
3)методом трапеций;
4)методом Симпсона.
Листинг программы представлен в Приложении А.
4
2 Ход работы
2.1 Вычисление интеграла
Для дальнейшей проверки, посчитаем интеграл:
2.2 Метод левого прямоугольника
.
Где h – шаг сетки.
Формула метода левых прямоугольников:
2.3 Метод правого прямоугольника
Формула метода правых прямоугольников:
2.4 Метод трапеций
Формула метода трапеций:
2.5 Метод Симпсона
Формула метода Симпсона:
5
2.6 Результат работы программы
Рисунок 1– Скриншот работы программы
Таблица 1 - Результаты
Метод |
X=4 |
X=20 |
X=100 |
X=400 |
|
|
|
|
|
|
|
Метод левого |
1.1809 |
1.5189 |
1.4606 |
1.4496 |
|
прямоугольника |
|||||
|
|
|
|
||
|
|
|
|
|
|
Метод правого |
1.7128 |
1.4992 |
1.4566 |
1.4487 |
|
прямоугольника |
|||||
|
|
|
|
||
|
|
|
|
|
|
Метод трапеций |
1.4468 |
1.5721 |
1.4712 |
1.4523 |
|
|
|
|
|
|
|
Метод |
1.5116 |
1.4591 |
1.4486 |
1.4467 |
|
Симпсона |
|||||
|
|
|
|
||
|
|
|
|
|
6
3Заключение
Врезультате выполнения данной лабораторной работы были получены навыки разработки программ, использующих в своей работе методы левых,
правых прямоугольников, а также метод трапеций и метод Симпсона.
7
Приложение A
(Обязательное)
Код приложения
namespace chm4
{
class Program
{
const double a = 1; const double b = 4; public static int[] n = { 4, 20, 100, 400 };
static void Main(string[] args)
{
MethodLeft();
MethodRight();
MethodTrapeze();
MethodSimpson();
}
static double Function(double x)
{
return Math.Sqrt(0.21 * x) * Math.Sin(0.29 * x);
}
static void MethodLeft()
{
Console.WriteLine("Метод левого прямоугольника"); double I, h;
for (int i = 0; i < 4; i++)
{
8
h = (b - a) / n[i]; I = 0;
for (double x = a; x < b; x += h)
{
I += Function(x);
}
I *= h;
Console.WriteLine($"При n = {n[i]} I = {Math.Round(I, 4)}");
}
}
static void MethodRight()
{
Console.WriteLine();
Console.WriteLine("Метод правого прямоугольника"); double I, h;
for (int i = 0; i < 4; i++)
{
h = (b - a) / n[i]; I = 0;
for (double x = a + h; x <= b; x += h)
{
I += Function(x);
}
I *= h;
Console.WriteLine($"При n = {n[i]} I = {Math.Round(I, 4)}");
}
}
static void MethodTrapeze()
{
Console.WriteLine(); Console.WriteLine("Метод трапеций"); double summ, h, I;
for (int i = 0; i < 4; i++)
{
9
h = (b - a) / n[i]; summ = 0;
for (double x = a + h; x < b; x += h)
{
summ += Function(x);
}
I = h / 2 * (Function(a) + Function(b)) + h * summ; Console.WriteLine($"При n = {n[i]} I = {Math.Round(I, 4)}");
}
}
static void MethodSimpson()
{
Console.WriteLine(); Console.WriteLine("Метод Симпсона"); double x, h, summ1, summ2, I;
for (int z = 0; z < 4; z++)
{
h = (b - a) / n[z];
I = summ2 = summ1 = 0;
for (int i = 0; i <= (n[z] - 1) / 2; i++)
{
x = a + (2 * i + 1) * h; summ1 += Function(x);
}
for (int i = 0; i <= (n[z] - 2) / 2; i++)
{
x = a + 2 * i * h; summ2 += Function(x);
}
I = h / 3 * (Function(a) + 4 * summ1 + 2 * summ2 + Function(b)); Console.WriteLine($"При n = {n[z]} I = {Math.Round(I, 4)}");
}
}