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

ЧислМетодЛаб1

.pdf
Скачиваний:
5
Добавлен:
27.11.2022
Размер:
646.5 Кб
Скачать

Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

Факультет безопасности (ФБ)

Кафедра безопасности информационных систем (БИС)

ЧИСЛЕННОЕ РЕШЕНИЕ СИСТЕМЫ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ

Отчѐт по лабораторной работе №1

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

Студент гр.731-2

__________ Батаев А.С. 18.10.2022

Руководитель: Доцент кафедры КИБЭВС

__________ __________ Якимук А.Ю. 18.10.2022

Томск 2022

 

 

2

 

 

 

Оглавление

 

1

Введение................................................................................................................................

3

2

Ход работы ...........................................................................................................................

4

 

2.1

Пример системы уравнений .......................................................................

4

 

2.2

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

6

3

Заключение ..........................................................................................................

8

Приложение ............................................................................................................

9

3

1 Введение

Целью работы является разработка программы, реализующий метод простых итераций и метод Зейделя. Необходимо найти решение индивидуальной системы уравнений с помощью полученных программ.

Вариант:

Рисунок 1.1 – Вариант

4

2 Ход работы

2.1 Пример системы уравнений

Перед решением своего варианта программы нужно протестировать пример.

Для тестирования использовать систему уравнений (рис.2.1):

Рисунок 2.1 – Пример системы уравнений Из каждого уравнения были выражены x1, x2, x3:

x1 = (-2 * x2 - 3 * x3 + 105) / 100;

x2 = (-x1 - 3 * x3 +104) / 100;

x3 = (-x1 - 2 * x2 + 103) / 100.

На рисунке 2.2 представлена работа программы примера для метода

простых итераций:

Рисунок 2.2 – Работа программы, пример (метод простых итераций)

5

На рисунке 2.2 представлена работа программы примера для метода Зейделя:

Рисунок 2.3 – Работа программы, пример (метод Зейделя)

2.2 Индивидуальный вариант

На рисунке 2.4 представлен индивидуальный вариант.

 

Рисунок 2.4 – Индивидуальный вариант

Из каждого уравнения были выражены x1, x2, x3:

 

;

 

;

 

.

На рисунке

2.5 представлена работа программы индивидуального

варианта для метода простых итераций:

6

Рисунок 2.5 – Работа программы, индивидуальный вариант (метод простых итераций)

На рисунке 2.6 представлена работа программы индивидуального варианта для метода Зейделя:

Рисунок 2.6 – Работа программы, индивидуальный вариант (метод Зейделя)

7

Таблица 1 - Данные

 

Решение

Начальная точка

Число итераций

 

 

 

 

 

Метод простых

[0,4566

[(-1,79

/ -12,5),

 

0,9175

(-5,89

/ -7,37),

15

итераций

-0,5447]

(-2,21 / -10.54)]

 

 

 

 

 

 

 

 

 

[0,4563

 

 

 

Метод Зейделя

0,9176

[0, 0, 0]

12

 

-0,5448]

 

 

 

 

 

 

 

 

8

3Заключение

Входе данной работы были приобретены навыки работы с методом простых итераций и методом Зейделя.

По итогу выполнения, оба метода были одинаково трудозатратными.

9

Приложение A

(Обязательное)

Код приложения

namespace chm1

{

class Program

{

static double x1test(double x2, double x3)

{

double x1 = (-2 * x2 - 3 * x3 + 105) / 100; return x1;

}

static double x2test(double x1, double x3)

{

double x2 = (-x1 - 3 * x3 + 104) / 100; return x2;

}

static double x3test(double x1, double x2)

{

double x3 = (-x1 - 2 * x2 + 103) / 100; return x3;

}

static double x1task(double x2, double x3)

{

double x1 = (+0.18 * x2 + 7.49 * x3 - 1.79) / -12.5; return x1;

}

static double x2task(double x1, double x3)

{

double x2 = (-2.7 * x1 - 0.66 * x3 - 5.89) / -7.37; return x2;

}

static double x3task(double x1, double x2)

{

double x3 = (-0.41 * x1 + 8.87 * x2 - 2.21) / -10.54; return x3;

}

static void Main(string[] args)

{

10

bool stop = false; int step = 0;

double[,] system = new double[3, 4]; double[,] x1 = new double[3, 1]; double acc;

double maxd, maxdp = 0, k, sum_kv = 0; int i, j;

double[] B, d; double[,] A; int n = 3;

B = new double[n]; d = new double[n];

A = new double[n, n];

Console.WriteLine("1 - Simple iteration method 2 - Seidel method"); switch (int.Parse(Console.ReadLine()))

{

case 1:

Console.WriteLine("1 - test 2 - task"); switch (int.Parse(Console.ReadLine()))

{

case 1:

acc = Math.Pow(10, -5); Console.WriteLine("100*x1 + 2*x2 + 3*x3 = 105"); Console.WriteLine("1*x1 + 100*x2 + 3*x3 = 104"); Console.WriteLine("1*x1 + 2*x2 + 100*x3 = 103"); system = new double[3, 4] {

{100, 2, 3, 105 },

{1, 100, 3, 104 },

{1, 2, 100, 103 } };

x1 = new double[3, 1] { { system[0, 3] / system[0, 0] }, { system[1, 3] / system[1, 1] }, { system[2, 3] / system[2, 2] } };

do

{

step++;

double[,] x2 = new double[3, 1]; x2[0, 0] = x1test(x1[1, 0], x1[2, 0]); x2[1, 0] = x2test(x1[0, 0], x1[2, 0]); x2[2, 0] = x3test(x1[0, 0], x1[1, 0]);

if (Math.Abs((x2[0, 0] - x1[0, 0])) < acc || Math.Abs((x2[1, 0] - x1[1, 0])) < acc || Math.Abs((x2[2, 0] - x1[2, 0])) < acc)

stop = true; x1[0, 0] = x2[0, 0]; x1[1, 0] = x2[1, 0];

Соседние файлы в предмете Численные методы