uses MtxExpr,
Math387,
MtxVec,
MtxVecTee, MtxVecEdit,
Toeplitz;
procedure TForm1.Button1Click(Sender: TObject);
var FirstRow,FirstCol,X1,X2,B,R: Vector;
A: Matrix;
begin
FirstRow.Size(4,False);
FirstCol.Size(3,False);
B.Size(4,false);
FirstRow[0] := 1;
FirstRow[1] := 2;
FirstRow[2] := 3;
FirstRow[3] := 4;
FirstCol[0] := 2;
FirstCol[1] := 3;
FirstCol[2] := 4;
A.Toeplitz(FirstRow,FirstCol);
B[0] := -2;
B[1] := -3;
B[2] := -4;
B[3] := -5;
R.Copy(FirstRow);
R.Resize(5);
R[4] := 5;
ToeplitzSolve(FirstRow,FirstCol,B,X1);
A.LUSolve(B,X2,mtGeneral);
if not X2.Equal(X1,
EPS,cmpAbsolute)
then Eraise('Not equal!');
ViewValues(X1,'Real X1',true);
Levinson(R,X2);
ViewValues(X2,'Real X2',true);
// Complex
FirstRow.Size(4,True);
FirstCol.Size(3,True);
B.Size(4,True);
FirstRow.CValues[0] :=
Cplx(1,0);
FirstRow.CValues[1] :=
Cplx(2,0);
FirstRow.CValues[2] :=
Cplx(3,-1);
FirstRow.CValues[3] :=
Cplx(4,0);
FirstCol.CValues[0] :=
Cplx(2,0);
FirstCol.CValues[1] :=
Cplx(3,1);
FirstCol.CValues[2] :=
Cplx(4,0);
A.Toeplitz(FirstRow,FirstCol);
B.CValues[0] :=
Cplx(-2,0);
B.CValues[1] :=
Cplx(-3,-1);
B.CValues[2] :=
Cplx(-4,0);
B.CValues[3] :=
Cplx(-5,0);
R.Copy(FirstRow);
R.Resize(5);
R.CValues[4] :=
Cplx(5,0);
ToeplitzSolve(FirstRow,FirstCol,B,X1);
A.LUSolve(B,X2,mtGeneral);
if not X2.Equal(X1,
EPS*50,cmpAbsolute)
then Eraise('Not equal!');
ViewValues(X1,'Complex X1',true);
Levinson(R,X2);
ViewValues(X2,'Complex X2',true);
end;