ВУЗ:
Составители:
Глава 4. Метод квадратичного решета 136
только тривиальные решения:
Н.О.Д. (n, A + B) = n, Н.О.Д. (n, A − B) = 1
Программа решения системы методом Гаусса
Приведем текст программы на языке Pascal для описанного выше алгоритма
(исходные параметры mt, nt – число строк и столбцов соответственно).
Матрица A – матрица системы размерности mt×nt, а Е – единичная матрица
размерности mt × nt. Массив OrdRow[1..mt] нумерует строки системы.
Исходные значения его элементов равны OrdRow[i] = i для 1 ≤ i ≤ mt.
При необходимости перестановки строк с целью вывода на позицию A[k, k]
ненулевого элемента, мы просто меняем ссылки на строки в массиве OrdRow:
Procedure Gauss(mt,nt:int64;var A,E:SysMatr);
var
i,j,k,c:integer;
Begin
k:=1; { k enumerates rows of matrix }
While k<=mt do
begin
j:=k;
{Search for a non-zero element in the column k:}
while (A[OrdRow[j], k] = 0) And (j <= mt) do inc(j);
if j > mt then { Case when all elements below A[k,k] are 0 }
begin
inc(k); continue;
end;
If j > k then { Case A[k,j]>0.Exchange k and j rows }
begin
c := OrdRow[j]; OrdRow[j]:=OrdRow[k];OrdRow[k]:=c;
end;
i:=k;
Глава 4. Метод квадратичного решета 136 только тривиальные решения: Н.О.Д. (n, A + B) = n, Н.О.Д. (n, A − B) = 1 Программа решения системы методом Гаусса Приведем текст программы на языке Pascal для описанного выше алгоритма (исходные параметры mt, nt – число строк и столбцов соответственно). Матрица A – матрица системы размерности mt×nt, а Е – единичная матрица размерности mt × nt. Массив OrdRow[1..mt] нумерует строки системы. Исходные значения его элементов равны OrdRow[i] = i для 1 ≤ i ≤ mt. При необходимости перестановки строк с целью вывода на позицию A[k, k] ненулевого элемента, мы просто меняем ссылки на строки в массиве OrdRow : Procedure Gauss(mt,nt:int64;var A,E:SysMatr); var i,j,k,c:integer; Begin k:=1; { k enumerates rows of matrix } While k<=mt do begin j:=k; {Search for a non-zero element in the column k:} while (A[OrdRow[j], k] = 0) And (j <= mt) do inc(j); if j > mt then { Case when all elements below A[k,k] are 0 } begin inc(k); continue; end; If j > k then { Case A[k,j]>0.Exchange k and j rows } begin c := OrdRow[j]; OrdRow[j]:=OrdRow[k];OrdRow[k]:=c; end; i:=k;
Страницы
- « первая
- ‹ предыдущая
- …
- 133
- 134
- 135
- 136
- 137
- …
- следующая ›
- последняя »