Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Березиков..М.Ук2.doc
Скачиваний:
2
Добавлен:
04.08.2019
Размер:
509.95 Кб
Скачать

Текст процедуры обращения матриц

procedure obrash(n:integer; a:mat; var aa:mat);

var i,j,k:integer; max:real; c:mat2;

begin { формирование расширенной матрицы}

for i:=1 to n do

begin for j:=1 to n do

begin c[i,j]:=a[i,j];c[i,j+n]:=0

end; c[i,i+n]:=1

end; { превращение левой половины расширенной}

{ матрицы в единичную матрицу}

for i:=1 to n do

begin max:=c[i,i];

for k:=1 to 2*n do c[i,k]:=c[i,k]/max;

for j:=1 to n do

if i<>j then

for k:=2*n downto 1 do

c[j,k]:=c[j,k]-c[j,i]*c[i,k];

end;

{ перезапись правой части расширенной}

{ матрицы в обратную матрицу}

for i:=1 to n do

for j :=1 to n do

aa[i, j]:=c[i, n+j];

end;

Процедура может быть усовершенствована организацией выбора главного элемента.

Метод Гаусса-Жордана

Метод Гаусса-Жорданв является одной из модификаций метода Га-усса, легко программируемой на ЭВМ. Метод основан на приведении матрицы системы к диагональной единичной матрице. Это достигается последовательным исключением неизвестных из уравнений системы.

Сначала нормируется первое уравнение делением его на диагональ-ный коэффициент a1 1. Затем нормированное первое уравнение умножа-ют на первые коэффициенты ai 1 всех других уравнений и последователь-но вычитают из всех остальных уравнений. В результате первая неизве-стная будет исключена из всех уравнений кроме первого.

На втором этапе нормируется второе уравнение делением его на диа-гональный коэффициент a2 2. После этого второе уравнения последова-тельно умножается на вторые коэффициенты ai 2 всех других уравнений и вычитается из всех уравнений кроме второго. В результате из этих урав-нений исключается вторая неизвестная.

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

Уравнение или строка коэффициентов, нормируемые на каждом этапе, называются ведущей или главной строкой, а нормирующий коэф-фициент называется ведущим или главным элементом.

В описанной последовательности вычислений главный элемент не выбирался, а полагался равным диагональному ai i, и поэтому изложен-ный вариант получил название метода Гаусса-Жордана без выбора глав-ного элемента. Блок-схема процедуры, дополненная расчетом определи-теля, показана на рис. 3.1.

Текст процедуры

метода Гаусса-Жордана без выбора главного элемента

procedure gj1(n:integer; a:matr; var x:vec; var det:real);

var i,j,k:integer; max:real;

begin det:=1; for i:=1 to n do

begin max:=a[i,i]; det:=det*max;

for k:=1 to n+1 do a[i,k]:=a[i,k]/max;

for j:=1 to n do

if i<>j then

for k :=n+1 downto 1 do

a[j,k]:=a[j,k]-a[j,i]*a[i,k];

end; for i:=1 to n do x[i]:=a[i, n+1]

end;

det=1

i=1, n

max=ai i

det=det*max

k=1, n+1

ai k=ai k/max

j=1, n

нет

i j

да

k=n+1, 1, -1

aj k=aj k-aj i ai k

i=1, n

xi=ai n+1

конец процедуры

Рис 3.1 Блок-схема

процедуры метода Гаусса-Жордана

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

det=1

i=1, n

ri=i

i=1, n

max=ai i , nomj=i, nomk=i i=1, n

j=i+1, n xri=ai n+1

k=i+1, n

нет конец процедуры

|max|<|aj k|

да

max=aj k, nomj=j, nomk=k

да

nomji det=-det

нет

да

nomki det=-det

нет

m=rnomk, rnomk=ri, ri=m, det=det*max

j=1, n

u=aj nomk, aj nomk=aj i, aj i=u

k=1, n+1

u=anomj k, anomj k=ai k, ai k=u/max

j=1, n

нет

j i

да

k=n+1, 1, -1

aj k=aj k-aj i*ai k

Рис. 3.2 Блок-схема процедуры метода Гаусса-Жордана

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

Применение метода становится затруднительным или невозможным, если на каком-либо этапе диагональный коэффициент ai i становится равным или близким к нулю. Во многих случаях эту трудность можно обойти изменив последовательность записи неизвестных в уравнениях и порядок, в котором расположены уравнения. Для этого из всех оставших-ся в матрице системы элементов нужно найти наибольший по модулю элемент и переставить неизвестные и уравнения так, чтобы этот элемент оказался на месте диагонального элемента ai i. Благодаря выбору наи-большего по модулю главного элемента уменьшаются множители, используемые для преобразования уравнений, что способствует сниже-нию погрешностей вычислений. Блок-схема метода Гаусса-Жордана с выбором главного элемента в матрице системы и перестановкой строк и столбцов представлена на рис. 3.2. Для запоминания последовательно-сти неизвестных в уравнениях введен дополнительный массив ri , значе-ниями элементов которого являются номера неизвестных. Через max, nomj и nomk обозначены наибольший элемент и номера занимаемых им строки и столбца.

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