Code:
{$region Matrix}
begin
var a:=new Matrix(3,4,-2,4,0,3,6,11,-5,7,0,8,-4,1);
a.SetRow(new Vector(a.Row(2).Value.Select(x->x-2).ToArray),2);
a.MultCol(1,3);
var vb:=new Vector(1,-1,0,2);
a.InsertRowBefore(vb,3);
a.SwapRows(2,3);
a.SwapCols(1,3);
a:=a.Transpose;
var Atr:=a.Inv;
var d:=254.0;
var x:=new Matrix(4,4,173/d,83/d,27/d,28/d,-426/d,-222/d,-112/d,72/d,
122/d,60/d,44/d,8/d,-277/d,-105/d,-77/d,-14/d);
TestMatrixM('Matrix 1',Atr,x,1e-14);
a:=new Matrix(2,4,-3,0,4,-1,2,-7,5,6);
var b:=new Matrix(2,3,8,1,-5,6,7,2);
var c:=new Matrix(3,4,1,-1,7,0,3,2,9,4,5,0,-2,-4);
var r:=(((a-b*c).Transpose)*a).Det;
TestMatrixS('Matrix 2',r,0.0,1e-15);
a:=new Matrix(3,3,2,3,-1,1,-2,1,1,0,2);
vb:=new Vector(9,3,2);
var vr:=a.Inv*vb;
TestMatrixV('Matrix 3',vr,new Vector(4,0,-1),1e-15);
vr:=new Vector(vb.Length);
var det:=a.Det;
for var i:=0 to vb.Length-1 do begin
var t:=a.Copy;
t.SetCol(vb,i,0);
var detx:=t.Det;
vr.Value[i]:=detx/det;
end;
TestMatrixV('Matrix 4',vr,new Vector(4,0,-1),1e-15);
var cond:real;
vr:=A.SLAU(vb,cond);
TestMatrixV('Matrix 5.1',vr,new Vector(4,0,-1),1e-15);
TestMatrixS('Matrix 5.2',cond,1.97935318837932,1e-14);
Writeln(nt:2,'. Проверка класса Matrix завершена');
nt+=1
end; {$endregion} |