чм1
.pdfМинистерство науки и высшего образования Российской Федерации
Федеральное государственное автономное образовательное учреждение высшего образования
«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР)
Кафедра комплексной информационной безопасности электронновычислительных систем (КИБЭВС)
ЧИСЛЕННОЕ РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ. ЧИСЛЕННОЕ РЕШЕНИЕ НЕЛИНЕЙНОГО УРАВНЕНИЯ.
Отчет по лабораторной работе №1
по дисциплине «Численные методы»
Студент гр. 713-1
_________В.С.Колосова
_________
Принял
Старший преподаватель кафедры КИБЭВС
_________Е.С.Катаева
_________
Томск 2024
Введение
Целью лабораторной работы является написание программ для численного решения систем линейных алгебраических уравнений методом Зейделя и для численного решения нелинейного уравнения методом Ньютона и методом простых итераций.
2
ХОД РАБОТЫ
1 Численное решение систем линейных алгебраических уравнений
Преобразование систем уравнения к виду осуществляется следующим образом: сначала вычисляется сумма всех переменных уравнения, кроме переменной из главной диагонали, а затем из свободного члена вычитается полученная сумма. Это преобразование применяется ко всем уравнениям системы, обновляя значения переменных в процессе. Результат работы программы представлен на рисунке 1.1. Листинг программы представлен в приложении А, результаты работы программы представлены в таблице 1.1.
Рисунок 1.1 – Преобразование уравнения к виду метода Зейделя
Результат работы программы при решении индивидуальной системы уравнений представлен на рисунке 1.2.
Рисунок 1.2 – Результат работы программы при решении индивидуальной системы уравнений
3
Таблица 1.1 – Результаты работы программы
|
Начальная точка |
Число итераций |
Решение |
||
Проверочная |
X1 = 0; |
3 |
X1 = 1,000; |
||
система |
X2 = 0; |
|
X2 = 1,000; |
||
|
X3 |
= 0. |
|
X3 |
= 1,000. |
Индивидуальная |
X1 |
= 0; |
9 |
X1 |
= -0,420; |
система |
X2 |
= 0; |
|
X2 |
= 0,017; |
|
X3 |
= 0. |
|
X3 |
= 0,122. |
4
2 Численное решение нелинейного уравнения
Был проведен этап отделения корня для проверочного уравнения графическим способом, графики представлены на рисунках 2.1-2.2. Получены отрезки [-6,3; -3,5] и [0,2; 8,3].
Рисунок 2.1 – Графическое отделение корня для проверочного уравнения
Рисунок 2.2 – Графическое отделение корня для проверочного уравнения
5
Был проведен этап отделения корня для проверочного уравнения графическим способом, график представлен на рисунке 2.3. Получены отрезки
[-3,9; -1,8] и [-1,1; 0,4].
Рисунок 2.3 – Графическое отделение корня для индивидуального уравнения
Результат работы программы при решении индивидуального уравнения методом Ньютона представлен на рисунке 2.4.
Рисунок 2.4 – Результат работы программы при решении индивидуального уравнения методом Ньютона
Листинг программы методом Ньютона, выполняющей уточнение корня
6
на найденном выше отрезке представлен в приложении Б.
Результат работы программы при решении индивидуального уравнения
методом простых итераций представлен на рисунке 2.5.
Рисунок 2.5 – Результат работы программы при решении индивидуального
уравнения методом простых итераций
Листинг программы методом простых итераций, выполняющей
уточнение корня на найденном выше отрезке представлен в приложении В.
Результаты программ представлены в таблицах 2.1-2.2.
Таблица 2.1 – Результаты работы программ для проверочного уравнения
Результаты |
Начальная точка |
Число итераций |
Найденные |
|
|
для каждого |
корни |
Методы |
|
корня |
|
Метод Ньютона |
4,250; |
4; |
1,000; |
|
-4,900. |
2. |
-5,000. |
Метод простых |
4,250; |
11; |
1,001; |
итераций |
-4,900. |
2. |
-5,000. |
Таблица 2.2 – Результаты работы программ для индивидуального уравнения
Результаты |
Начальная точка |
Число итераций |
Найденные |
|
|
для каждого |
корни |
Методы |
|
корня |
|
Метод Ньютона |
-0,350; |
3; |
-0,539; |
|
-2,850. |
4. |
-2,048. |
Метод простых |
-0,350; |
4; |
-0,539; |
итераций |
-2,850. |
9. |
-2,049. |
7
Заключение
В ходе лабораторной работы были написаны программы для численного решения систем линейных алгебраических уравнений методом Зейделя и для численного решения нелинейного уравнения методом Ньютона и методом простых итераций.
8
Приложение А
// матрица - левая часть уравнений double[,] left =
{
{-8.53, -1.0, 2.95 },
{4.41, -13.27, 7.54 },
{-6.87, -6.62, -17.6 }
}; // матрица - правая часть уравнений
double[] right =
{ 3.92, -1.16, 0.63 };
double[] answers = new double[right.Length]; //массив для решений x1, x2, x3 double error = 0.001; //погрешность
int counter = 0; //счетчик итераций
int max_iterations = 1000; //максимальное кол-во итераций bool flag = false; //проверка решения
for (int iteration = 0; iteration < max_iterations; iteration++)
{
double[] new_answers = (double[])answers.Clone(); //копия решения для сравнения
flag = true;
//цикл проходит по всем уравнениям
for (int i = 0; i < right.Length; i++) 9
{
double sum = 0;
//поиск суммы всех переменных уравнения, кроме текущей for (int j = 0; j < left.GetLength(1); j++)
{
if (j != i) //проверка переменной
{
sum += left[i, j] * answers[j];
}
}
//вычисление значения переменной answers[i] = (right[i] - sum) / left[i, i]; //проверка сходимости
if (Math.Abs(answers[i] - new_answers[i]) > error)
{
flag = false;
}
}
counter++;
if (flag) //если сошлось
{
Console.WriteLine($"Решение сошлось после {counter}
итераций");
10