Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика_140800 / 2011-2012-учебный год / 2_семестр / Сам_изучение / Численные методры рещения_СЛАУ

.doc
Скачиваний:
58
Добавлен:
30.05.2015
Размер:
156.67 Кб
Скачать

Необходимо решить систему линейных алгебраических уравнений (СЛАУ) вида (2.1.1):

(2.1.1)

где - неизвестные величины, - заданные элементы расширенной матрицы системы уравнений А.

Проверка корректности постановки задачи (2.1.1)

Прежде чем приступить к решению системы (2.1.1) необходимо проверить корректность ее постановки.

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

Для решаемой задачи (2.1.1):

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

2) Исследование устойчивость задачи (2.1.1) сводится к исследованию зависимости ее решения от правых частей и элементов матрицы А.

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

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

при р=1, ,

при , ,

при , .

Подчиненные нормы матриц определяемые как , соответственно запишутся в следующем виде:

, , .

Обычно рассматривают два вида устойчивости решения системы (1):первый - по правым частям, второй - по коэффициентам системы(1) и по правым частям..

Наряду с исходной системой (2.1.1) рассмотрим систему с «возмущенными» правыми частями

,

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

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

,

где - число обусловленности матрицы А ( в современной литературе это число обозначают как ) Если число обусловленности велико ( ~ ), то говорят, что матрица А плохо обусловлена. В этом случае малые возмущения правых частей системы (1), вызванные либо неточностью задания исходных данных, либо вызванные погрешностями вычисления существенно влияют на решение системы. Грубо говоря если погрешность правых частей , то погрешность решения будет . Более подробно о свойствах числа обусловленности и оценка его величины можно прочитать в [3].

Если возмущение внесено в матрицу А, то для относительных возмущений решения запишем

.

Рассмотрим один из прямых методов метод Гаусса.

Метод Гаусса

Алгоритм метода состоит из двух этапов:

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

В случае, если (в противном случае нужно переставить строки) последовательно умножая первое уравнение на и складывая с i-м уравнение, исключим из всех уравнений кроме первого. Получим систему (2.3.1)

(2.3.1)

где

Аналогичным образом из полученной системы исключим . Последовательно, исключая все неизвестные, получим систему треугольного вида (2.3.2):

(2.3.2)

Обратный ход метода, состоит в последовательном определении неизвестных по следующим формулам (2.3.3):

(2.3.3)

Один из основных недостатков метода Гаусса связан с тем, что при его реализации накапливается вычислительная погрешность (погрешность выполнения арифметических операций). В книге [Самарский, Гулин “Численные методы”] показано, что для больших систем порядка n число действий умножений и делений близко к .

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

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

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

Выполняемые в методе Гаусса преобразования прямого хода, приведшие матрицу А системы к треугольному виду позволяют вычислить определитель матрицы (2.3.4):

(2.3.4)

Контроль полученных решений можно провести путем их подстановки в исходную СЛАУ и вычисления невязок , разностей между правыми и левыми частями уравнений (2.3.5):

(2.3.5)

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

Перейдем к рассмотрению итерационных методов.

2.4 Метод простых итераций и метод Зейделя

Для решения СЛАУ итерационными метода преобразуем систему от формы (2.1.1) к виду (2.4.1):

(2.4.1)

В общем виде рекуррентная форма для i уравнения имеет вид (2.4.2):

(2.4.2)

Задав столбец начальных приближений подставим их в правые части системы (2.4.1) и вычислим новые приближения , которые опять подставим в систему (2.4.1) и т.д. Это можно представить в таком виде (2.4.3):

(2.4.3)

Процесс (2.4.3) можно видоизменить, если использовать приближения к решениям, найденными при выполнении текущей итерации. Такое изменение известно как метод Зейделя, и как правило, приводит к ускорению сходимости (2.4.4):

(2.4.4)

Заканчивается итерационный процесс, когда выполняется условия (2.4.5):

(2.4.5)

где - заданная погрешность, .

Для сходимости итерационных методов необходимо, чтобы значения диагональных элементов матрицы СЛАУ были преобладающими по абсолютной величине по сравнению с другими элементами (2.4.6):

(2.4.6)

для каждой iстроки.

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

Методы Зейделя и простых итераций имеют разные области сходимости.

Программный код для метода простых итераций:

do{

flag=0;

for(i=0;i<n;i++) x[i]=x1[i];

for(i=0;i<n;i++)

{

s=a[i][n];

for(j=0;j<n;j++) s = s+a[i][j]*x[j];

s=s/a[i][i];

s=s+x[i];

x1[i]=s;

}

for(i=0;i<n && flag==0;i++) if((fabs(x1[i]-x[i])>e) flag==1;

}while(flag==1);