Розробка програмного забезпечення для розв'язку СЛАР методом Гауса

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

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

нь. До лінійних систем зводяться також задачі статистики, економіки тощо.

Системи лінійних алгебраїчних рівнянь розвязують точними (прямими) й наближеними методами.

Серед точних методів найвідомішим та найефективнішим є метод Гаусса, чи метод послідовного вилучення невідомих. Цей алгоритм був знаний ще в давнину, принаймні в III ст. до н. е.

Метод Гаусса розвязування систем лінійних рівнянь з числовими коефіцієнтами завдяки простоті і однотипності виконуваних операцій придатний для використання на електронно-обчислювальних машинах. Істотним недоліком цього методу є неможливість сформулювати умови сумісності і визначеності системи залежно від значень коефіцієнтів і вільних членів. З іншого боку, навіть для визначеної системи цей метод не дає змоги знайти загальні формули, що визначають розвязки системи через її коефіцієнти і вільні члени, які необхідно мати для теоретичних досліджень. Існують й інші методи розвязування і дослідження систем лінійних рівнянь, які не мають зазначених недоліків. Ці методи ґрунтуються на теорії матриць і визначників.

Корені лінійних систем алгебраїчних рівнянь за методом Гаусса на сучасних ЕОМ обчислюють за спеціальними стандартними програмами. Такі програми записують різними мовами програмування.

В даному курсовому проекті розроблено та описано програму отримання результатів розвязку системи алгебраїчних рівнянь методом Гаусса мовою програмування Turbo Pascal. Програма відсаджена з використанням набору текстових даних. Контрольний приклад розроблений вручну для перевірки роботоздатності програми. Він повністю співпав з результатом машинного експерименту. Тому дану програму можна використовувати на практиці.

Запуск програми здійснюється з головного меню інтегрованого середовища Turbo Pascal ( шляхом вибору опції RUN). Попередньо програма повинна бути завантажена в оперативну память. Можна було б відкомпілювати дану програму з опцією Destination to Memory для запуску exe файла. Тож можна зробити висновки про можливість вдосконалення цієї програми.

 

Список використаної літератури

 

  1. „Інформатика. Компютерна техніка. Компютерні технології”/ Підручник. За редакцією О.І. Пушкаря. Київ. Видавничий центр „Академія”, (Навчальне видання. Серія „Альма-матер”. Заснована в 1999 році.) 2002. 703с.
  2. О.Г. Ципкін „Довідник з математики для середніх навчальних закладів” / За редакцією С.О. Степанова. К.: Вища школа. Головне вид-во, 1988. 416с.
  3. В.Я. Сердюченко „Розробка алгоритмів та програмування мовою Turbo Pascal”.

 

Додатки

 

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

 

 

(******************************)

* Програма розвязку *

* системи лінійних рівнянь *

* методом Гауса *

(******************************)

 

{01} program kyrsova;

{02} uses crt;

{03} type

{04} mas1=array[1..50,1..51] of real;

{05} mas2=array[1..50] of real;

{06} var

{07} a:mas1;

{08} x:mas2;

{09} b,c,d,r:real;

{10} i,j,n,k,m:integer;

 

(* Процедура вводу коефіцієнтів і вільних членів *)

 

{11} procedure vvid(var n:integer; var a:mas1);

{12} begin

{13} write(введіть кількість рівнянь n=);

{14} readln(n);

{15} writeln(Введіть коефіцієнти і вільні члени);

{16} for i:=1 to n do

{17} for j:=1 to n+1 do

{18} begin

{19} write(a,i,,,j,=);

{20} readln(a[i,j]);

{21} end;

{22} end;

(* Процедура зміни рівнянь місцями *)

 

{23} procedure mriv(var a:mas1);

{24} begin

{25} if a[k,k]=0 then

{26} for m:=1 to n do

{27} begin

{28} for i:=k to k do

{29} for j:=k to n+1 do

{30} begin

{31} r:=a[i,j];

{32} a[i,j]:=a[i+1,j];

{33} a[i+1,j]:=r

{34} end;

{35} end;

{36} end;

 

(*Процедура ділення рівняння на провідний коефіцієнт *)

 

{37} procedure dil(var a:mas1);

{38} begin

{39} b:=a[k,k];

{40} for i:=k to k do

{41} for j:=k to n+1 do

{42} a[i,j]:=a[i,j]/b;

{43} end;

 

(* Процедура обчислення нових коефіцієнтів *)

 

{44} procedure nkoef(var a:mas1);

{45} begin

{46} for i:=k+1 to n do begin

{47} c:=a[i,k];

{48} for j:=k to n+1 do

{49} a[i,j]:=a[i,j]-a[k,j]*c;

{50} end;

{51} end;

 

(* Процедура обчислення коренів рівняння *)

 

{52} procedure nevid(var x:mas2);

{53} begin

{54} x[n]:=a[n,n+1]/a[n,n];

{55} for k:=n-1 downto 1 do begin

{56} d:=0;

{57} for i:=k to k do

{58} for j:=k+1 to n do

{59} d:=d+a[k,j]*x[j];

{60} x[k]:=a[k,n+1]-d;

 

{61} end;

{62} end;

 

(* Процедура виводу результатів *)

 

{63} procedure rezult;

{64} begin

{65} writeln(Розвязки рівняння);

{66} for i:=1 to n do

{67} writeln(x,i,=,x[i]:8:2);

{68} end;

 

(* Головна програма *)

 

{69} begin

{70} clrscr;

{71} vvid(n,a);

{72} for k:=1 to n-1 do begin

{73} mriv(a);

{74} dil(a);

{75} nkoef(a);

{76} end;

{77} nevid(x);

{78} rezult;

{79} end.

 

 

 

 

 

Размещено на