Болезни Военный билет Призыв

Погрешность решения больших систем уравнений методом гаусса. Метод гаусса для чайников: решаем слау легко. Пример несовместной системы

В данном случае помимо соблюдения требования a kk 0 при реализации формул (6) накладываются дополнительные требования, чтобы ведущий (главный) элемент в текущем столбце в процессе преобразований исходной матрицы имел максимальное по модулю значение. Это также достигается перестановкой строк матрицы.

Пример . В качестве иллюстрации преимущества модифицированного метода Гаусса, рассмотрим систему третьего порядка:

Прямой ход метода Гаусса

Исключаем х 1 из второго и третьего уравнений. Для этого первое уравнение умножаем на 0,3 и складываем со вторым, а затем умножаем первое уравнение на (–0,5) и складываем с третьим. В результате получаем

(б )

Замена второго уравнения третьим не производится, т.к. вычисления выполняются в рамках точной арифметики.

Умножая второе уравнение на 25, и складывая с третьим, получим

(в )

Обратный ход метода Гаусса

Выполняем вычисления, начиная с последнего уравнения в полученной системе:

Подставляя полученное решение в исходную систему, убеждаемся в его истинности.

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

(г )

Прямой ход метода для системы (г ) повторим по аналогичной технологии с исходной системой (а ).

(д )

После исключения х 2 третье уравнение примет вид (остальные – без изменения)

15005 х 3 = 15004. (е )

Выполняя обратный ход, получим

Очевидно, что полученные решения и [–0,35; –1,4; 0,99993] различны. Причиной этого является малая величина ведущего элемента во втором уравнении преобразования в (д ). Чтобы это исключить, переставим в (д ) вторую и третью строки


(ж )

Для данной системы после исключения х 2 из третьего уравнения, оно примет следующий вид

6,002 х 3 = 6,002. (з )

В данном случае, выполняя обратный ход

мы получим решение системы (г ) , которое в точности совпадает с решением исходной системы.

Решая систему (г ) мы использовали модифицированный метод Гаусса, в котором на диагонали должен был находиться максимальный в текущем столбце элемент.

Рассмотрим блок-схему модифицированного метода Гаусса (рис. 2.1).

Рис. 2.1. Блок-схема модифицированного метода Гаусса

Проведем анализ предложенной схемы на примере системы n =3 (=0,001)

(8)

;. (*)

Блок 1. Ввод исходных данных:n – порядок системы,A – матрица коэффициентов при неизвестных,b – вектор свободных членов.

Блок 2.I-й цикл прямого хода (дляk , изменяющегося от 1 до предпоследнего значения, т.е. доn –1) обеспечивает исключение из главной диагонали матрицыА элементаa kk =0 благодаря поиску максимального элементаa kk в текущем столбце, осуществляемому в блоках 36 с помощью циклаII.

Затем реализуются расчеты по формулам (6) прямого хода Гаусса в блоках циклов IVиV.

Проведем поблочный анализ в среде рассмотренных циклов IVна примере (8).

Блок 3p =k = 1

Вход в цикл II

Блок 4m =k +1 = 2 доn = 3

Блок 5a 11 = 2 <a 21 = 4 из (*)

Блок 6p = 2

Блок 4m = 2+1 = 3

Блок 5a 21 = 4 <a 31 = 6 из (*)

Блок 6p = 3

Выход из цикла IIи вход в циклIII, блоки 710 выполняют перестановку строк матрицыА поэлементно

Блок 7j = 1 (j от 1 до 3)

Блок 8 r = a 11 = 2 из (*)

Блок 9 a 11 = a 31 = 6

Блок 10 a 31 = r

Блок 7 j = 2

Блок 8 r = a 12 = 1

Блок 9 a 12 = a 32 = 5

Блок 10 a 32 = r = 1

Блок 7j = 3 и по аналогииr =a 13 ;a 13 =a 33 ;a 33 =r = −1.

Выход из цикла IIIи вход вБлок 11 и далее 1213 выполняют аналогичную перестановку значений свободных членов

r =b 1 = 1;b 1 = b 3 = 14;b 3 =r= 1.

Вход в цикл IVс измененной системой

;; (**)

для пересчета b 2 вектора

m =k +1 = 1+1 = 2 доn = 3

c = a mk / a kk = a 21 / a 11 = 4/6 из (**)

b 2 =b 2 –c b 1 = 6 – 4/614 = −20/6 из (**)

Вход во вложенный цикл Vдля пересчета второй строки

i = 1 (i от 1 до 3); a 21 = a 21 – с a 11 = 4 – 4/6  6 = 0;

i = 2; a 22 = a 22 – с a 12 = 6 – 4/6  5 = 16/6;

i = 3; a 23 = a 23 – с a 13 = 2 – 4/6  8 = −20/6.

Выход из цикла Vи вход в циклIV

m = 3;c =a 31 /a 11 = 2/6.

Вход в Блок 16

b 3 =b 3 –c b 1 = 1 – 2/614 = −22/6.

Выход из цикла IVи вход в циклVи вход вБлок 17

i = 1 (i от 1 до 3); a 31 = a 31 – с a 11 = 2 – 2/6  6 = 0;

i = 2; a 32 = a 32 – с a 12 = 1 – 2/6  5 = −4/6;

i = 3; a 33 = a 33 – с a 13 = −1 – 2/6  8 = −22/6.

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

;
; (***)

и вход по линии А в циклI

k = 2;p =k = 2;m =k +1 = 3; вход вБлок 5

