Имеем:
;
;
;
;
.
Переходим к заполнению второго столбца раздела II, начиная со второй строки. Пользуясь формулами, определяем :
;
;
.
Далее определяя по формулам, заполняем вторую сетку для раздела II:
Затем переходим к третьему столбцу, вычисляя его элементы и по формулам и т.д., пока не будет заполнена вся таблица раздела II. Таким образом, заполнение раздела II происходит способом “елочки”: столбец - строка, столбец - строка и т.д.
В разделе Ш, пользуясь формулами, определяем и .
Текущий контроль осуществляется с помощью столбца ∑, над которым производятся те же действия, что и над столбцом свободных членов.
I | 3 | 1 | -1 | 2 | 6 | 11 | ||||||
I | -5 | 1 | 3 | -4 | -12 | -17 | ||||||
I | 2 | 0 | 1 | -1 | 1 | 3 | ||||||
I | 1 | -5 | 3 | -3 | 3 | -1 | ||||||
II | │1 | 3│1 | 0.333333 | -0.333333 | 0.666667 | 2 | 3.666667 | |||||
II | │1 | -5 | 2.666667│1 | 0.5 | -0.25 | -0.75 | 0.5 | |||||
II | │1 | 2 | -0.666667 | 2│1 | -1.25 | -1.75 | -2 | |||||
II | │1 | 1 | -5.333333 | 6 | 2.5│1 | 3 | 4 | |||||
III | 2 | 1 | ||||||||||
III | -0.75 | -1 | ||||||||||
III | y3 | -1.75 | 2 | |||||||||
III | y4 | 3 | 3 |
3. Практическая реализация метода Халецкого
program kursovaya;
uses crt;
const sizemat=10;
type mattype=array[1..sizemat,1..sizemat] of double;
mattype1=array[1..sizemat] of double;
{Процедура для вывода матрицы на экран}
procedure writemat (var a:mattype; n,m:byte);
var i,j:byte;
begin
writeln;
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j]:7:3,' ');
writeln
end;
end;
{Процедура для ввода значений элементов матрицы}
procedure inputmat (var a:mattype;var d:mattype1; var n:byte);
var i,j:byte;
begin
writeln;
write ('Введите размер матрицы = ');
readln(n);
writeln;
writeln('Введите матрицу:');
writeln;
for i:=1 to n do
for j:=1 to n do
read (a[i,j]);
writeln;
writeln('Введите свободные коэффициенты:');
writeln;
for i:=1 to n do
readln(d[i]);
writeln;
end;
{Процедура получения двух треугольных матриц, произведение которых равно исходной матрице}
procedure getBnC(var a,b,c:mattype; n:byte);
var k,i,a1,j:byte;
begin
for k:=1 to n do
for i:=1 to n do
begin
if k=i then c[k,i]:=1
else c[k,i]:=0;