const nmax=10;
var n:integer;
type
Tmass=array[1..nmax] of real;
Tmatrix=array[1..nmax,1..nmax] of real;
{перестановка строк при главном элементе=0}
procedure Per(k:integer;var a:Tmatrix;var p:integer);
var z:Real;
j,i:integer;
begin
z:=abs(a[k,k]);{модуль главного элемента}
i:=k;{номер строки}
p:=0;{количество перестановок}
for j:=k+1 to n do {ищем в столбце ниже}
begin
if abs(a[j,k])>z then {элемент по модулю больше}
begin
z:=abs(a[j,k]);
i:=j;
p:=p+1;//счетчик перестановок
end;
end;
if i>k then{если нашли}
for j:=k to n do
begin
z:=a[i,j];
a[i,j]:=a[k,j];{обмениваем строки}
a[k,j]:=z;
end;
end;
{определение знака определителя}
function Znak(p:integer):integer;
begin
if p mod 2=0 then
Znak:=1 else Znak:=-1;
end;
{вычисление определителя матрицы коэффициентов по Гауссу}
procedure Opr(var det:real;var a:tmatrix);
var k,i,j,p:integer;r:real;
begin
det:=1.0;
for k:=1 to n do
begin
if a[k,k]=0 then Per(k,a,p);//перестановка строк
det:=znak(p)*det*a[k,k];//вычисление определителя
for j:=k+1 to n do //пересчет коэффициентов
begin
r:=a[j,k]/a[k,k];
for i:=k to n do
a[j,i]:=a[j,i]-r*a[k,i];
end;
end;
end;
{вычисление алгебраических дополнений}
procedure Dop(d:tmatrix;var det1:real);
var k,i,j,p:integer;r:real;
begin
det1:=1.0;
for k:=2 to n do
begin
Per(k,d,p);
det1:=znak(p)*det1*d[k,k];
for j:=k+1 to n do
begin
r:=d[j,k]/d[k,k];
for i:=k to n do
d[j,i]:=(d[j,i]-r*d[k,i]);
end;
end;
end;
{установление знака алгебраических дополнений}
function Znak1(i,m:integer):integer;
begin
if (i+m) mod 2=0 then
Znak1:=1 else Znak1:=-1;
end;
{формирование присоединенной матрицы}
Procedure Peresch(b:Tmatrix;var e:Tmatrix );
var i,m,k,j:integer;z,det1:real;d,c:Tmatrix;
begin
for i:=1 to n do
begin
for m:=1 to n do
begin
for j:=1 to n do {перестановка строки}
begin
z:=b[i,j];
for k:=i downto 2 do
d[k,j]:=b[k-1,j];
for k:=i+1 to n do
d[k,j]:=b[k,j];
d[1,j]:=z;
end;
for k:=1 to n do {перестановка столбца}
begin
z:=d[k,m];
for j:=m downto 2 do
c[k,j]:=d[k,j-1];
for j:=m+1 to n do
c[k,j]:=d[k,j];
c[k,1]:=z;
end;
Dop(c,det1); {вычисление дополнений}
e[i,m]:=(det1)*znak1(i,m); {установление знака дополнений и }
end; {формирование присоединенной матрицы }
end;
end;
{транспонирование матрицы}
Procedure Trans(b:Tmatrix;var e:Tmatrix);
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to n do
e[i,j]:=b[j,i];
end;
{нахождение корней умножением обратной матрицы на столбец свободных членов}
Procedure Resh(n:integer;a:Tmatrix;b:Tmass;var x:Tmass);
var k,j:integer;z:real;
begin
for k:=1 to n do
begin
x[k]:=0;
for j:=1 to n do
begin
z:=a[k,j]*b[j];
x[k]:=x[k]+z;
end;
end;
end;
var a,a1,at,b,c:Tmatrix;
f,x:Tmass;
det:Real;
i,j:integer;
begin
{решение системы}
repeat
write('Порядок системы до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Введите коэффициенты системы:');
for i:=1 to n do
for j:=1 to n do
begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
writeln('Введите свободнык члены:');
for i:=1 to n do
begin
write('f[',i,']=');
readln(f[i]);
end;
writeln('Исходная система:');
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:5:1);
writeln(f[i]:7:1);
end;
writeln;
a1:=a;{сделаем копию матрицы для нахождения определителя, она изменится}
Opr(det,a1);{вычисление определителя матрицы}
writeln('Определитель=',det:0:0);
if det=0 then
begin
write('Решений не существует');
readln;
exit;
end;
Peresch(a,b); { вычисление присоединенной матрицы}
Trans(b,c);{транспонирование присоединенной матрицы}
for i:=1 to n do
for j:=1 to n do
c[i,j]:=c[i,j]/det;{деление на определитель=обратная матрица}
{нахождение корней}
Resh(n,c,f,x);
for i:=1 to n do
writeln('x[',i,']=',x[i]:0:1);
readln;
end.
Y29uc3Qgbm1heD0xMDsKdmFyIG46aW50ZWdlcjsKdHlwZQogVG1hc3M9YXJyYXlbMS4ubm1heF0gb2YgcmVhbDsKIFRtYXRyaXg9YXJyYXlbMS4ubm1heCwxLi5ubWF4XSBvZiByZWFsOwp70L/QtdGA0LXRgdGC0LDQvdC+0LLQutCwINGB0YLRgNC+0Log0L/RgNC4INCz0LvQsNCy0L3QvtC8INGN0LvQtdC80LXQvdGC0LU9MH0KcHJvY2VkdXJlIFBlcihrOmludGVnZXI7dmFyIGE6VG1hdHJpeDt2YXIgcDppbnRlZ2VyKTsKdmFyIHo6UmVhbDsKICAgIGosaTppbnRlZ2VyOwpiZWdpbgogejo9YWJzKGFbayxrXSk7e9C80L7QtNGD0LvRjCDQs9C70LDQstC90L7Qs9C+INGN0LvQtdC80LXQvdGC0LB9CiBpOj1rO3vQvdC+0LzQtdGAINGB0YLRgNC+0LrQuH0KIHA6PTA7e9C60L7Qu9C40YfQtdGB0YLQstC+INC/0LXRgNC10YHRgtCw0L3QvtCy0L7Qun0KIGZvciBqOj1rKzEgdG8gbiBkbyB70LjRidC10Lwg0LIg0YHRgtC+0LvQsdGG0LUg0L3QuNC20LV9CiAgYmVnaW4KICAgaWYgYWJzKGFbaixrXSk+eiB0aGVuIHvRjdC70LXQvNC10L3RgiDQv9C+INC80L7QtNGD0LvRjiDQsdC+0LvRjNGI0LV9CiAgICBiZWdpbgogICAgIHo6PWFicyhhW2osa10pOwogICAgIGk6PWo7CiAgICAgcDo9cCsxOy8v0YHRh9C10YLRh9C40Log0L/QtdGA0LXRgdGC0LDQvdC+0LLQvtC6CiAgICBlbmQ7CiAgZW5kOwppZiBpPmsgdGhlbnvQtdGB0LvQuCDQvdCw0YjQu9C4fQpmb3Igajo9ayB0byBuIGRvCiBiZWdpbgogIHo6PWFbaSxqXTsKICBhW2ksal06PWFbayxqXTt70L7QsdC80LXQvdC40LLQsNC10Lwg0YHRgtGA0L7QutC4fQogIGFbayxqXTo9ejsKIGVuZDsKZW5kOwp70L7Qv9GA0LXQtNC10LvQtdC90LjQtSDQt9C90LDQutCwINC+0L/RgNC10LTQtdC70LjRgtC10LvRj30KZnVuY3Rpb24gWm5hayhwOmludGVnZXIpOmludGVnZXI7CmJlZ2luCmlmIHAgbW9kIDI9MCB0aGVuClpuYWs6PTEgZWxzZSBabmFrOj0tMTsKZW5kOwp70LLRi9GH0LjRgdC70LXQvdC40LUg0L7Qv9GA0LXQtNC10LvQuNGC0LXQu9GPINC80LDRgtGA0LjRhtGLINC60L7RjdGE0YTQuNGG0LjQtdC90YLQvtCyINC/0L4g0JPQsNGD0YHRgdGDfQpwcm9jZWR1cmUgT3ByKHZhciBkZXQ6cmVhbDt2YXIgYTp0bWF0cml4KTsKdmFyIGssaSxqLHA6aW50ZWdlcjtyOnJlYWw7CmJlZ2luCmRldDo9MS4wOwpmb3Igazo9MSB0byBuIGRvCiBiZWdpbgogIGlmIGFbayxrXT0wIHRoZW4gUGVyKGssYSxwKTsvL9C/0LXRgNC10YHRgtCw0L3QvtCy0LrQsCDRgdGC0YDQvtC6CiAgZGV0Oj16bmFrKHApKmRldCphW2ssa107Ly/QstGL0YfQuNGB0LvQtdC90LjQtSDQvtC/0YDQtdC00LXQu9C40YLQtdC70Y8KICBmb3Igajo9aysxIHRvIG4gZG8gLy/Qv9C10YDQtdGB0YfQtdGCINC60L7RjdGE0YTQuNGG0LjQtdC90YLQvtCyCiAgIGJlZ2luCiAgICByOj1hW2osa10vYVtrLGtdOwogICAgZm9yIGk6PWsgdG8gbiBkbwogICAgYVtqLGldOj1hW2osaV0tciphW2ssaV07CiAgIGVuZDsKIGVuZDsKZW5kOwp70LLRi9GH0LjRgdC70LXQvdC40LUg0LDQu9Cz0LXQsdGA0LDQuNGH0LXRgdC60LjRhSDQtNC+0L/QvtC70L3QtdC90LjQuX0KcHJvY2VkdXJlIERvcChkOnRtYXRyaXg7dmFyIGRldDE6cmVhbCk7CnZhciBrLGksaixwOmludGVnZXI7cjpyZWFsOwpiZWdpbgpkZXQxOj0xLjA7CmZvciBrOj0yIHRvIG4gZG8KIGJlZ2luCiAgUGVyKGssZCxwKTsKICBkZXQxOj16bmFrKHApKmRldDEqZFtrLGtdOwogIGZvciBqOj1rKzEgdG8gbiBkbwogICBiZWdpbgogICAgcjo9ZFtqLGtdL2RbayxrXTsKICAgIGZvciBpOj1rIHRvIG4gZG8KICAgIGRbaixpXTo9KGRbaixpXS1yKmRbayxpXSk7CiAgIGVuZDsKIGVuZDsKZW5kOwp70YPRgdGC0LDQvdC+0LLQu9C10L3QuNC1INC30L3QsNC60LAg0LDQu9Cz0LXQsdGA0LDQuNGH0LXRgdC60LjRhSDQtNC+0L/QvtC70L3QtdC90LjQuX0KZnVuY3Rpb24gWm5hazEoaSxtOmludGVnZXIpOmludGVnZXI7CmJlZ2luCmlmIChpK20pIG1vZCAyPTAgdGhlbgpabmFrMTo9MSBlbHNlIFpuYWsxOj0tMTsKZW5kOwp70YTQvtGA0LzQuNGA0L7QstCw0L3QuNC1INC/0YDQuNGB0L7QtdC00LjQvdC10L3QvdC+0Lkg0LzQsNGC0YDQuNGG0Yt9ClByb2NlZHVyZSBQZXJlc2NoKGI6VG1hdHJpeDt2YXIgZTpUbWF0cml4ICk7CnZhciBpLG0sayxqOmludGVnZXI7eixkZXQxOnJlYWw7ZCxjOlRtYXRyaXg7CmJlZ2luCmZvciBpOj0xIHRvIG4gZG8KIGJlZ2luCiAgZm9yIG06PTEgdG8gbiBkbwogICBiZWdpbgogICAgZm9yIGo6PTEgdG8gbiBkbyAge9C/0LXRgNC10YHRgtCw0L3QvtCy0LrQsCDRgdGC0YDQvtC60Lh9CiAgICAgYmVnaW4KICAgICAgejo9YltpLGpdOwogICAgICBmb3Igazo9aSBkb3dudG8gMiBkbwogICAgICBkW2ssal06PWJbay0xLGpdOwogICAgICBmb3Igazo9aSsxIHRvIG4gZG8KICAgICAgZFtrLGpdOj1iW2ssal07CiAgICAgIGRbMSxqXTo9ejsKICAgICBlbmQ7CiAgICBmb3Igazo9MSB0byBuIGRvICB70L/QtdGA0LXRgdGC0LDQvdC+0LLQutCwINGB0YLQvtC70LHRhtCwfQogICAgIGJlZ2luCiAgICAgIHo6PWRbayxtXTsKICAgICAgZm9yIGo6PW0gZG93bnRvIDIgZG8KICAgICAgY1trLGpdOj1kW2ssai0xXTsKICAgICAgZm9yIGo6PW0rMSB0byBuIGRvCiAgICAgIGNbayxqXTo9ZFtrLGpdOwogICAgICBjW2ssMV06PXo7CiAgICAgZW5kOwogICAgRG9wKGMsZGV0MSk7IHvQstGL0YfQuNGB0LvQtdC90LjQtSDQtNC+0L/QvtC70L3QtdC90LjQuX0KICAgIGVbaSxtXTo9KGRldDEpKnpuYWsxKGksbSk7IHvRg9GB0YLQsNC90L7QstC70LXQvdC40LUg0LfQvdCw0LrQsCDQtNC+0L/QvtC70L3QtdC90LjQuSDQuCB9CiAgIGVuZDsgICAgICAgICAgICAgICAgICAgICAgIHvRhNC+0YDQvNC40YDQvtCy0LDQvdC40LUg0L/RgNC40YHQvtC10LTQuNC90LXQvdC90L7QuSDQvNCw0YLRgNC40YbRiyB9CiBlbmQ7CmVuZDsKIAp70YLRgNCw0L3RgdC/0L7QvdC40YDQvtCy0LDQvdC40LUg0LzQsNGC0YDQuNGG0Yt9ClByb2NlZHVyZSBUcmFucyhiOlRtYXRyaXg7dmFyIGU6VG1hdHJpeCk7CnZhciBpLGo6aW50ZWdlcjsKYmVnaW4KZm9yIGk6PTEgdG8gbiBkbwpmb3Igajo9MSB0byBuIGRvCmVbaSxqXTo9YltqLGldOwplbmQ7CiAKe9C90LDRhdC+0LbQtNC10L3QuNC1INC60L7RgNC90LXQuSDRg9C80L3QvtC20LXQvdC40LXQvCDQvtCx0YDQsNGC0L3QvtC5INC80LDRgtGA0LjRhtGLINC90LAg0YHRgtC+0LvQsdC10YYg0YHQstC+0LHQvtC00L3Ri9GFINGH0LvQtdC90L7Qsn0KUHJvY2VkdXJlIFJlc2gobjppbnRlZ2VyO2E6VG1hdHJpeDtiOlRtYXNzO3ZhciB4OlRtYXNzKTsKdmFyIGssajppbnRlZ2VyO3o6cmVhbDsKYmVnaW4KZm9yIGs6PTEgdG8gbiBkbwogYmVnaW4KICB4W2tdOj0wOwogIGZvciBqOj0xIHRvIG4gZG8KICAgYmVnaW4KICAgIHo6PWFbayxqXSpiW2pdOwogICAgeFtrXTo9eFtrXSt6OwogICBlbmQ7CiBlbmQ7CmVuZDsKdmFyIGEsYTEsYXQsYixjOlRtYXRyaXg7CiAgICBmLHg6VG1hc3M7CiAgICBkZXQ6UmVhbDsKICAgIGksajppbnRlZ2VyOwpiZWdpbgp70YDQtdGI0LXQvdC40LUg0YHQuNGB0YLQtdC80Yt9CnJlcGVhdAp3cml0ZSgn0J/QvtGA0Y/QtNC+0Log0YHQuNGB0YLQtdC80YsgINC00L4gJyxubWF4LCcgbj0nKTsKcmVhZGxuKG4pOwp1bnRpbCBuIGluIFsxLi5ubWF4XTsKd3JpdGVsbign0JLQstC10LTQuNGC0LUg0LrQvtGN0YTRhNC40YbQuNC10L3RgtGLINGB0LjRgdGC0LXQvNGLOicpOwpmb3IgaTo9MSB0byBuIGRvCmZvciBqOj0xIHRvIG4gZG8KIGJlZ2luCiAgd3JpdGUoJ2FbJyxpLCcsJyxqLCddPScpOwogIHJlYWRsbihhW2ksal0pOwogZW5kOwp3cml0ZWxuKCfQktCy0LXQtNC40YLQtSDRgdCy0L7QsdC+0LTQvdGL0Log0YfQu9C10L3RizonKTsKZm9yIGk6PTEgdG8gbiBkbwogYmVnaW4KICB3cml0ZSgnZlsnLGksJ109Jyk7CiAgcmVhZGxuKGZbaV0pOwogZW5kOwp3cml0ZWxuKCfQmNGB0YXQvtC00L3QsNGPINGB0LjRgdGC0LXQvNCwOicpOwpmb3IgaTo9MSB0byBuIGRvCiBiZWdpbgogIGZvciBqOj0xIHRvIG4gZG8KICB3cml0ZShhW2ksal06NToxKTsKICB3cml0ZWxuKGZbaV06NzoxKTsKIGVuZDsKd3JpdGVsbjsKYTE6PWE7e9GB0LTQtdC70LDQtdC8INC60L7Qv9C40Y4g0LzQsNGC0YDQuNGG0Ysg0LTQu9GPINC90LDRhdC+0LbQtNC10L3QuNGPINC+0L/RgNC10LTQtdC70LjRgtC10LvRjywg0L7QvdCwINC40LfQvNC10L3QuNGC0YHRj30KT3ByKGRldCxhMSk7e9Cy0YvRh9C40YHQu9C10L3QuNC1INC+0L/RgNC10LTQtdC70LjRgtC10LvRjyAg0LzQsNGC0YDQuNGG0Yt9CndyaXRlbG4oJ9Ce0L/RgNC10LTQtdC70LjRgtC10LvRjD0nLGRldDowOjApOwppZiBkZXQ9MCB0aGVuCiBiZWdpbgogIHdyaXRlKCfQoNC10YjQtdC90LjQuSDQvdC1INGB0YPRidC10YHRgtCy0YPQtdGCJyk7CiAgcmVhZGxuOwogIGV4aXQ7CiBlbmQ7ClBlcmVzY2goYSxiKTsgeyDQstGL0YfQuNGB0LvQtdC90LjQtSDQv9GA0LjRgdC+0LXQtNC40L3QtdC90L3QvtC5INC80LDRgtGA0LjRhtGLfQpUcmFucyhiLGMpO3vRgtGA0LDQvdGB0L/QvtC90LjRgNC+0LLQsNC90LjQtSDQv9GA0LjRgdC+0LXQtNC40L3QtdC90L3QvtC5INC80LDRgtGA0LjRhtGLfQpmb3IgaTo9MSB0byBuIGRvCmZvciBqOj0xIHRvIG4gZG8KY1tpLGpdOj1jW2ksal0vZGV0O3vQtNC10LvQtdC90LjQtSDQvdCwINC+0L/RgNC10LTQtdC70LjRgtC10LvRjD3QvtCx0YDQsNGC0L3QsNGPINC80LDRgtGA0LjRhtCwfQp70L3QsNGF0L7QttC00LXQvdC40LUg0LrQvtGA0L3QtdC5fQpSZXNoKG4sYyxmLHgpOwpmb3IgaTo9MSB0byBuIGRvCndyaXRlbG4oJ3hbJyxpLCddPScseFtpXTowOjEpOwpyZWFkbG47CmVuZC4=