| a 22 | < |a 32 | = | 16/6 | > | 4/6 | из (***).

Выход из цикла IIи вход в циклIII

j = 2 (j от 2 до 3);

r = a kj = a 22 = 16/6; a 22 = a 22 ; a 22 = r = 16/6; из (***)

r =a 23 = −20/6;a 23 =a 23 ;a 23 =r = −20/6; из (***)

В данном случае на диагонали оказался максимальный элемент, поэтому перестановка 2-ой и 3-ей строк не выполняется.

Выход из цикла IIIи вход в циклIвБлок 11

r =b 2 ;b 2 = b 2 ;b 2 =r= −20/6.

Свободный член b 2 остается на своем месте.

Вход в цикл IV

m =k +1 = 2+1 = 3;

c = a mk / a kk = a 32 / a 22 = (–4/6) / (16/6); из (***)

b 3 =b 3 –c b 2 = −22/6 – (–1/4)(–20/6) = −27/6 из (***)

Выход из цикла IVи вход в циклV

i = 2 (i от 2 до 3); a 32 = a 32 – с a 22 = −4/6 – (–1/4)  16/6 = 0;

i = 3;a 33 =a 33 –с a 23 = −22/6 – (–1/4)(–20/6) = −27/6.

Выход из цикла Vи выход из циклаI.

Обратный ход метода Гаусса

В Блоках 1924 реализуются формулы (7).

В Блоке 19 из последнего уравнения находится значениеx n (n = 3)

x 3 =b n / a nn =b 3 / a 33 = (–27/6) / (–27/6) = 1.

Вход в цикл VI(Блок 20), в котором значение переменной циклаk изменяется отn –1 до 1 с шагом (–1)

Блок 21s= 0

Вход в цикл VII(Блок 22)

i = k +1 = 2+1 = 3; n = 3; s = s + a ki x i = 0 + a 23 x 3 = −20/6 1 = −20/6.

Выход из цикла VIIнаБлок 24 в циклVI:

k = 2; x 2 = (b k – s)/ a nn = (b 2 – s)/ a 22 = (–20/6 +20/6)/ a 22 = 0.

k =k –1 = 2–1 = 1;

i = k + 1 = 2; s = 0 + a 12 x 2 = 5  0 = 0;

i = k + 1 = 3; s = 0 + a 13 x 3 = 8  1 = 8;

x 1 = (b 1 –s)/ a 11 = (14 – 8) / 6 = 1.

Выход из последнего цикла VII.

В Блоке 25 (цикл опущен) выполняется вывод на экран полученного решения СЛАУ – векторат.е.x i ,i =1, ...,n . В нашем случае (1; 0; 1).

В данной статье метод рассматривается как способ решения систем линейных уравнений (СЛАУ). Метод является аналитическим, то есть позволяет написать алгоритм решения в общем виде, а потом уже подставлять туда значения из конкретных примеров. В отличие от матричного метода или формул Крамера, при решении системы линейных уравнений методом Гаусса можно работать и с теми, что имеют решений бесконечно много. Или не имеют его вовсе.

Что значит решить методом Гаусса?

Для начала необходимо нашу систему уравнений записать в Выглядит это следующим образом. Берется система:

Коэффициенты записываются в виде таблицы, а справа отдельным столбиком - свободные члены. Столбец со свободными членами отделяется для удобства Матрица, включающая в себя этот столбец, называется расширенной.

Далее основную матрицу с коэффициентами нужно привести к верхней треугольной форме. Это основной момент решения системы методом Гаусса. Проще говоря, после определенных манипуляций матрица должна выглядеть так, чтобы в ее левой нижней части стояли одни нули:

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

Это описание решения методом Гаусса в самых общих чертах. А что получится, если вдруг у системы нет решения? Или их бесконечно много? Чтобы ответить на эти и еще множество вопросов, необходимо рассмотреть отдельно все элементы, использующиеся при решении методом Гаусса.

Матрицы, их свойства

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

Матрица всегда прямоугольная, потому что так удобнее. Даже в методе Гаусса, где все сводится к построению матрицы треугольного вида, в записи фигурирует прямоугольник, только с нулями на том месте, где нет чисел. Нули можно не записывать, но они подразумеваются.

Матрица имеет размер. Ее "ширина" - число строк (m), "длина" - число столбцов (n). Тогда размер матрицы A (для их обозначения обычно используются заглавные латинские буквы) будет обозначаться как A m×n . Если m=n, то эта матрица квадратная, и m=n - ее порядок. Соответственно, любой элемент матрицы A можно обозначить через номер его строки и столбца: a xy ; x - номер строки, изменяется , y - номер столбца, изменяется .

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

Определитель

Еще у матрицы есть определитель. Это очень важная характеристика. Выяснять его смысл сейчас не стоит, можно просто показать, как он вычисляется, а потом рассказать, какие свойства матрицы он определяет. Наиболее простой способ нахождения определителя - через диагонали. В матрице проводятся воображаемые диагонали; элементы, находящиеся на каждой из них, перемножаются, а затем полученные произведения складываются: диагонали с наклоном вправо - со знаком "плюс", с наклоном влево - со знаком "минус".

Крайне важно отметить, что вычислять определитель можно только у квадратной матрицы. Для прямоугольной матрицы можно сделать следующее: из количества строк и количества столбцов выбрать наименьшее (пусть это будет k), а затем в матрице произвольным образом отметить k столбцов и k строк. Элементы, находящиеся на пересечении выбранных столбцов и строк, составят новую квадратную матрицу. Если определитель такой матрицы будет числом, отличным от нуля, то назовется базисным минором первоначальной прямоугольной матрицы.

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

