Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Программа решения СЛАУ по методу Гаусса






Введение

Метод Гаусса

Блок – схема метода Гаусса

 

Программа решения СЛАУ по методу Гаусса

 

program GAUS;

 

uses crt;

var a: array [1..20, 1..21] of real;

x: array [1..20] of real;

r, aik: real;

n, i, j, k, l: integer;

 

begin

clrscr;

{--------------- Ввод и вывод исходных данных -----------------}

write(' Введи число неизвестных n='); readln(n);

for i: =1 to n do

for j: =1 to n+1 do

begin

write(' a(', i, ', ', j, ')=');

read (a[i, j]);

if j=n+1 then writeln;

end;

writeln(' Коэффициенты системы уравнений ');

for i: =1 to n do

for j: =1 to n+1 do

begin

if j=n+1 then writeln(' a(', i, ', ', j, ')=', a[i, j]: 8: 3)

else write(' a(', i, ', ', j, ')=', a[i, j]: 8: 3);

end;

 

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

for k: =1 to n-1 do

begin

for i: =k+1 to n do

for j: =k to n+1 do

begin

if j=k then aik: =a[i, k];

a[i, j]: = a[i, j] - (aik/a[k, k]) * a[k, j];

end;

end;

 

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

x[n]: =(a[n, n+1])/a[n, n];

writeln;

writeln(' Корни системы: ');

writeln(' x[', n, ']=', x[n]: 8: 3);

for k: =n-1 downto 1 do

begin

r: =0.0;

l: =k+1;

repeat

r: =r+a[k, l]*x[l];

l: =l+1

until l> n;

{------------ Корни системы---------}

x[k]: =(a[k, n+1]-r)/a[k, k];

writeln(' x[', k, ']=', x[k]: 8: 3);

end;

writeln;

readkey;

end.

Метод Гаусса с выбором главного элемента
(максимального по модулю элемента по столбцу)

 

program GausGlEl;

 

uses crt;

var a: array [1..20, 1..21] of real;

x: array [1..20] of real;

r, aik, max, y: real;

n, i, j, k, l, imax: integer;

 

begin

clrscr;

{--------------- Ввод и вывод исходных данных -----------------}

write(' Введи число неизвестных n='); readln(n);

for i: =1 to n do

for j: =1 to n+1 do

begin

write(' a(', i, ', ', j, ')=');

read (a[i, j]);

if j=n+1 then writeln;

end;

writeln(' Коэффициенты системы уравнений ');

for i: =1 to n do

for j: =1 to n+1 do

begin

if j=n+1 then writeln(' a(', i, ', ', j, ')=', a[i, j]: 8: 3)

else write(' a(', i, ', ', j, ')=', a[i, j]: 8: 3);

end;

readkey;

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

for k: =1 to n-1 do

{--- Поиск МАХ (главного) элемента и перестановка уравнений ---}

begin

max: =abs(a[k, k]); imax: =k;

for i: =k+1 to n do

begin

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

begin

max: = abs(a[i, k]);

imax: = i;

end;

end;

for j: =k to n+1 do

begin

y: =a[k, j];

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

{write(' a(imax=', imax, ', ', j, ')=', a[imax, j]: 8: 3); }

a[imax, j]: =y;

end;

{--------------------------------------------------------------}

readkey;

writeln('Шаг прямого хода К=', k);

writeln(' Коэффициенты системы после перестановки уравнений');

for i: =1 to n do

for j: =1 to n+1 do

begin

if j=n+1 then writeln(' a(', i, ', ', j, ')=', a[i, j]: 8: 3)

else write(' a(', i, ', ', j, ')=', a[i, j]: 8: 3);

end;

 

for i: =k+1 to n do

for j: =k to n+1 do

begin

if j=k then aik: =a[i, k];

a[i, j]: = a[i, j] - (aik/a[k, k]) * a[k, j];

end;

writeln(' К-ты системы после ', k, '-го шага преобразования');

for i: =1 to n do

for j: =1 to n+1 do

begin

if j=n+1 then writeln(' a(', i, ', ', j, ')=', a[i, j]: 8: 3)

else write(' a(', i, ', ', j, ')=', a[i, j]: 8: 3);

end;

end;

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

x[n]: =(a[n, n+1])/a[n, n];

writeln;

writeln(' Корни системы: ');

writeln(' x[', n, ']=', x[n]: 8: 3);

for k: =n-1 downto 1 do

begin

r: =0.0;

l: =k+1;

repeat

r: =r+a[k, l]*x[l];

l: =l+1

until l> n;

{------------ Корни системы---------}

x[k]: =(a[k, n+1]-r)/a[k, k];

writeln(' x[', k, ']=', x[k]: 8: 3);

end;

writeln;

readkey;

end.

 

Решить систему уравнений:

Решение по программе:


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.014 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал