Область применения метода Гаусса к решению прикладных задач. Разработка программы "Решение задач методом Гаусса"

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

? пер.).

. Канатников А.Н., Крищенко А.П. Аналитическая геометрия [Текст]: Учеб. для вузов. 3-е изд./ Под ред. В.С.Зарубина, А.П.Крищенко. - М.: изд-во МГТУ им. Н.Э. Баумана, 2002. - 388 с.(сер. Математика в техническом университете; вып. 3) - ISBN 5-7038-1671-8 (вып. 3).

. Шапрута В.В. Delphi 2005. Учимся программировать [Текст]: учебное пособие для вузов/ Шапрута В.В. - М.: НТ Пресс, 2005. - 352 с.: ил. - (самоучитель) - ISBN 5-477-00118-6.

. Кострикин А.И. Введение в алгебру. Часть 1. основы алгебры: Учебник для вузов. - М.: Физико-математическая литература,2001. - 272 с. - ISBN 5-9221-0167-6.

 

Приложение А

 

Общая символьная схема алгоритма.

Символьная схема алгоритма решения СЛАУ методом Гаусса

Символьная схема алгоритма нахождения обратной матрицы с использованием метода Гаусса

Символьная схема алгоритма нахождения определителя матрицы с использованием метода Гаусса

 

Приложение Б

 

Код программы

 

unit modul;

interface=array of real;=array of array of real;Gauss(a:matrica;b:massiv;n:integer;x:massiv;var pr:byte);opredelitel(a:matrica; n:integer):real;obrmatrica (a:matrica; n:integer;h:matrica;var pr:byte);Gauss (a:matrica;b:massiv;n:integer;x:massiv;var pr:byte);i,j,k,r:integer;,m,c,s:real;

{прямой ход метода Гаусса}

for i:=1 to n doj:=1 to n do k:=1 to n do:=abs(a[k,k]); {пусть диагональный элемент - максимальный}

r:=k; {Номер строки, в которой он находится}

for i:=k+1 to n doabs(a[i,k])>max then

begin{Если в строке найдется элемент, превышающий }

max:=abs(a[i,k]); {максимум, сохранить его, а}

r:=i; {также номер строки, в которой он находится}

end;

for j:=1 to n do {Текущая строка меняется местами со}

begin {строкой содержащий максимальный элемент}

c:=a[k,j];[k,j]:=a[r,j];[r,j]:=c;

end;

{Приведение расширенной матрицы к ступенчатому виду}

c:=b[k];[k]:=b[r];[r]:=c;i:=k+1 to n do:=a[i,k]/a[k,k];j:=k to n do[i,j]:=a[i,j]-m*a[k,j];[i]:=b[i]-m*b[k];;;

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

if a[n,n]=0 then{Если последний диагональный элемент равен нулю}

if b[n]=0 then{и последний свободный коэффициент равен нулю, то}

pr:=1{система не имеет решений, иначе , если последний}

else pr :=2{свободный коэффициент не нулевой, то система имеет}

else{бесконечное множество решений}

begin{Если последний диагональный элемент не нулевой}

pr:=0; {переходим к определению решений СЛАУ.}

SetLength(x,n);[n]:=b[n]/a[n,n];i:=n downto 1 do:=0;j:=i+1 to n do:=s+a[i,j]*x[j];[i]:=(b[i]-s)/a[i,i];;;opredelitel (a:matrica; n:integer):real;i,j,k,r:integer;,m,c,det:real;:=1;k:=1 to n do

max:=abs(a[k,k]); {пусть диагональный элемент - максимальный}

r:=k; {Номер строки, в которой он находится}

for i:=k+1 to n doabs(a[i,k])>max then{Если в строке найдется элемент, превышающий }

max:=abs(a[i,k]); {максимум, сохранить его, а}

r:=i; {также номер строки, в которой он находится}

end;r<>k then det:=-det; j:=1 to n do{Текущая строка меняется местами со}

begin {строкой содержащий максимальный элемент}

c:=a[k,j];[k,j]:=a[r,j];[r,j]:=c;

end;

{приведение расширенной матрицы к ступенчатому виду}

for i:=k+1 to n do:=a[i,k]/a[k,k];j:=k to n do[i,j]:=a[i,j]-m*a[k,j];;;i:=1 to n do:=det*a[i,i];:=det;;obrmatrica (a:matrica; n:integer;h:matrica;var pr:byte);i,j:integer;:byte;,b:massiv;i:=1 to n do

for j:=1 to n do {формирование вектора свободных членов}

if i=j then[j]:=1b[j]:=0;(a,b,n,x,pr1); {Решение СЛАУ методом Гаусса}

if pr1<>0 then:=1;;beginj:=1 to n do {формирование обратной матрицы}

h[j,i]:=x[j];:=0; end;;;.