Классификация систем

Существует такое понятие, как ранг матрицы. Это максимальный порядок ее определителя, отличного от нуля (если вспомнить про базисный минор, можно сказать, что ранг матрицы - порядок базисного минора).

По тому, как обстоят дела с рангом, СЛАУ можно разделить на:

  • Совместные. У совместных систем ранг основной матрицы (состоящей только из коэффициентов) совпадает с рангом расширенной (со столбцом свободных членов). Такие системы имеют решение, но необязательно одно, поэтому дополнительно совместные системы делят на:
  • - определенные - имеющие единственное решение. В определенных системах равны ранг матрицы и количество неизвестных (или число столбцов, что есть одно и то же);
  • - неопределенные - с бесконечным количеством решений. Ранг матриц у таких систем меньше количества неизвестных.
  • Несовместные. У таких систем ранги основной и расширенной матриц не совпадают. Несовместные системы решения не имеют.

Метод Гаусса хорош тем, что позволяет в ходе решения получить либо однозначное доказательство несовместности системы (без вычисления определителей больших матриц), либо решение в общем виде для системы с бесконечным числом решений.

Элементарные преобразования

До того как приступить непосредственно к решению системы, можно сделать ее менее громоздкой и более удобной для вычислений. Это достигается за счет элементарных преобразований - таких, что их выполнение никак не меняет конечный ответ. Следует отметить, что некоторые из приведенных элементарных преобразований действительны только для матриц, исходниками которых послужили именно СЛАУ. Вот список этих преобразований:

  1. Перестановка строк. Очевидно, что если в записи системы поменять порядок уравнений, то на решение это никак не повлияет. Следовательно, в матрице этой системы также можно менять местами строки, не забывая, конечно, про столбец свободных членов.
  2. Умножение всех элементов строки на некоторый коэффициент. Очень полезно! С помощью него можно сократить большие числа в матрице или убрать нули. Множество решений, как обычно, не изменится, а выполнять дальнейшие операции станет удобнее. Главное, чтобы коэффициент не был равен нулю.
  3. Удаление строк с пропорциональными коэффициентами. Это отчасти следует из предыдущего пункта. Если две или более строки в матрице имеют пропорциональные коэффициенты, то при умножении/делении одной из строк на коэффициент пропорциональности получаются две (или, опять же, более) абсолютно одинаковые строки, и можно убрать лишние, оставив только одну.
  4. Удаление нулевой строки. Если в ходе преобразований где-то получилась строка, в которой все элементы, включая свободный член, - ноль, то такую строку можно назвать нулевой и выкинуть из матрицы.
  5. Прибавление к элементам одной строки элементов другой (по соответствующим столбцам), умноженных на некоторый коэффициент. Самое неочевидное и самое важное преобразование из всех. На нем стоит остановиться поподробнее.

Прибавление строки, умноженной на коэффициент

Для простоты понимания стоит разобрать этот процесс по шагам. Берутся две строки из матрицы:

a 11 a 12 ... a 1n | b1

a 21 a 22 ... a 2n | b 2

Допустим, необходимо ко второй прибавить первую, умноженную на коэффициент "-2".

a" 21 = a 21 + -2×a 11

a" 22 = a 22 + -2×a 12

a" 2n = a 2n + -2×a 1n

Затем в матрице вторая строка заменяется на новую, а первая остается без изменений.

a 11 a 12 ... a 1n | b1

a" 21 a" 22 ... a" 2n | b 2

Необходимо заметить, что коэффициент умножения можно подобрать таким образом, чтобы в результате сложения двух строк один из элементов новой строки был равен нулю. Следовательно, можно получить уравнение в системе, где на одну неизвестную будет меньше. А если получить два таких уравнения, то операцию можно проделать еще раз и получить уравнение, которое будет содержать уже на две неизвестных меньше. А если каждый раз превращать в ноль один коэффициент у всех строк, что стоят ниже исходной, то можно, как по ступенькам, спуститься до самого низа матрицы и получить уравнение с одной неизвестной. Это и называется решить систему методом Гаусса.

В общем виде

Пусть существует система. Она имеет m уравнений и n корней-неизвестных. Записать ее можно следующим образом:

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

  • первая строка матрицы умножается на коэффициент k = (-a 21 /a 11);
  • первая измененная строка и вторая строка матрицы складываются;
  • вместо второй строки в матрицу вставляется результат сложения из предыдущего пункта;
  • теперь первый коэффициент в новой второй строке равен a 11 × (-a 21 /a 11) + a 21 = -a 21 + a 21 = 0.

Теперь выполняется та же серия преобразований, только участвуют первая и третья строки. Соответственно, в каждом шаге алгоритма элемент a 21 заменяется на a 31 . Потом все повторяется для a 41 , ... a m1 . В итоге получается матрица, где в строках первый элемент равен нулю. Теперь нужно забыть о строке номер один и выполнить тот же алгоритм, начиная со второй строки:

  • коэффициент k = (-a 32 /a 22);
  • с "текущей" строкой складывается вторая измененная строка;
  • результат сложения подставляется в третью, четвертую и так далее строки, а первая и вторая остаются неизменными;
  • в строках матрицы уже два первых элемента равны нулю.

