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