Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
krav.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
3.45 Mб
Скачать

Глава 8

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

8.1. Введение

Системы уравнений появляются почти в каждой области прикладной математики. В некоторых случаях эти системы уравнений непосредственно составляют ту задачу, которую необходимо решать, в других случаях задача сводится к такой системе. В практическом примере 10 мы увидим, например, что для проведения кривой, наилучшим образом соответствующей экспериментальным данным, приходится решать систему линейных уравнений, а в гл. 11 будут опи­саны методы решения уравнений в частных производных, где также требуется решать системы алгебраических уравне­ний. Существует множество других задач, сводящихся к решению систем алгебраических уравнений.

В этой главе мы будем рассматривать системы из n урав­нений с n неизвестными. Каждый член такого уравнения содержит только одно неизвестное, и каждое неизвестное входит только в первой степени. Такая система уравнений называется линейной. В случае двух неизвестных каждое уравнение графически изображается прямой линией, в слу­чае трех неизвестных ему соответствует плоскость в трех­мерном пространстве, а для четырех и более неизвестных — гиперплоскость. Искомое решение системы уравнений пред­ставляет собой набор значений неизвестных, удовлетворяю­щих одновременно всем уравнениям.

Если задана некоторая произвольная система уравнений, то без предварительного исследования нельзя сказать, име­ет ли она какое-либо решение и, в случае если решение существует, является ли оно единственным. На этот вопрос существуют три и только три ответа.

1. Решение системы уравнений существует и является единственным. Например,

2x+y=4, (8.1)

х - у = - 1.

Ри.с. 8.1. Геометрическое представление системы двух линейных уравнений, имеющей единственное решение.

Прямые линии, соответствующие уравнениям системы, образуют между со­бой довольно большой угол.

Решение этой системы x = 1 и y = 2, никакие другие значения х и у не способны одновременно удовлетворить этим двум уравнениям. В этой главе мы будем в основном рассматривать именно такие системы уравнений, т. е. имею­щие единственное решение. Геометрически эта система урав­нений представлена на рис. 8.1, где видно, что две прямые линии, соответствующие двум уравнениям, пересекаются в одной и только в одной точке. Координаты этой точки как раз и представляют собой искомое решение.

  1. Система уравнений вообще не имеет решения. Напри­мер,

4х + 6у = 10, (8.2)

2х + 3у = 6

На рис. 8.2 показаны прямые линии, соответствующие этим двум уравнениям. Две прямые параллельны, они нигде не пересекаются, и система уравнений не имеет решения.

Р и с. 8.2. Геометрическое представление системы двух линейных уравнений, не имеющей решения. Прямые линии параллельны.

3. Система уравнений имеет бесконечное множество решений. Например,

4х+6у=12

2х+3у= 6.

Как видно из рис. 8.3, эти два уравнения описывают одну и ту же прямую линию. Любая точка, лежащая на этой линии, является решением такой системы уравне­ний, например: х = 0., у= 2.; х = 1., у = 4/3 и т. д.

Системы уравнений типа 2 и 3 называются вырожденны­ми. Иногда непосредственно из поставленной задачи бывает ясно, что система уравнений не может быть вырожденной. Если же, как это бывает в большинстве случаев, соответству­ющая информация отсутствует, то приходится или проверять вырожденность системы уравнений в процессе реше­ния, или исследовать такую возможность непосредственно. В разд. 8.2 мы увидим, что при решении системы уравне­ний методом Гаусса проверка вырожденности системы про­изводится автоматически в процессе решения. Конечно,

Р и с. 8.3. Геометрическое представление системы двух линейных уравнений, имеющей бесконечное множество решений. Оба уравнения изображаются одной и той же прямой линией.

непосредственная проверка состояла бы в вычислении опре­делителя системы, тогда равенство определителя нулю пря­мо указывало бы на вырожденность. К сожалению, вычис­лить определитель ничуть не легче, чем просто решить систему уравнений.

С точки зрения обычной математики система линейных уравнений всегда является или вырожденной, или невырож­денной. С точки же зрения практических вычислений могут существовать почти вырожденные системы, при решении которых получаются недостоверные значения неизвестных. Рассмотрим систему уравнений:

5х + 7у = 12, (8.3)

7x + 10у = 17.

Эта система имеет единственное решение х = 1, у = 1. Теперь рассмотрим пару значений неизвестных x = 2.415, ó = 0. При подстановке этих значений в исходные уравнения получаем

5х + 7у = 12.075, (8.4)

7х + 10у = 16.905

После округления до двух значащих цифр правые часта равенств (8.4) совпадают с правыми частями исходных уравнений. А так как исходные уравнения были заданы

Р и с. 8.4. Геометрическое представление системы двух линейны) уравнений, которая является почти вырожденной. Прямые, соответствующие двум уравнениям, почти совпадают.