Алгоритм надо повторять, пока не появится коэффициент k = (-a m,m-1 /a mm). Это значит, что в последний раз алгоритм выполнялся только для нижнего уравнения. Теперь матрица похожа на треугольник, или имеет ступенчатую форму. В нижней строчке имеется равенство a mn × x n = b m . Коэффициент и свободный член известны, и корень выражается через них: x n = b m /a mn . Полученный корень подставляется в верхнюю строку, чтобы найти x n-1 = (b m-1 - a m-1,n ×(b m /a mn))÷a m-1,n-1 . И так далее по аналогии: в каждой следующей строке находится новый корень, и, добравшись до "верха" системы, можно отыскать множество решений . Оно будет единственным.

Когда нет решений

Если в одной из матричных строк все элементы, кроме свободного члена, равны нулю, то уравнение, соответствующее этой строке, выглядит как 0 = b. Оно не имеет решения. И поскольку такое уравнение заключено в систему, то и множество решений всей системы - пустое, то есть она является вырожденной.

Когда решений бесконечное количество

Может получиться так, что в приведенной треугольной матрице нет строк с одним элементом-коэффициентом уравнения, и одним - свободным членом. Есть только такие строки, которые при переписывании имели бы вид уравнения с двумя или более переменными. Значит, у системы имеется бесконечное число решений. В таком случае ответ можно дать в виде общего решения. Как это сделать?

Все переменные в матрице делятся на базисные и свободные. Базисные - это те, которые стоят "с краю" строк в ступенчатой матрице. Остальные - свободные. В общем решении базисные переменные записываются через свободные.

Для удобства матрица сначала переписывается обратно в систему уравнений. Потом в последнем из них, там, где точно осталась только одна базисная переменная, она остается с одной стороны, а все остальное переносится в другую. Так делается для каждого уравнения с одной базисной переменной. Потом в остальные уравнения, там, где это возможно, вместо базисной переменной подставляется полученное для нее выражение. Если в результате опять появилось выражение, содержащее только одну базисную переменную, она оттуда опять выражается, и так далее, пока каждая базисная переменная не будет записана в виде выражения со свободными переменными. Это и есть общее решение СЛАУ.

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

Решение на конкретных примерах

Вот система уравнений.

Для удобства лучше сразу составить ее матрицу

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

вторая строка: k = (-a 21 /a 11) = (-3/1) = -3

a" 21 = a 21 + k×a 11 = 3 + (-3)×1 = 0

a" 22 = a 22 + k×a 12 = -1 + (-3)×2 = -7

a" 23 = a 23 + k×a 13 = 1 + (-3)×4 = -11

b" 2 = b 2 + k×b 1 = 12 + (-3)×12 = -24

третья строка: k = (-a 3 1 /a 11) = (-5/1) = -5

a" 3 1 = a 3 1 + k×a 11 = 5 + (-5)×1 = 0

a" 3 2 = a 3 2 + k×a 12 = 1 + (-5)×2 = -9

a" 3 3 = a 33 + k×a 13 = 2 + (-5)×4 = -18

b" 3 = b 3 + k×b 1 = 3 + (-5)×12 = -57

Теперь, чтобы не запутаться, необходимо записать матрицу с промежуточными результатами преобразований.

Очевидно, что такую матрицу можно сделать более удобной для восприятия с помощью некоторых операций. Например, из второй строки можно убрать все "минусы", умножая каждый элемент на "-1".

Стоит также заметить, что в третьей строке все элементы кратны трем. Тогда можно сократить строку на это число, умножая каждый элемент на "-1/3" (минус - заодно, чтобы убрать отрицательные значения).

Выглядит гораздо приятнее. Теперь надо оставить в покое первую строку и поработать со второй и третьей. Задача - прибавить к третьей строке вторую, умноженную на такой коэффициент, чтобы элемент a 32 стал равен нулю.

k = (-a 32 /a 22) = (-3/7) = -3/7 (если в ходе некоторых преобразований в ответе получилось не целое число, рекомендуется для соблюдения точности вычислений оставить его "как есть", в виде обыкновенной дроби, а уже потом, когда получены ответы, решать, стоит ли округлять и переводить в другую форму записи)

a" 32 = a 32 + k×a 22 = 3 + (-3/7)×7 = 3 + (-3) = 0

a" 33 = a 33 + k×a 23 = 6 + (-3/7)×11 = -9/7

b" 3 = b 3 + k×b 2 = 19 + (-3/7)×24 = -61/7

Снова записывается матрица с новыми значениями.

1 2 4 12
0 7 11 24
0 0 -9/7 -61/7

Как видно, полученная матрица уже имеет ступенчатый вид. Поэтому дальнейшие преобразования системы по методу Гаусса не требуются. Что здесь можно сделать, так это убрать из третьей строки общий коэффициент "-1/7".

Теперь все красиво. Дело за малым - записать матрицу опять в виде системы уравнений и вычислить корни

x + 2y + 4z = 12 (1)

7y + 11z = 24 (2)

Тот алгоритм, по которому сейчас будут находиться корни, называется обратным ходом в методе Гаусса. В уравнении (3) содержится значение z:

y = (24 - 11×(61/9))/7 = -65/9

И первое уравнение позволяет найти x:

x = (12 - 4z - 2y)/1 = 12 - 4×(61/9) - 2×(-65/9) = -6/9 = -2/3

Такую систему мы имеем право назвать совместной, да еще и определенной, то есть имеющей единственное решение. Ответ записывается в следующей форме:

x 1 = -2/3, y = -65/9, z = 61/9.

Пример неопределенной системы

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

х 1 + х 2 + х 3 + х 4 + х 5 = 7 (1)

