РЕШЕНИЕ СИСТЕМЫ УРАВНЕНИЙ В КОМПЛЕКСНЫХ ЧИСЛАХ НА ПЭВМ
Часто исследование той или иной проблемы сводится к решению системы линейных уравнений в действительных или комплексных числах. Например, расчет цепи постоянного тока, состоящей из нескольких независимых контуров, требует получения из законов Кирхгофа системы линейных уравнений и ее последующее решение. Изучение трехфазных цепей предполагает нахождение комплексных значений токов, что требует решения системы уравнений в комплексных числах. Это легко сделать, например, с помощью пакета MathCAD. В то же время можно предложить студентам написать на языке Pascal свою программу для ее решения.


uses crt; const n=4; {ПРОГРАММА НА ЯЗЫКЕ PASCAL}
type komplex =record Re: real; Im: real; end;
var S,R,P,D,U,Z,C : komplex; i,ii,j,k: integer; M : real;
aa,a: array[1..N, 1..N+1] of komplex;
x,bb,b: array[1..N] of komplex;
Procedure Sum(Z1, Z2: komplex);
begin S.Re:=Z1.Re+Z2.Re; S.Im:=Z1.Im+Z2.Im; end;
Procedure Razn(Z1, Z2: komplex);
begin R.Re:=Z1.Re-Z2.Re; R.Im:=Z1.Im-Z2.Im; end;
Procedure Proizv(Z1, Z2: komplex);
begin P.Re:=Z1.Re*Z2.Re-Z1.Im*Z2.Im;
P.Im:=Z1.Re*Z2.Im+Z2.Re*Z1.Im; end;
Procedure Delen(Z1, Z2: komplex);
begin D.Re:=(Z1.Re*Z2.Re+Z1.Im*Z2.Im)/(Z2.Re*Z2.Re+Z2.Im*Z2.Im);
D.Im:=(Z1.Im*Z2.Re-Z1.Re*Z2.Im)/(Z2.Re*Z2.Re+Z2.Im*Z2.Im); end;
Procedure Modul(Z1: komplex);
begin M:=sqrt(Z1.Re*Z1.Re+Z1.Im*Z1.Im); end;
BEGIN clrscr; a[1,1].Re:=-1;a[1,2].Re:=1; a[1,3].Re:=1;
.............................................................
a[4,2].Im:=0; a[4,3].Im:=0; a[4,4].Im:=80; a[4,5].Im:=+110*1.73;
for i:=1 to N do for j:=1 to N+1 do aa[i,j]:=a[i,j];
for i:=2 to N do for j:=1 to N+1 do begin
Sum(a[i,j],a[1,j]); a[i,j]:=S; end;
for i:=3 to N do for j:=1 to N+1 do begin
Sum(a[i,j],a[2,j]); a[i,j]:=S; end;
for i:=4 to N do for j:=1 to N+1 do begin
Sum(a[i,j],a[3,j]); a[i,j]:=S; end;
for k:=1 to N do begin for i:=k to N do for j:=1 to N+1 do begin
Delen(a[i,N+2-j],a[i,k]); a[i,N+2-j]:=D; end;
for i:=k+1 to N do for j:=1 to N+1 do begin
Razn(a[i,j],a[k,j]); a[i,j]:=R; end; end;
for i:=1 to N do begin for j:=1 to N+1 do
write(a[i,j].Re:2:3, ' '); writeln; end; writeln;
for i:=1 to N do begin for j:=1 to N+1 do
write(a[i,j].Im:2:3, ' '); writeln; end; writeln;
for ii:=1 to N do begin
i:=N-ii+1; x[i].Re:=-a[i,N+1].Re; x[i].Im:=-a[i,N+1].Im;
for j:=i+1 to N do begin
Proizv(a[i,j],x[j]); Razn(x[i],P); x[i]:=R; end; end;
writeln(' ОТВЕТ '); for i:=1 to N do begin Modul(x[i]);
writeln('x[',i,']= ',x[i].Re,' ',x[i].Im, M); end;
writeln(' ПРОВЕРКА '); for i:=1 to N do begin
Proizv(aa[i,1],x[1]); C:=P; Proizv(aa[i,2],x[2]); Sum(P,C);
C:=S; Proizv(aa[i,3],x[3]); Sum(P,C); C:=S; Proizv(aa[i,4],x[4]);
Sum(P,C); C:=S; Sum(aa[i,5],C); writeln(S.Re,' ',S.Im); end; ReadKey;
END.
Литература1. Web-site http://maier-rv.glazov.net (http://komp-model.narod.ru).