Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_1(СЛАУ).doc
Скачиваний:
37
Добавлен:
08.11.2019
Размер:
1.43 Mб
Скачать

I,j,k: IntType;

Begin

{Обратный ход}

k:= 0;

S:= A[N,N];

If S<>0.0 Then

For i:=N Downto 1 do

begin

k:= k+1;

S:= B[i];

For j:=i+1 to N do S:= S - A[i,j]*X[j];

X[i]:= S;

{Для Form1.ProgressBar2}

Form1.ProgressBar2.Position:=Round(100*k/N);

end;

End; {Solution}

procedure GaussGlavn(N:IntType;Var A:TMatrix; Var B:TVector; Var X:TVector);

{Метод Гаусса с выбором главного элемента}

Var

I, j, k : IntType;

S : String;

Flag : Boolean;

begin

Form1.Memo1.Visible:= True;

Form1.Memo1.Clear;

FactorizGlavn(N,A,B,X); {Факторизация}

SolutionGlavn(N,A,B,X); {Решение}

For i := 1 to N do

Form1.Memo1.Lines.Add(Format('X[%d] = %f', [i, X[i]]));

For i:= 1 to N do

Form1.StringGrid1.Cells[N+3, i]:= FloatToStrF(1.0*X[i],ffGeneral,3,3);

end;

При реализации данного метода требуется:

  • выполнить арифметических операций, в том числе умножений и делений;

  • одновременно запоминать промежуточных результатов.

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

  • коэффициенты системы являются дробными числами;

  • решение должно быть получено с минимальной погрешностью;

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

К недостаткам этого метода следует отнести громоздкость вычислительной схемы и сложность программирования.

1.1.6.3. Гауссово исключение и lu-разложение

Пусть необходимо решить систему уравнений

В матричном виде это записывается следующим образом

.

На первом шаге с помощью первого уравнения исключается из других уравнений. Это достигается прибавлением первого уравнения, умноженного на (0.3) , ко второму уравнению и прибавлением первого уравнения, умноженного на (-0.5), к третьему уравнению:

.

На втором шаге можно было бы использовать второе уравнение, чтобы исключить из третьего уравнения. Однако коэффициент при во втором уравнении – малое число (-0.1). Поэтому последние два уравнения переставляются. В данном примере это делать не обязательно, поскольку здесь нет ошибок округления, но в общем случае такие перестановки очень важны. Получаем

.

Теперь с помощью второго уравнения можно исключить из третьего уравнения. Для этого второе уравнение, умноженное на 0.04, прибавляем к третьему уравнению. Получается система

.

Получили верхнетреугольную систему, которую решают следующим образом

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

Для разобранного выше примера

.

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

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

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

,

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

Вычислен тот же, что и раньше, вектор .

Рассмотрим СЛАУ с невырожденной матрицей размера .

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

.

Процесс их решения называется прямой и обратной подстановками.

Строчно-ориентированная схема - разложения.

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

Столбцово-ориентированная схема - разложения.

Если хранится по столбцам, то алгоритм - разложения несколько изменится. На -м шаге изменённого алгоритма сначала формируется -й столбец матрицы ; это достигается векторной операцией деления. В самом внутреннем цикле (цикле по ) -й столбец матрицы ,умноженный на число, вычитается из -го столбца текущей матрицы ; длина столбцов равна . Правая часть может обрабатываться таким же образом, как столбцы в ; при этом осуществляется прямая подстановка.

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

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

Строчно-ориентированная схема - разложения

Столбцово-ориентированная схема - разложения