только с точностью до двух значащих цифр, то решение (8.4) так же хорошо отвечает условиям поставленной задачи, как и решение x = 1, у =1.

Дело в том, что две прямые линии, описываемые двумя уравнениями этой системы, почти параллельны, как это показано на рис. 8.4. Точка x = 2.415, y = 0 хотя и не лежит ни на одной из этих прямых линий, но очень близка к ним.

Системы типа (8.3) называются плохо обусловленными. В любом случае, когда две линии (либо плоскости и гипер­плоскости) почти параллельны, система уравнений становит­ся плохо обусловленной. В этом случае найти численное решение системы трудно, а точность его весьма сомнитель­на. Более того, система из трех и более уравнений может оказаться плохо обусловленной, даже если никакие плоскости не являются параллельными или почти параллельными^). Вне зависимости от геометрической интерпретации обусловленность системы можно исследовать при ее реше­нии методом Гаусса или с помощью специальной проверки.

Перед тем как переходить к подробному рассмотрению методов решения системы уравнений, остановимся вкратце на двух основных направлениях в этой области.

Методы численного решения системы линейных уравне­ний подразделяются на два типа, прямые (конечные) и ите­рационные (бесконечные). Первая группа методов рассмат­ривается в разд. 8.2, вторая — в разд. 8.6. Естественно, никакой практический метод решения системы уравнений не может быть бесконечным. Мы имеем в виду только то, что прямые методы могут в принципе (с точностью до ошибок округления) дать точное решение, если оно суще­ствует, с помощью конечного числа арифметических опера­ций. С другой стороны, итерационный метод требует бес­конечного числа арифметических операций, приводящих к точному решению. Иными словами, при использовании итерационного метода появляется ошибка ограничения, отсутствующая -в прямых методах.

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

После разбора обоих методов решения систем линейных уравнений мы кратко сравним их и проанализируем ошиб­ки. Мы увидим, что оба метода полезны и удобны для практических вычислений, а каждый из них имеет свои преимущества и недостатки.

^) Представьте себе три параллельные линии, проходящие через .три вершины треугольника и перпендикулярные к его плос­кости. Теперь проведите плоскость через каждую пару параллель­ных линий. Эти три плоскости не параллельны, но они нигде не пе­ресекаются в одной точке. Если же одна из плоскостей слегка наклонена, то три плоскости пересекутся в одной точке, но система уравнений будет плохо обусловленной.

8.2. МЕТОД ИСКЛЮЧЕНИЯ (МЕТОД ГАУССА)

В этом разделе мы рассмотрим один из наиболее известных и широко применяемых прямых методов решения систем линейных уравнений. Обычно этот метод называют методом исключения или методом Гаусса.

Чтобы проиллюстрировать этот метод, рассмотрим сна­чала систему из трех уравнений с тремя неизвестными:

a11x1 + a12x2 + a13x3 = b1, (8.5)

a21x1 + a22x2 + a23x3 = b2, (8.6)

a31x1 + a32x2 + a33x3 = b3. (8.7)

В такой системе по крайней мере один из коэффициен­тов a11, a21, a31 должен быть отличен от нуля, иначе мы име­ли бы дело в этих трех уравнениях только с двумя неиз­вестными. Если a11 = 0, то можно переставить уравнения так, чтобы коэффициент при x1 в первом уравнении был отличен от нуля. Очевидно, что перестановка уравнений оставляет систему неизменной: ее решение остается прежним . Теперь введем множитель

m2 = a21/a11

"

Умножим первое уравнение системы (8.5) на m2 и вычтем его из уравнения (8.6). («Первое» и «второе» уравнения мы берем уже после перестановки, если она была необходима.) Результат вычитания равен

(a21 - m2a11) х1, + (a22 - m2a12) x2 +

+(a23 - m2a13) x3= b2 - m2b1, (8.8)

Но ведь

a21 - m2a11 = a21 - (a21/a11)*a11 = 0,

так что x1 исключено из второго уравнения (конечно, именно для достижения такого результата и было выб­рано значение m2). Определим теперь новые коэффициенты

a`22 = a22 - m2a12 ,

a`23 = a23 - m2a13 ,

b`2 = b2 - m2b1.

Тогда уравнение (8.6) приобретает вид

a`22x2 + a`23x3 = b`2 (8.9)

Заменим второе из первоначальных уравнений (8.6) уравнением (8.9) и введем множитель для третьего урав­нения

m3 = a31/a11.

Умножим первое уравнение на этот множитель и вычтем его из третьего. Коэффициент при X1 снова становится нулевым, и третье уравнение приобретает вид

a`32x2 + a`33x3 = b`3, (8.10)

где

a`32 = a32 - m3a12,

