Математические методы Метод Жардана-Гаусса

Автор работы: Пользователь скрыл имя, 18 Мая 2012 в 08:33, курсовая работа

Краткое описание

Метод Гаусса решения систем линейных уравнений состоит в последовательном исключении неизвестных и описывается следующей процедурой.
С помощью элементарных преобразований над строками и перестановкой столбцов расширенная матрица системы может быть приведена к виду

Содержание

Постановка задачи
Теоретическая часть
Методы решения примененные в программе
Метод Гаусса.
Метод Жордана-Гаусса.
Краткое описание среды визуальной разработки Delphi
Таблица основных обозначений программы.
Описание процедур и алгоритм роботы программы
Текст программы.
Файл-модуль unit1.pas
Файл-модуль unit2.pas
Файл проекта - Project1.dpr:
Результат работы программы.
Инструкция по работе с программой
Использованная Литература

Вложенные файлы: 1 файл

Курсовая Работа Математические методы Метод Жардана-Гаусса. Васильченко Иван. 3Тп.doc

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

            i,j,k,l,nv,irow,icol,n,l1:integer;

            determ,pivot,hold,sum,t,ab,big:real; 

     {++++++++++++++++++++++++++++++++++++++++++++}

      procedure swap(var a,b: real);

      var hold:real;

      begin

      hold:=a;

      a:=b;

      b:=hold

      end;

     {++++++++++++++++++++++++++++++++++++++++++++}

     {@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@}

      procedure gausj2;

      var i,j,k,l,l1:integer;

     {===============================================}

      procedure gausj3;

      var l:integer;

      begin

      if irow<>icol then

      begin

      determ:=-determ;

      for l:=1 to n do

      swap(b[irow,l],b[icol,l]);

      if nv>0 then

      for l:=1 to nv do

            swap(w[irow,l],w[icol,l])

      end

      end;

     {===============================================}

      begin

      error:=false;

      nv:=1;

      n:=ncol;

      for i:=1 to n do

      begin

      w[i,1]:=y[i];

      index[i,3]:=0

      end;

      determ:=1.0;

      for i:=1 to n do

      begin

      big:=0.0;

      for j:=1 to n do

      begin

      if index[j,3]<>1 then

            begin

            for k:=1 to n do

            begin

                  if index[k,3]>1 then

                  begin

                  error:=true;

                  exit;

      end;

      if index[k,3]<1 then

                  if abs(b[j,k])>big then

      begin

                  irow:=j;

                  icol:=k;

                  big:=abs(b[j,k])

                  end

            end

            end

      end; 

      index[icol,3]:=index[icol,3]+1;

      index[i,1]:=irow;

      index[i,2]:=icol;

      gausj3;

      pivot:=b[icol,icol];

      determ:=determ*pivot;

      b[icol,icol]:=1.0;

      for l:=1 to n do

      b[icol,l]:=b[icol,l]/pivot;

      if nv>0 then

      for l:=1 to nv do

      w[icol,l]:=w[icol,l]/pivot;

      for l1:=1 to n do

      begin

      if l1<>icol then

            begin

            t:=b[l1,icol];

            b[l1,icol]:=0.0;

            for l:=1 to n do

            b[l1,l]:=b[l1,l]-b[icol,l]*t;

            if nv>0 then

            for l:=1 to nv do

            w[l1,l]:=w[l1,l]-w[icol,l]*t;

      end

      end

      end;

      end;

     {@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@}

      begin

      gausj2;

      if error then exit;

      for i:=1 to n do

      begin

      l:=n-i+1;

      if index[l,1]<>index[l,2] then

            begin

            irow:=index[l,1];

            icol:=index[l,2];

            for k:=1 to n do

            swap(b[k,irow],b[k,icol])

      end

      end;

      for k:=1 to n do

      if index[k,3]<>1 then

      begin

      error:=true;

      exit;

      end;

      for i:=1 to n do

      coef[i]:=w[i,1];

      end;

     {**********************************************************}

     end.

     Файл проекта - Project1.dpr:

     program Project1; 

     uses

      Forms,

      Unit1 in 'Unit1.pas' {Form1},

      Unit2 in 'Unit2.pas'; 

     {$R *.res} 

     begin

      Application.Initialize;

      Application.Title := 'Gauss&J-Gauss';

      Application.CreateForm(TForm1, Form1);

      Application.Run;

     end.

 

      Результат работы программы

 

       

     Результаты  сохраненные в файле: 

      2 1 1 |2

      3 2 3 |6

      6 5 4 |5 

     Gauss

     X1=-7,4

     X2=1,2

     X3=2,2  

     J-Gauss

     X1=-7,4

     X2=1,2

                                   X3=2,2

     Инструкция по работе с программой

 
     
  1. Сразу после  запуска файла программы (pragramma.exe) перед вами появиться окно с запросом размера системы. Введите нужный размер и нажмите «ОК»(поскольку система размера n на n нужно ввести только одно число).
  2. После ввода размера перед вами появится рабочее окно программы. Введите в него данные по следующей схеме:
 

       

     
  1. Для решения  нужным методом нажмите соответствующую  кнопку, и в таблице возле нее будут выведены корни системы.
  2. Для сохранения результатов в меню «File» выберите «Save», перейдите в нужную папку и введите имя файла. Нажмите «ОК».
  3. Для начала новых рассчетов «File» выберите «New», введите новый размер системы, нажмите «ОК».
  4. Для выхода в меню «File» выберите пункт «Exit».

 

      Использованная  Литература.

 
  • Волков  Е.А. численные методы: Учебное пособие  для вузов. – 2-е изд., испр. – М.:Наука, 1987. – 248 с.
  • Роганин А.М. Основные формулы высшей математики. – Х.:Торсинг, 2002
  • Справочная система Borland Delphi 7.
  • http://delphi.vitpc.com/
  • http://www.fortunecity.com/campus/beverly/963/
  • http://www.delphi.agava.ru/
  • http://www.interface.ru/delphi/delphi_page.htm
  • http://pog.da.ru/

Информация о работе Математические методы Метод Жардана-Гаусса