Решение системы алгебраических линейных уравнений методом Гаусса

Автор работы: Пользователь скрыл имя, 24 Сентября 2012 в 19:48, курсовая работа

Описание работы

Целью данной курсовой работы является следующее: исследовать область применения метода Гаусса к решению различных прикладных задач и
разработать программу «Решение задач методом Гаусса», выполняющую следующие операции:
1) Решение СЛАУ методом Гаусса
2) Нахождение обратной матрицы методом Гаусса
3) Вычисление определителей методом Гаусса

Содержание работы

Введение
1 Теоретические сведения 4
1.1 Решение системы алгебраических линейных уравнений методом Гаусса 4
1.2 Вычисление обратной матрицы методом Гаусса 8
1.3 Вычисление определителя методом Гаусса 9
2 Практическая часть 11
2.1 Декомпозиция задачи 11
2.2 Схема взаимодействия интерфейсных форм 12
2.3 Схема взаимодействия модулей 14
2.4 Описание процедур и функций 15
2.5 Обоснование выбора структуры представления данных 15
2.6 Руководство пользователю 15
2.7 Тестирование 19
Заключение 30
Список использованных источников 31
Приложение А - Символьная схема алгоритма 32
Приложение Б – Код программы 41

Файлы: 1 файл

курсовая работа.doc

— 647.00 Кб (Скачать файл)

 

 

Тест № 10. Вычисление определителя. Случай, когда значение определителя равно нулю.

Исходные данные:

Ожидаемый результат: 0

Результат работы программы: при занесении исходных данных выше, программа выдала результат, приведенный на рисунке 2.7.10.

 

 

 

 

Рисунок 2.7.10 – Окно программы  с результатом решением

 

Анализ результата: полученный результат совпадает с ожидаемым.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Заключение

 

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

1) Решение систем алгебраических линейных уравнений методом Гаусса

2) Нахождение обратной  матрицы методом Гаусса

3) Вычисление определителя  методом Гаусса.  

 

 

 

 

 

 

Список использованных источников

 

1. Вержбицкий В.М. Основы численных методов [Текст]: учебное пособие для вузов/ В.М.Вержбицкий; под общ. ред. Л.В. Честной; Мн-во образования РФ, Удмурдский гос. Университет – М.:Высш.шк.,2002. – 840 с.:ил – ISBN 5-06-004020-8(в пер.).

2. Алексеев Е.Р. Турбо Паскаль 7.0 [Текст]: учебное пособие для вузов/ Алексеев Е.Р., Чеснокова О.В., Павлыш Н.Н., Славинская Л.В. – 2-е изд.-  М.: НТ Пресс, 2006.- 272с.:ил – ISBN 5-477-00276-Х(в пер.).

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

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ПРИЛОЖЕНИЕ  А

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

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

 

 

 

 

 

 

 

 
ПРИЛОЖЕНИЕ Б

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

unit modul;

 

interface

type

massiv=array of real;

matrica=array of array of real;

 

procedure Gauss(a:matrica;b:massiv;n:integer;

                 var x:massiv;var pr:byte);

function opredelitel(a:matrica; n:integer):real;

procedure obrmatrica (a:matrica; n:integer;

                  var h:matrica;var pr:byte);

 

implementation

 

procedure Gauss (a:matrica;b:massiv;n:integer;

                 var x:massiv;var pr:byte);

var i,j,k,r:integer;

max,m,c,s:real;

begin

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

for i:=1 to n do

  for j:=1 to n do  

for k:=1 to n do

begin

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

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

 for i:=k+1 to n do

  if abs(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];

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

     a[r,j]:=c;

   end;

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

 c:=b[k];

b[k]:=b[r];

b[r]:=c;

for i:=k+1 to n do

begin

   m:=a[i,k]/a[k,k];

   for j:=k to n do

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

   b[i]:=b[i]-m*b[k];

  end;

end;

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

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

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

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

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

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

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

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

  SetLength(x,n);

  x[n]:=b[n]/a[n,n];

  for i:=n downto 1 do

  begin

   s:=0;

   for j:=i+1 to n do

     s:=s+a[i,j]*x[j];

   x[i]:=(b[i]-s)/a[i,i];

   end;

  end;

 

 

function opredelitel (a:matrica; n:integer):real;

    var i,j,k,r:integer;

         max,m,c,det:real;

begin

det:=1;

 

for k:=1 to n do

begin

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

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

 for i:=k+1 to n do

  if abs(a[i,k])>max then

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

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

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

   end;

    if r<>k then det:=-det;

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

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

     c:=a[k,j];

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

     a[r,j]:=c;

     end;

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

     for i:=k+1 to n do

begin

   m:=a[i,k]/a[k,k];

   for j:=k to n do

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

  end;

end;

for i:=1 to n do

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

 

  opredelitel:=det;

end;

 

procedure obrmatrica (a:matrica; n:integer;

                  var h:matrica;var pr:byte);

var i,j:integer;

     pr1:byte;

     x,b:massiv;

begin

for i:=1 to n do

begin

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

   if i=j then

    b[j]:=1

     else b[j]:=0;

   Gauss(a,b,n,x,pr1); {Решение СЛАУ методом Гаусса}

   if pr1<>0 then

    begin

    pr:=1;

   exit;

   end

    else begin

     for j:=1 to n do {формирование обратной матрицы}

      h[j,i]:=x[j];

    pr:=0; end;

  end;

         

end;

 

end.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Информация о работе Решение системы алгебраических линейных уравнений методом Гаусса