a`33 = a33 - m3a13,

b`3 = b3 - m3b1.

Если теперь в исходной системе уравнений заменить (8.7) на (8.10), то новая система выглядит так:

a11x1 + a12x2 + a13x3 = b1 (8.5)

a`22x2 + a`23x3 = b`2 (8.9)

a`32x2 + a`33x3 = b`3. (8.10)

Эти новые уравнения полностью эквивалентны исход­ным уравнениям с тем преимуществом, что x1 входит только в первое уравнение и не входит ни во второе, ни в третье. Таким образом, два последних уравнения представляют собой систему из двух уравнений с двумя неизвестными; если теперь найти решение этой системы, т. е. определить x2 и x3, то результат можно подставить в первое уравнение и найти x1. Иначе говоря, задача сведена к решению систе­мы из двух уравнений с двумя неизвестными.

Попытаемся теперь исключить x2 из двух последних уравнений. Если a`22 = 0, то снова мы переставим уравне­ния так, чтобы a`22 было отлично от нуля. (Если же a`22 = 0 и a`32 = 0, то система вырождена и либо вовсе не имеет решения, либо имеет бесчисленное множество решений). Введем новый множитель

m`3 = a`32/a`22.

Умножим уравнение (8.9) на m`3 и вычтем его из (8.10) Результат вычитания равен

(a`32 - m`3a`22)*x2 + (a`33 - m`3a`23)*x3 = b`3 - b`2m`3.

В силу выбора m`3

a`32 - a`3a`22 = 0.

Полагая

a``33 = a`33 - m`3a`23 ,

b``3 = b`3 - m`3b2 ,

окончательно получаем

a``33x3 = b``33 . (8.11)

Уравнение (8.10) можно заменить уравнением (8.11), после чего система уравнений приобретает следующий вид:

a11x1 + a12x2 + a13x3 = b1 , (8.5)

a`22x2 + a`23x3 = b`2 , (8.9)

a`33x3 = b``3 . (8.11)

Такая система уравнений иногда называется треуголь­ной из-за своего внешнего вида.

Теперь совершенно очевидно, что надо делать для реше­ния системы. Необходимо определить x3 из (8.11), подста­вить этот результат в (8.9), определить x2 из (8.9), подста­вить x3 и x2 в (8.5) и определить x1. Этот процесс, который обычно называется обратной подстановкой, определяется в нашем случае формулами

x3 = b``3/a``33 ,

x2 = (b`2 - a`23x3)/a`22 ,

x1 = (b1 - a12x2 - a13x3)/a11 .

Вспомним, что мы всегда переставляли уравнения таким образом, чтобы a11 и a`22 не были равны нулю. Если же ока­жется, что a``33 = 0 , то система уравнений вырождена. Рассмотрим пример

x + y + z = 4 ,

2x + 3y + z =9 , (8.12)

x - y - z = - 2 .

Легко убедиться, что множители для второго и третьего уравнений равны соответственно 2 и 1. После исключения x из второго и из третьего уравнений новый множитель, исключающий у из третьего уравнения, равен - 2. Тре­угольная система уравнений имеет вид

x + y + z = 4 ,

y - z = 1 ,

- 4z = - 4 .

Из последнего уравнения z = 1, из второго y = 2, из пер­вого x = 1. Можно подставить эти значения в исходные уравнения и убедиться, что они точно удовлетворяются. Таким образом мы нашли точное решение системы с помо­щью конечного числа арифметических операций. В данном случае ошибки округления отсутствовали.

В качестве полезного упражнения предлагаем читателям решить методом исключения систему (8.1) и попытаться решить вырожденную систему (8.2).

Теперь можно обобщить этот метод на случай системы из n уравнений с n неизвестными. После «алгебраического» описания алгоритма мы рассмотрим блок-схему программы, которая увеличивает наглядность алгоритма и позволяет непосредственно составить программу для вычислений на ЭЦВМ.

Обозначим неизвестные через x1, x2, ..., xn и запишем систему уравнений в следующем виде:

a11x1 + a12x2 + ... + a1nxn = b1 ,

a21x1 + a22x2 + ... + a2nxn = b2 ,

. . . . . . . . . . . . . . . . . . (8.13)

an1x1 + an2x2 + ... +annxn = bn .

Предполагается, что в силу расположения уравнений a11 не равно нулю. Введем n - 1 множителей

mi = ai1/a11, i = 2, 3, ... , n ,

и вычтем из каждого i-го уравнения первое, домноженное на mi. Обозначая

a1ij = aij - mia1j, i = 2, 3, ... ,n,

b`i = bi - mib1, j = 1, 2, ..., n,

легко убедиться в том, что для всех уравнений, начиная со второго,

a`i1 = 0, i = 2, 3, ... ,n .