3х 1 + 2х 2 + х 3 + х 4 - 3х 5 = -2 (2)

х 2 + 2х 3 + 2х 4 + 6х 5 = 23 (3)

5х 1 + 4х 2 + 3х 3 + 3х 4 - х 5 = 12 (4)

Сам вид системы уже настораживает, потому что количество неизвестных n = 5, а ранг матрицы системы уже точно меньше этого числа, потому что количество строк m = 4, то есть наибольший порядок определителя-квадрата - 4. Значит, решений существует бесконечное множество, и надо искать его общий вид. Метод Гаусса для линейных уравнений позволяет это сделать.

Сначала, как обычно, составляется расширенная матрица.

Вторая строка: коэффициент k = (-a 21 /a 11) = -3. В третьей строке первый элемент - еще до преобразований, поэтому не надо ничего трогать, надо оставить как есть. Четвертая строка: k = (-а 4 1 /а 11) = -5

Умножив элементы первой строки на каждый их коэффициентов по очереди и сложив их с нужными строками, получаем матрицу следующего вида:

Как можно видеть, вторая, третья и четвертая строки состоят из элементов, пропорциональных друг другу. Вторая и четвертая вообще одинаковые, поэтому одну из них можно убрать сразу, а оставшуюся умножить на коэффициент "-1" и получить строку номер 3. И опять из двух одинаковых строк оставить одну.

Получилась такая матрица. Пока еще не записана система, нужно здесь определить базисные переменные - стоящие при коэффициентах a 11 = 1 и a 22 = 1, и свободные - все остальные.

Во втором уравнении есть только одна базисная переменная - x 2 . Значит, ее можно выразить оттуда, записав через переменные x 3 , x 4 , x 5 , являющиеся свободными.

Подставляем полученное выражение в первое уравнение.

Получилось уравнение, в котором единственная базисная переменная - x 1 . Проделаем с ней то же, что и с x 2 .

Все базисные переменные, которых две, выражены через три свободные, теперь можно записывать ответ в общем виде.

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

16, 23, 0, 0, 0.

Пример несовместной системы

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

x + y - z = 0 (1)

2x - y - z = -2 (2)

4x + y - 3z = 5 (3)

Как обычно, составляется матрица:

1 1 -1 0
2 -1 -1 -2
4 1 -3 5

И приводится к ступенчатому виду:

k 1 = -2k 2 = -4

1 1 -1 0
0 -3 1 -2
0 0 0 7

После первого же преобразования в третьей строке содержится уравнение вида

не имеющее решения. Следовательно, система несовместна, и ответом будет пустое множество.

Преимущества и недостатки метода

Если выбирать, каким методом решать СЛАУ на бумаге ручкой, то метод, который был рассмотрен в этой статье, выглядит наиболее привлекательно. В элементарных преобразованиях гораздо труднее запутаться, чем в том случается, если приходится искать вручную определитель или какую-нибудь хитрую обратную матрицу. Однако, если использовать программы для работы с данными такого типа, например, электронные таблицы, то оказывается, что в таких программах уже заложены алгоритмы вычисления основных параметров матриц - определитель, миноры, обратная и и так далее. А если быть уверенным в том, что машина посчитает эти значения сама и не ошибется, целесообразней использовать уже матричный метод или формул Крамера, потому что их применение начинается и заканчивается вычислением определителей и обратными матрицами.

Применение

Поскольку решение методом Гаусса представляет из себя алгоритм, а матрица - это, фактически, двумерный массив, его можно использовать при программировании. Но поскольку статья позиционирует себя, как руководство "для чайников", следует сказать, что самое простое, куда метод можно запихнуть - это электронные таблицы, например, Excel. Опять же, всякие СЛАУ, занесенные в таблицу в виде матрицы, Excel будет рассматривать как двумерный массив. А для операций с ними существует множество приятных команд: сложение (складывать можно только матрицы одинаковых размеров!), умножение на число, перемножение матриц (также с определенными ограничениями), нахождение обратной и транспонированной матриц и, самое главное, вычисление определителя. Если это трудоемкое занятие заменить одной командой, можно гораздо быстрее определять ранг матрицы и, следовательно, устанавливать ее совместность или несовместность.

Метод Гаусса – метод последовательного исключения неизвестных – заключается в том, что с помощью элементарных преобразований исходная система приводится к равносильной ей системе ступенчатого или треугольного вида, из которой последовательно, начиная с последних (по номеру), неизвестных находятся все остальные неизвестные. Дана система (1)

Начинаем осуществлять прямой ход . Считаем, что коэффициент а 11 ≠ 0; если же это не так, меняем местами уравнения.

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

Полученная система равносильна исходной системе.

Вторым шагом исключают неизвестное из всех уравнений, кроме первого и второго. Для этого повторяем все действия первого шага для второго и последующих уравнений, а именно: считаем, что коэффициент
≠ 0 и так далее. Если в результате преобразований получается нулевое уравнение, то его удаляют, если же получается несовместное уравнение, то решение системы закончено – она несовместна. Процесс исключения неизвестных продолжаем до тех пор, пока это возможно. Обозначим количество уравнений, оставшихся после прямого хода, через r . Это число равно рангу основной матрицы системы и может быть меньше или равно n . Рассмотрим оба случая.

1) Если r = n

где с 11 ≠ 0, с 22 ≠ 0, …, с nn ≠ 0.

Обратным ходом , начиная с последнего уравнения, последовательно найдем значения x n , (где x n = ), x n – 1 , ..., x 1 . В этом случае система линейных уравнений имеет единственное решение, то есть является определенной.

