Численные методы решения систем линейных уравнений
Постановка задачи
Дана система n алгебраических уравнений с n неизвестными:
(1)
Эту систему можно записать в матричном виде: ,
; ; .
где A - квадратная матрица коэффициентов, X - вектор-столбец неизвестных, B - вектор-столбец свободных членов.
Численные методы решения систем линейных уравнений делятся на прямые и итерационные. Первые используют конечные соотношения для вычисления неизвестных. Пример - метод Гаусса. Вторые основаны на последовательных приближениях. Примеры - метод простой итерации и метод Зейделя.
Метод Гаусса
Метод основан на приведении матрицы системы к треугольному виду. Это достигается последовательным исключением неизвестных из уравнений системы. Сначала с помощью первого уравнения исключается x1 из всех последующих уравнений. Затем с помощью второго уравнения исключается x2 из последующих и т.д. Этот процесс называется прямым ходом метода Гаусса и продолжается до тех пор, пока в левой части последнего n-го уравнения не останется лишь один член с неизвестным xn. В результате прямого хода система принимает вид:
(2)
Обратный ход метода Гаусса состоит в последовательном вычислении искомых неизвестных, начиная с xn и кончая x1.
Метод простой итерации и метод Зейделя
Решение систем линейных уравнений с помощью итерационных методов сводится к следующему. Задается начальное приближение вектора неизвестных, в качестве которого обычно выбирается нулевой вектор:
.
Затем организуется циклический вычислительный процесс каждый цикл которого представляет собой одну итерацию. В результате каждой итерации получается новое значение вектора неизвестных. Итерационный процесс заканчивается, если для каждой i-й компоненты вектора неизвестных будет выполнено условие
(3)
где k - номер итерации, e - заданная точность.
Недостатком итерационных методов является жесткое условие сходимости. Для сходимости метода необходимо и достаточно, чтобы в матрице A абсолютные значения всех диагональных элементов были больше суммы модулей всех остальных элементов в соответствующей строке:
(4)
Если условие сходимости выполнено, то можно организовать итерационный процесс, записав систему (1) в приведенном виде. При этом слагаемые, стоящие на главной диагонали нормируются и остаются слева от знака равенства, а остальные переносятся в правую часть. Для метода простой итерации приведенная система уравнений имеет вид:
(5)
Отличие метода Зейделя от метода простой итерации заключается в том, что при вычислении очередного приближения вектора неизвестных используются уже уточненные значения на этом же шаге итерации. Это обеспечивает более быструю сходимость метода Зейделя. Приведенная система уравнений имеет вид:
(6)
Реализация в пакете Excel
В качестве примера рассмотрим систему уравнений:
Данная система удовлетворяет условию сходимости и может быть решена как прямыми, так и итерационными методами. Последовательность действий (рис.7):
Оформить заголовок в строке 1 «Численные методы решения систем линейных уравнений».
В области D3:H6 ввести исходные данные, как показано на рисунке.
Ввести в ячейку F8 текст заголовка «Метод Гаусса» (выравнивание по центру).
Скопировать исходные данные E4:H6 в область B10:E12. Это - исходные данные для прямого хода метода Гаусса. Обозначим соответствующие строки A1,A2 и A3.
Подготовить место для первого прохода, обозначив в области G10:G12 названия строк B1,B2 и B3.
Ввести в ячейку H10 формулу «=B10/$B$10». Скопировать эту формулу на ячейки I10:K10. Это - нормировка на коэффициент a11.
Ввести в ячейку H11 формулу «=B11-H10*$B$11». Скопировать эту формулу на ячейки I11:K11.
Ввести в ячейку H12 формулу «=B12-H10*$B$12». Скопировать эту формулу на ячейки I12:K12.
Подготовить место для второго прохода, обозначив в области A14:A16 названия строк C1, C2 и C3.
Ввести в ячейку B14 формулу «=H10». Скопировать эту формулу на ячейки C14:E14.
Ввести в ячейку B15 формулу «=H11/$I$11». Скопировать эту формулу на ячейки C15:E15.
Рис. 7
12. Ввести в ячейку В16 формулу «=Н12-В15*$I$12». Скопировать эту формулу на ячейки С16:Е16.
13. Подготовить место для третьего прохода, обозначив в области G14:G16 названия строк D1, D2 и D3.
14. Ввести в ячейку H14 формулу «=В14». Скопировать эту формулу на ячейки I14:К14.
15. Ввести в ячейку H15 формулу «=В15». Скопировать эту формулу на ячейки I15:К15.
16. Ввести в ячейку Н16 формулу «=B16/$D$16». Скопировать эту формулу на ячейки I16:К16.
17. Подготовить место для обратного хода метода Гаусса, введя в ячейки В18, E18 и H18 соответствующие тексты «х3=», «х2=» и «х1=».
18. Ввести в ячейку С18 формулу «=К16». Получим значение переменной х3.
19. Ввести в ячейку F18 формулу «=К15-J15*К16». Получим значение переменной х2.
20.Ввести в ячейку I18 формулу «=K10-I10*F18-J10*C18». Получим значение переменной х1.
21. Ввести в ячейку F21 текст заголовка «Метод простой итерации» (выравнивание по центру).
22. Ввести в ячейку J21 текст «е=» (выравнивание по правому краю).
23. Ввести в ячейку К21 значение точности е (0,0001).
24. Обозначить в области А23:А25 названия переменных.
25. В области В23:В25 задать начальные значения переменных (нули).
26. Ввести в ячейку С23 формулу «=($H$4-$F$4*B24-$G$4*B25)/$E$4». Получим значение переменной х1 на первой итерации.
27. Ввести в ячейку С24 формулу «=($H$5-$E$5*B23-$G$5*B25)/$F$5». Получим значение переменной х2 на первой итерации.
28. Ввести в ячейку С25 формулу «=($H$6-$E$6*B23-$F$6*B24)/$G$6». Получим значение переменной х3 на первой итерации.
29. Ввести в ячейку С26 формулу «=ЕСЛИ(АВS(С23-В23)>$К$21;" "; ЕСЛИ(АВS(С24-В24)>$К$21;" ";ЕСЛИ(АВS(С25-В25)>$К$21;" "; '"корни")))». Это - проверка на достижение заданной точности (при этом печатается сообщение «корни»).
30. Выделить диапазон С23:С26 и скопировать его до столбца К, используя прием протаскивания. При появлении в строке 26 сообщения «корни» соответствующий столбец будет содержать приближенные значения переменных х1, x2, x3, которые являются решением системы уравнений с заданной точностью.
31. В области А27:К42 построить диаграмму, показывающую процесс приближения значений переменных х1, х2, x3 к решению системы. Диаграмма строится в режиме «График», где по оси абсцисс откладывается номер итерации.
32. Ввести в ячейку F43 текст заголовка «Метод Зейделя» (выравнивание по центру).
33. Ввести в ячейку J43 текст «е=» (выравнивание по правому краю).
34. Ввести в ячейку К43 значение точности е(0,0001).
35. Обозначить в области А45:А47 названия переменных.
36. В области В45:В47 задать начальные значения переменных (нули).
37.Ввести в ячейку С45 формулу «=($H$4-$F$4*B46-$G$4*B47)/$E$4». Получим значение переменной х1 на первой итерации.
38.Ввести в ячейку С46 формулу «=($H$5-$E$5*C45-$G$5*B47)/$F$5». Получим значение переменной х2 на первой итерации.
39. Ввести в ячейку С47 формулу «=($H$6-$E$6*C45-$F$6*C46)/$G$6». Получим значение переменной x3 ,на первой итерации.
40. Ввести в ячейку С48 формулу «=ЕСЛИ(АВ5(С45-В45)>$К$43;" "; ЕСЛИ(АВS(С46-В46)>$К$43;" ";ЕСЛИ{АВS(С47-В47)>$К$43;" ";"корни")))».
41. Выделить диапазон С45:С48 и скопировать его до столбца К, используя прием протаскивания. При появлении в строке 26 сообщения «корни» соответствующий столбец будет содержать приближенные значения переменных х1, х2, x3, которые являются решением системы уравнений с заданной точностью. Видно, что метод Зейделя сходится быстрее, чем метод простой итерации, то есть заданная точность здесь достигается за меньшее число итераций.
42. В области А49:К62 построить диаграмму, показывающую процесс приближения значений переменных х1, х2, x3 к решению системы. Диаграмма строится в режиме «График», где по оси абсцисс откладывается номер итерации.
3.5. Решение задачи межотраслевого баланса (модель Леонтьева)
Основой многих линейных моделей производства является схема межотраслевого баланса. Идея метода впервые в явном виде была сформулирована в работах советских экономистов в 20-х годах и получила затем развитие в трудах В.В Леонтьева по изучению структуры американской экономики. Предположим, что производственный сектор народного хозяйства разбит на п отраслей. Причем каждая отрасль выпускает продукт только одного типа, а разные отрасли выпускают разные продукты. Кроме того, в процессе производства своего вида продукта каждая отрасль нуждается в продукции других отраслей. В качестве примера рассмотрим упрощенную модель межотраслевого баланса, предполагая, что экономика страны состоит из 3-х отраслей (промышленности, сельского хозяйства и транспорта).
Введем следующие обозначения уi - конечный спрос на продукцию i-й отрасли, хi - выпуск продукции i-й отрасли. cij - доля продукции отрасли i, потребленной в процессе производства продукции отрасли j. В этом случае в соответствии с моделью Леонтьева имеем следующую систему линейных уравнений:
Задача состоит в нахождении неизвестных x1, x2, x3. Остальные величины считаются заданными. Заметим, что все коэффициенты cijизменяются в пределах от 0 до 0,3. Это обеспечивает сходимость при использовании итерационных методов.
Последовательность действий при реализации модели в пакете Excel с использованием метода простой итерации (рис. 8).
1. Ввести в ячейку H1 текст заголовка «Модель Леонтьева» (выравнивание по центру).
2. Ввести в ячейку H2 текст «Данные» (выравнивание по центру).
3. В области F4:J7 ввести исходные данные как показано на рисунке.
4. Обозначить в области А9:А12 номер итерации k и названия переменных х1, х2, x3.
5. В области В9:В12 задать начальные значения переменных (нули).
6. В ячейку С9 ввести 1, выделить ячейки В9 и С9 и, используя прием протаскивания, заполнить ряд до столбца О.
7. Ввести в ячейку С10 формулу «=($J$5+$H$5*B11+$I$5*B12)/(1-$G$5)». Получим значение переменной х1 на первой итерации.
8. Ввести в ячейку С11 формулу «=($J$6+$G$6*B10+$I$6*B12)/(1-$H$6)». Получим значение переменной х2 на первой итерации.
9. Ввести в ячейку С12 формулу «=($J$7+$G$7*B10+$H$7*B11)/(1-$I$7)». Получим значение переменной х3 на первой итерации.
10. Выделить диапазон С10:С12 и скопировать его до столбца О, используя прием протаскивания
11. В области A14:O33 построить диаграмму, показывающую процесс приближения значений переменных х1, х2, х3 к решению системы. Диаграмма строится в режиме «Точечная», где по оси абсцисс откладывается номер итерации.
Рис. 8