Преобразованная система уравнений запишется в сле­дующем виде:

a11x1 +a12x2 + ... + a1nxn = b1,

0 + a`22x2 + . . . + a`2nxn = b`2,

. . . . . . . . . . . . . . . . . . .

0 + a`n2x2 + ... + a`nnxn = b`n .

Продолжая таким же образом, мы можем исключить x2 из последних n - 2 уравнений, затем x3 из последних n - 3 уравнений и т. д. На некотором k-м этапе мы исклю­чаем xk с помощью множителей

mi^(k - 1)= aik^(k - 1)/akk^(k - 1), i = k +1, ... ,n, (8.14.)

причем предполагается, что akk^(k - 1) не равно нулю. Тогда

aij^(k = aij^(k - 1) - mi^(k - 1)akj^(k - 1), (8.15)

bi^(k) = bi^(k - 1) - mi^(k - 1)bk^(k - 1) (8.16)

для i = k + 1, ..., n и для j = k, ..., n. Индекс k принимает последовательные целые значения от 1 до n - 1 включительно. При k = n - 1 происходит исключение x(n - 1) из последнего уравнения. Окончательная треугольная система уравнений записы­вается следующим образом:

a11x1 + a12x2 + ... + a1nxn = b1, a`22x2 + ... + a`2nxn = b`2,

. . . . . . . . . . . . . . . . . . . (8.17)

ann^(n - 1)xn = bn^(n - 1)

Блок-схема программы для процесса исключения неиз­вестных приведена на рис. 8.5. Эта блок-схема точно соот­ветствует разобранному выше алгебраическому процессу с двумя принципиальными различиями. Прямоугольник, где написано «переставить уравнения так, чтобы akk <> 0, означает некоторый алгоритм, описанный в разд. 8.3 по­сле разбора ошибок округления. Мы увидим, что ошибки округления могут быть существенно уменьшены, если сле­довать определенным правилам перестановки уравнений.

Второе различие сводится к тому, что в блок-схеме все множители обозначаются одним и тем же символом т. В самом деле, если вычисления в программе правильно организованы, то на каждом определенном этапе вычисле­ний не требуется больше одного множителя.

При анализе блок-схемы полезно четко представлять себе смысл индексов i, j и k:

k означает номер того уравнения, которое вычитается из остальных, а также номер того неизвестного, кото­рое исключается из оставшихся п — k уравнений.

i означает номер уравнения, из которого в данный момент исключается неизвестное.

j означает номер столбца.

Мы рекомендуем тщательно проанализировать блок-схе­му, приведенную на рис. 8.5. Она не только позволяет ясно представить себе метод исключения, но также иллюст­рирует некоторые полезные приемы, применяемые при напи­сании блок-схемы, в частности использование индексов.

Полезно заметить, что процесс исключения неизвестных не изменяет абсолютной величины определителя системы, хотя знак определителя и изменяется при каждой пере­становке уравнений. После окончания процесса значение определителя равно произведению диагональных элементов, причем знак этого произведения надо изменить на обратный, если количество перестановок было нечетным. Таким обра­зом, значение определителя системы удобно вычислять именно с помощью метода исключения.

Обратная подстановка для нахождения значений неиз­вестных задается формулами

xn = bn^(n - 1)/ann^(n - 1),

xn - 1 = (bn - 1^(n - 2) - an - 1,n^(n - 2)xn)/ an - 1,n -1^(n- 2) (8.18)

.....................................................................................................

xj = (bj^(j - 1) - ajn^(j - 1)xn - ... - aj,j+1^(j - 1)xj+1)/ajj^(j - 1)

для j = n - 2, n - 3, ... , 1 .

Ф и г. 8.5. Блок-схема программы для решения системы линейных уравнений методом исключения.

Блок-схема программы для обратной подстановки при­ведена на рис. 8.6. Она существенно проще блок-схемы метода исключения. Оказывается также, что эта блок-схема еще упрощается, если вычислять значение Xn в начале программы, не включая это вычисление в цикл. Конечно, можно составить блок-схему и без этого отдельного шага, . но при этом ненужным образом усложнилось бы вычисление суммы членов, стоящих после диагонального: первая «сумма» оказалась бы равной нулю и проверку индекса / пришлось бы производить перед вычислением суммы. Заметим, что, если в блок-схеме на рис. 8.5 все индексы в процессе вычис­ления увеличивались, в блок-схеме на рис. 8.6 один из индексов, а именно i, уменьшается.

Программа для решения системы линейных уравнений приведена на рис. 8.15 в связи с разбором практического примера 10. Если читатель захочет рассмотреть эту про­грамму, то ему нетрудно будет убедиться, что она довольно точно соответствует блок-схеме.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]