Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Программа решения СЛАУ по методу ГауссаСтр 1 из 2Следующая ⇒
Введение
Метод Гаусса
Блок – схема метода Гаусса
Программа решения СЛАУ по методу Гаусса
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.
Решить систему уравнений:
Решение по программе:
|