2) Если r < n , то система после прямого хода принимает вид:

где с 11 ≠ 0, с 22 ≠ 0, …, с rr ≠ 0. Неизвестные x 1 , x 2 , …, x r , с которых начинаются уравнения, называются главными неизвестными , а остальные x r + 1 , x r + 2 , …, x n свободными . В этом случае обратным ходом, начиная с последнего уравнения, выражают главные неизвестные через свободные неизвестные. Получают следующие равенства:

x 1 = k 1, r + 1 x r + 1 + … + k 1, n x n + t 1 ,

x 2 = k 2, r + 1 x r + 1 + … + k 2, n x n + t 2 ,

……………………………………..

x r = k r , r + 1 x r + 1 + … + k r , n x n + t r .

Определение 6.10. Общим решением системы называется выражение главных неизвестных через свободные.

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

Пример 6.3. Решить методом Гаусса систему линейных уравнений:

Решение . Преобразования с системой линейных удобнее производить не с самими уравнениями, а с матрицей их коэффициентов. Расширенная матрица этой системы имеет вид: (А |B ) =
.

Осуществляем прямой ход. Первым шагом исключаем неизвестное х 1 из всех уравнений, кроме первого. Так как а 11 = 1 ≠ 0, то переставлять уравнения местами не нужно. Прибавим ко второму уравнению системы первое уравнение, умноженное на (–1), к третьему уравнению – первое, умноженное на (–3). Получим после преобразований следующую матрицу:
, в которой элемент а 22 = 1. Перестановка местами уравнений (первое уравнение трогать не следует) не поможет, поэтому переходим к следующему неизвестному х 3 и исключаем его из всех уравнений, кроме первого и второго. Для этого к третьему уравнению прибавим второе, умноженное на (–2) и вычеркнем получившееся нулевое уравнение. После прямого хода получаем следующую систему:
. Прямой ход завершен. В этом случае n = 4, r = 2, r < n , и, следовательно, система неопределенная. Главные неизвестные – это те неизвестные, с которых начинаются уравнения, в нашем случае это х 1 и х 3 . Неизвестные х 2 и х 4 – свободные.

Обратным ходом надо выразить главные неизвестные через свободные. Для этого в столбцах, содержащих ведущие элементы строк, следует получить нули. Здесь это элемент а 13 . Прибавим к первому уравнению, умноженному на 2, второе и выпишем получившуюся матрицу коэффициентов:
, а затем и сами уравнения:
Из этих уравнений получаем общее решение:

Найдем какое-нибудь частное решение; пусть х 2 = 3, х 4 = 1, тогда из общего решения получим значения х 1 = , и х 1 = –2. Таким образом, частное решение – вектор а = (, 3, –2, 1).

Ответ : общее решение {(
, х 2 ,
, х 4)}, где х 2 , х 4  R;

частное решение, если х 2 = 3, х 4 = 1, то (, 3, –2, 1).

(СЛАУ), состоящая из уравнений с неизвестными:

Предполагается, что существует единственное решение системы, то есть .

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

Описание метода

Процесс решения системы линейных уравнений

по методу Гаусса состоит из 2х этапов:

1. Предполагаем, что . Тогда первое уравнение системы делим на коэффициент , в результате получаем уравнение . Затем из каждого из оставшихся уравнений вычитается первое, умноженное на соответствующий коэффициент . В результате система преобразуются к виду: 2. В предположении, что , делим второе уравнение на коэффициент и исключаем неизвестное из всех последующих уравнений и т.д. 3. Получаем систему уравнений с треугольной матрицей:
  • Обратный ход Непосредственное определение неизвестных
1. Из го уравнения системы определяем 2. Из го - определяем и т.д.

Анализ метода

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

Условия, при которых метод выдает точное решение, на практике не выполнимы - неизбежны как ошибки входных данных, так и ошибки округления. Тогда встает вопрос: насколько точное решение можно получить, используя метод Гаусса, насколько метод корректен? Определим устойчивость решения относительно входных параметров. Наряду с исходной системой рассмотрим возмущенную систему:

Пусть введена некоторая норма . - называется числом обусловленности матрицы .

Возможны 3 случая:

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

Проиллюстрируем полученные результаты на следующем числовом примере: Дана система

Она имеет решение .

Теперь рассмотрим возмущенную систему:

Решением такой системы будет вектор .

При совсем малом возмущении правой части получили несоизмеримо большое возмущение решения. Объяснить такую "ненадежность" решения можно тем, что матрица почти вырожденная: прямые, соответствующие двум уравнениям, почти совпадают, что видно на графике:

Такой результат можно было предвидеть в силу плохой обусловленностью матрицы :

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

Способы оценки ошибок

1) Контрольная сумма: обычно применяется для предупреждения случайных погрешностей в процессе вычисления без помощи компьютеров.

Составляем контрольный столбец , состоящий из контрольных элементов системы:

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

2) Относительная погрешность известного решения позволяет без существенных дополнительных затрат получить суждение о погрешности решения.

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

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

3) Изменение масштабов - прием, применяющийся для получения представления о реальной величине погрешности, возникающей за счет округлений при вычислениях.

Наряду с исходной системой тем же методом решается система

, где и - числа

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

Улучшение метода исключения Гаусса

Рассмотренные ниже модификации метода Гаусса позволяют уменьшить погрешность результата.

Выбор главного элемента

Основное увеличение ошибки в методе происходит во время прямого хода, когда ведущая -я строка умножается на коэффициенты .Если коэффициенты 1%20" alt=" >1 ">, то ошибки, полученные на предыдущих шагах накапливаются. Чтобы этого избежать, применяется модификация метода Гаусса с выбором главного элемента. На каждом шаге к обычной схеме добавляется выбор максимального элемента по столбцу следующим образом:

Пусть по ходу исключения неизвестных получена система уравнений:

, .

Найдем такое , что и поменяем местами -е и -е уровнения.

Такое преобразование во многих случаях существенно уменьшает чувствительность решения к погрешностям округления при вычислениях.

Итеративное улучшение результата

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

.

Решая эту систему, получаем приближение к и полагаем

.

Если точность данного приближения неудовлетворительна, то повторяем эту операцию.

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

Числовой пример

Рассмотрим для примера матрицу Вандермонда размером 7х7 и 2 различные правые части:

Данные системы были решены двумя способами. Тип данных - float. B итоге получили следующие результаты:

Обычный метод
1 2
1 2 1 2
0.999991 1 0.999996 1
1.00019 1 7.4774e-005 2,33e-008
0.998404 1 0.999375 1
1.00667 1 0.00263727 1,12e-006
0.985328 1 0.994149 1
1.01588 1 0.00637817 3,27e-006
0.993538 1 0.99739 1
0,045479 2,9826e-006 0,01818 8,8362e-006
0,006497 4,2608e-007 0,0045451 2,209e-006
0,040152 4,344e-005 0,083938 2,8654e-006
С выбором ведущего элемента по строке
1 2
1 2 1 2
1 1 1 1
1 1 -3.57628e-005 1,836e-007
1.00001 1 1.00031 1
0.999942 1 -0.00133276 7,16e-006
1.00005 1 1.00302 0,99998
1.00009 1 -0.0033505 1,8e-005
0.99991 1 1.00139 0,99999
0,000298 4,3835e-007 0,009439 5,0683e-005
4,2571e-005 6,2622e-008 0,0023542 1,2671e-005
0,010622 9,8016e-007 0,29402 1,4768e-006

Пусть требуется решить линейную систему уравнений вида:

или в другой форме

В курсе линейной алгебры решения системы уравнений (5.2) представляются по правилу Крамера в виде отношений соответствующих определителей. Если использовать наиболее оптимальный способ расчета определителя, то по правилу Крамера требуется примерно -|п! арифметических операций. Однако существует более оптимальный способ решения системы уравнений (5.2) - метод исключения Гаусса, в рамках которого требуется -|п 3 арифметических действий.

Начнем исследование системы уравнений (5.2) с частного случая, когда матрица системы является верхней треугольной, т. е. все ее элементы ниже главной диагонали равны нулю. Выполняя в командном окне MATLAB oneрацию spy(triu(randn(25))) сгенерируем верхнюю треугольную матрицу и ее графический образ. На рис. 5.1 приведен соответствующий пример верхней треугольной матрицы.

Из последнего уравнения системы с верхней треугольной матрицей находим Х л, подставляя его в предпоследнее уравнение, находим Х„ _i и т. д. - находим все решение. Общая формула для определения Xj-ro имеет вид:

Метод Гаусса выражается в процедуре приведения матрицы системы уравнений к треугольному виду (например, к верхнему треугольному виду на рис. 5.1). Это можно сделать следующим образом. Вычтем из второго уравнения первое, умноженное на такое число, чтобы коэффициент при X] обратился в нуль, аналогично вычтем первое уравнение из второго, третьего и т. д. вплоть до П-го. В результате должна получиться новая система уравнений, в которой в первом столбце везде нули, кроме диагонального элемента а ц. Затем с помощью второго уравнения путем такой же процедуры обнуляем элементы второго столбца, лежащие ниже главной диагонали. Продолжая эту процедуру для третьего и всех последующих уравнений, преобразуем матрицу системы к верхнему треугольному виду.

Рис. 5.1.

Пусть проведено исключение элементов из k- 1 столбца. Остальные уравнения с не обнуленными столбцами можно записать в виде:

Умножим к-к) строку на число С тк = / оIf 1 , т > к, и вычтем из ш-й

строки. Первый ненулевой элемент этой строки обратиться в нуль, а другие элементы можно пересчитать по формулам:

Проведение алгоритма (5.4), (5.5) обнуления каждого столбца матрицы ниже главной диагонали заканчивается (п - 1)-м столбцом, при этом вся процедура называется прямым ходом исключения.

Собрав (5.4), (5.5) вместе, будем иметь

или в развернутой форме

Система уравнений (5.6) легко решается обратным ходом по формулам (5.3).

Возможное нарушение в работе алгоритма (5.4), (5.5) может быть связано с тем, что на главной диагонали оказался нулевой элемент а кк " = 0. В этом случае необходимо среди строк матрицы ниже к -й найти такую, у которой на к- м месте находится отличный от нуля элемент. Такая строка обязательно должна найтись, если она не находится, то это значит, что в к- м столбце, начиная с к-го номера все элементы нулевые, а значит, и детерминант матрицы А равен нулю. Перестановкой строк можно переместить подходящую строку в нужное положение.

Если оказывается, что элемент на главной диагонали мал, то коэффициенты С т к становятся большими числами, и при пересчете элементов матрицы согласно (5.5) может быть значительная потеря точности на ошибках округления при вычитании больших чисел. Чтобы этого не происходило, среди элементов столбца а^ к, т>к, находят главный или максимальный и перестановкой строк переводят его на главную диагональ. Этот метод называется методом Гаусса с выбором главного элемента. С выбором главного элемента ошибки округления в методе Гаусса обычно невелики.

