Башкирова В. В.
Системы линейных алгебраических уравнений (СЛАУ) играют достаточно важную роль в различных сферах деятельности, таких как физика, экономика, инженерия, а также технологии и программирование. Решение СЛАУ является одной из основных задач численного анализа, именно поэтому существует множество методов решения систем, одним из которых является метод простых итераций, также известный как метод Якоби. Этот метод можно назвать практичным итерационным методом из-за своей универсальности, а также из-за простоты реализации на различных языках программирования. В данной статье мы рассмотрим теоретические основы метода простых итераций, его алгоритм реализации для решения систем линейных алгебраических уравнений и практический пример, реализованный на языке программирования С++.
Метод простых итераций для решения СЛАУ: теоретический материал
Чтобы понять, как работает метод простых итераций для системы линейных алгебраических уравнений, нужно разобраться, что же из себя представляет сама система линейных алгебраических уравнений. СЛАУ — система уравнений, каждое уравнение в которой является линейным — алгебраическим уравнением первой степени.
Общий вид системы можно записать следующим образом:
где:
aij— коэффициенты системы,
xj — неизвестные переменные,
bi— свободные члены.
Такжесистему линейных алгебраических уравнений можно представить в матричной форме. Тогда её вид будет следующим:
Ax=b ,
где:
A — матрица коэффициентов, размером m×n,
x— вектор неизвестных, размером n×1,
b — вектор свободных членов, размером m×1.
Итак, с системой уравнений разобрались, теперь нужно рассмотреть способ её решения. Метод простых итераций — численный метод решения системы линейных алгебраических уравнений. Его суть заключается в нахождении по приближённому значению величины следующего приближения, являющегося более точным. Он основывается на преобразовании исходной системы уравнений в итерационную форму:
,
где
G — матрица, полученная из матрицы коэффициентов A;
c — вектор, зависящий от свободных членов.
Важно, чтобы матрица G обладала свойством сжимающего отображения, что гарантирует сходимость метода.
Для обеспечения сходимости метода необходимо, чтобы спектральный радиус матрицы G (максимальное по модулю собственное значение) был меньше единицы:
При выполнении этого условия итерационный процесс будет сходиться к истинному решению системы.
Применение метода простых итераций для решения СЛАУ с помощью кода на C++
Как было сказано ранее, системы линейных алгебраических уравнений встречаются во многих сферах, в том числе и в сфере компьютерных технологий. Решить систему уравнений методом простых итераций достаточно просто, однако с вычислениями могут возникнуть проблемы, так как это может занять достаточно много времени. Поэтому одним из способов решить СЛАУ методом простых итераций это написание программы.
Давайте рассмотрим следующий пример:
Найти приближенное решение системы линейных алгебраических уравнений с помощью метода простых итераций:
Значение точности = 0.001;
Начальные значения (x0): x1=0, x2=0, x3=0;
Описание кода на языке С++
Для решения задачи напишем программу на языке программирования С++ в приложении Visual Studio 2022.
1. Подключение библиотек
В первую очередь необходимо подключить библиотеки, без которых программа просто-напросто не будет работать (рис. 1):
Рис. 1 Подключение библиотек и пространство имён
iostream: для работы с вводом и выводом.
iomanip: для управления форматированием вывода.
cmath: для математических функций, таких как fabs() и др.
А также подключим пространство имён using namespace std. Использование пространства имен не является обязательным, но значительно облегчает написание кода, так как дает возможность использовать стандартные функции и объекты (например, cout, cin) без необходимости добавлять перед ними префикс std::.
2. Определение констант
В программе были определены следующие константы с типами double и int (рис. 2):
Рис.2 Определение констант
EPSILON: минимальное изменение, при котором итерации считаются завершенными (точность).
MAX_ITERATIONS: максимальное количество итераций для предотвращения бесконечного цикла.
3. Функция simple_iteration
Функция simple_iteration является функцией кода, в которой происходят все необходимые вычисления (рис. 3):
Рис 3. Функция simple_iteration
Эта функция принимает ссылки на переменные x1, x2 и x3, чтобы изменять их значения (строка 10).
В цикле for выполняется расчет новых значений new_x1, new_x2 и new_x3 на основе предыдущих значений (строки 11-14).
Проверяется сходимость, если изменения между итерациями меньше EPSILON, то итерации завершаются (строки 17-22) и новые значения присваиваются исходным переменным (строки 24-27).
4. Функция main:
Итак, мы подошли к ключевому элементу нашей программы — функции int main() (рис. 4). В этой функции сосредоточено всё необходимое для реализации метода simple_iteration и вывода результатов вычислений:
Рис. 4 Функция main
Устанавливается локаль для корректного отображения символов setlocate(LC_ALL, “”).
Инициализируются начальные значения переменных x1, x2 и x3.
Вызывается функция simple_iteration для нахождения решения.
Результаты выводятся на экран с фиксированной точностью до 4 знаков после запятой с помощью стандартного выходного потока cout и функций fixed и setprecision().
5. Вывод результата
После запуска программа выводит результат на консоли (рис.5):
Рис. 5 Вывод результата
Таким образом, написанный код эффективно решает данную систему линейных уравнений методом простых итераций. Он использует начальные приближения и обновляет значения переменных до тех пор, пока изменения между итерациями не станут достаточно малыми, что указывает на сходимость решения.
6. Таблица итераций
Однако, чтобы проверить правильность вычислений, создадим таблицу Excel, в которой отобразим все воспроизведённые итерации (рис. 6):
Рис. 6 Таблица итераций
Итак, исходя из данных таблицы, можно утверждать, что значения из таблицы немного отличаются от значений, которые вывела нам программа. Однако такая погрешность не является критичной, поэтому можно с уверенностью сказать, что код функционирует корректно.
В каких сферах используется метод простых итераций?
Как было сказано ранее, метод простых итераций применяется в различных сферах науки, техники и математики для решения уравнений и систем уравнений. Вот некоторые из основных сфер применения:
1. Численные методы:
- Метод применяется для нахождения численных решений алгебраических уравнений, систем уравнений и дифференциальных уравнений.
2. Прикладная математика:
- В задачах оптимизации, минимизации функций, а также в задачах, где необходимо находить корни уравнений.
3. Инженерия:
- В области автоматизированного проектирования, управления и анализа систем, где требуется решение уравнений, связанных с физическими процессами.
4. Экономика:
- Метод используется для решения уравнений, возникающих в эконометрических моделях, анализа финансовых рынков и оптимизации ресурсов.
5. Физика и механика:
- Используется для моделирования физических систем, в которых необходимо решить уравнения движения и взаимодействия тел.
В заключение следует отметить, что метод простых итераций представляет собой эффективное средство для решения систем линейных алгебраических уравнений. Его простота и наглядность делают его доступным для понимания и применения как в теоретических, так и в практических задачах. Метод позволяет находить приближенные решения, что особенно важно в случаях, когда точные аналитические методы оказываются сложными или невозможными. Таким образом, метод простых итераций является по-настоящему мощным инструментом в арсенале математиков и программистов, который способен значительно упростить решение сложных задач.
Список используемой литературы:
Зенков, А. В. Численные методы : учебное пособие для среднего профессионального образования / А. В. Зенков. — 2-е изд., перераб. и доп. — Москва : Издательство Юрайт, 2024. — 136 с. — (Профессиональное образование).
В. И. Рейзлин Язык C++ и программирование на нём / Компьютерная литература Издательство: Томский политехнический университет, 2021 г.
Игумнов Л.А. Методы вычислительной математики. Решение уравнений и систем уравнений : учебное пособие, Нижний Новгород : Изд-во Нижегородского госуниверситета, 2019
В. И. Ракитин, В. Е. Первушин Практическое руководство по методам вычислений с приложением программ для персональных компьютеров, Москва «Высшая школа» 1998 г.