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

3.4. Метод Гаусса.

Данный метод решения СЛАУ является классичесиким. Он обладает высокой точностью и скоростью, так как основан на элементарных преобразованиях.

3.4.1. Расчётная схема.

Пусть имеется система уравнений:

Составим из этой системы матрицу:

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

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

3.4.2. Блок-схема.

3.4.3. Программа.

procedure gauss;

var

u,i: integer;

tmp: real; {for compatability}

begin

fillin;

{Pivedenie k treugolnomu vidu}

triangle(tmp,i);

{nahojdenie korney uravneniya}

if (matrix[k,k]<>0) then

begin

smatrix[k]:=matrix[k,k+1]/matrix[k,k];

writeln('X',k,'= ',smatrix[k]);

for u:=k-1 downto 1 do

begin

i:=u;

while i<>k+1 do

begin

smatrix[u]:=smatrix[u]+smatrix[i]*matrix[u,i];

i:=i+1;

end;

smatrix[u]:=(matrix[u,k+1]-smatrix[u])/matrix[u,u];

writeln('X',u,'= ',smatrix[u]);

end;

end

else

writeln('Systema imeet mnojestvo resheniy');

end;

3.5. Дополнения к разделу.

3.5.1. Комментарии.

Реализация методов Крамера и Гаусса базируется на приведении матрицы к треугольному виду. Поэтому данная процедура используется как в методе Крамера, так и в Методе Гаусса (раздел 3.3 и 3.4). Также в реализации этих методов используется программа заполнения массива данными. Данные программы представлены ниже, и они требуются для корректной работы методов.

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

3.5.2. Алгоритмы и программы.

Процедура приведения матрицы к треугольному виду:

Программа

procedure triangle(var opr: real; var znak: integer);

var

u,i,j,w,y: integer;

tmp,tmpz: real;

begin

opr:=1;

znak:=1;

for u:=1 to k-1 do

begin

for i:=1 to k-1 do {proverka kolonki na 0}

begin

j:=i;

while (matrix[j,u]=0)and(matrix[j+1,u]<>0)and(j<>0) do

begin

y:=1;

while (matrix[y,u]=0)and(y<>u) do

begin

y:=y+1;

end;

if (y=u) then

begin

znak:=znak*(-1);

for w:=1 to k+1 do

begin

tmp:=matrix[j,w];

matrix[j,w]:=matrix[j+1,w];

matrix[j+1,w]:=tmp;

end;

end;

j:=j-1;

end;

end;

tmpz:=matrix[u,u]; {summirovanie strok}

for j:=u+1 to k do

begin

tmp:=matrix[j,u];

opr:=opr*tmpz;

for i:=u to k+1 do

begin

matrix[j,i]:=(-1)*tmp*matrix[u,i]+tmpz*matrix[j,i]

end;

end;

end;

end;

Входные данные: глобальный массив «matrix», объявленные переменные «opr» и «znak» (требуются для метода Крамера, глава 3.3).

Выходные данные: преобразованный глобальный массив «matrix».

Процедура заполнения матрицы (глава 3.3, 3.4).

Программа.

procedure fillin;

var

u,i: integer;

begin

for i:=1 to k+1 do

begin

for u:=1 to k do

begin

if i<>k+1 then

matrix[u,i]:=a[u,i]

else

matrix[u,i]:=b[u];

end;

end;

end;

Входные данные: глобальный массив «matrix», массив коэффициентов линейных уравнений «a», массив свободных членов «b».

Выходные данные: заполненный глобальный массив «matrix».

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