Метод Гаусса с выбором главного элемента наиболее прост, надежен и выгоден и по этой причине наиболее востребован при решении линейных систем уравнений с плотно заполненной матрицей порядка п

Рассмотрим процедуру решения линейной системы уравнений в среде MATLAB. Покажем экспериментально, что в среднем количество операций, осуществляемое центральным процессором при решении линейной системы уравнений, пропорционально кубу порядка матрицы. Покажем, что асимптотически отношение time(n)/n 3 стремится к некоторой предстепенной константе при п -> оо, где time(n) - время работы центрального процессора при данном порядке матрицы п.

В листинге 5.1 приведен код соответствующей программы.

Листинг 5.1

“/«Программа изучения затрат времени “/«центрального процессора при решении %систем линейных уравнений %очищаем рабочее пространство clear all

“/«определяем максимальный порядок “/«обращаемых матриц

птах =1 0 0 0; к =0;

“/«организуем цикл решений систем “/«уравнений вида А X = Ь for п = 1: 10: птах k =к +1; order) к) =п;

“/оформируем случайну матрицу А %и правую часть Ь A=r andn(n); b=randn(n, 1) ;

“/«запоминаем начальный момент времени “/оработы центрального процессора 10 =с рut i me;

“/орешаем линейную систему уравнений %А X = Ь по формуле: X =А Ь А Ь;

“/онаходим последующий момент времени,

“/овычитаем из него предыдущий и “/оделим на куб порядка матрицы

t (к) =(с put i me-10) / n л3; end

“/«строим график зависимости предстепенной “/оконстанты от порядка матрицы А semilogy(order,t);

Рис. 5.2.

На рис. 5.2 приведен график зависимости предстепенной константы отношения времени работы центрального процессора к кубу порядка матрицы от порядка матрицы. Видно, что при П -> оо действительно отношение time(n)/n 3 стремится к некоторой константе, что и подтверждает кубическую зависимость числа операций в методе Гаусса от порядка матрицы.

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

где выбор "+" или зависит от того, четной или нечетной была суммарная перестановка строк.

Процедуру поиска детерминанта матрицы (5.7) изучим на примере стандартной функции MATLAB - det(A), где А - произвольная матрица пхп. Изучим зависимость величины детерминанта матрицы со случайными элементами, распределенными по нормальному закону со средним 0 и стандартным отклонением 1, в зависимости от порядка матрицы.

В листинге 5.2 приведен код соответствующей программы.

Листинг 52

%Программа изучения процедуры поиска детерминанта %матрицы, элементы которой случайные величины,

“/«распределенные по нормальному закону со средним О %и стандартным отклонением 1 %очищаем рабочее пространство clear all

“/«определяем максимальный порядок %анализируемых матриц

птах =3 0 0;

%организуем цикл поиска детерминанта %матрицы А - det(A) for n=l: 5: nmax k =k +1; order) k) =n;

%формируем случайную матрицу A A=r a n d n (n) ;

%вычисляем детерминант матрицы A

%переходим в логарифмическую шкалу %при фиксации значений детерминанта d(k) =si gn(d(к)) *1 оg 10(d(к)); end

%строим график зависимости значений %детерминанта матрицы от порядка матрицы

plot (order, d);

На рис. 5.3 приведен график зависимости логарифма детерминанта случайной матрицы от порядка матрицы. Видно, что детерминант случайной матрицы экспоненциально растет с ростом порядка матрицы.


Рис. 5.3.

Для вычисления обратной матрицы обозначим ее элементы через а 1т, 1,т = 1 , и будем исходить из соотношения АА 1 = Е, тогда верна следующая запись:

Согласно (5.8) /-й столбец обратной матрицы можно рассматривать в качестве неизвестного вектора линейной системы уравнений с матрицей А со специальной правой частью. Таким образом, обращение матрицы сводится к решению линейной системы уравнений п раз с одной и той же матрицей, но с разными правыми частями. Приведение системы к треугольному виду осуществляется только 1 раз, поэтому количество арифметических операций при обращении матрицы лишь в три раза больше, чем при решении системы линейных уравнений, т. е. порядка * 2П 3 .

Рассмотрим теперь функцию inv(A) в среде MATLAB, которая возвращает обратную к А матрицу. В листинге 5.3 приведен код соответствующей программы.

Листинг 53

%Программа изучения процедуры поиска обратной матрицы, Роэлементы которой - случайные величины, распределенные %по нормальному закону со средним 0 и стандартным %отклонением 1

Роочищаем рабочее пространство

%определяем максимальный порядок %анализируемых матриц

пшах=1 0 00; к =0;

Реорганизуем цикл поиска обратной Роматрицы к А - i ПV(А) for п=1: 5: птах k =к +1; о г d е г (к) =п;

Реформируем случайну матрицу А

Ровычисляем обратную к А матрицу Ai nv=i nv(А);

Ренаходим ошибку обращения Е =еуе(п);

е г (к) =п о г ш(A* Ai nv- Е) ; end

Состроим график зависимости значений ошибок

%обращения матриц от порядка матриц

semilogy(order.er);

На рис. 5.4 приведена зависимость ошибки обращения матрицы от ее порядка. Видно, что по мере роста порядка матрицы от 1 до 800 ошибка обращения, выраженная в определенной норме, выросла на пять порядков.