//------------------------------------------------------------------------------------------------
        public double GetInvariantD()
        {
            double[ , ] arrayMatrixD = new double[, ] {
                { this.a11, this.a12 },
                { this.a12, this.a22 }
            };
            RealMatrix matrixD    = new RealMatrix(arrayMatrixD);
            double     invariantD = matrixD.GetDeterminant();

            return(invariantD);
        }
        //------------------------------------------------------------------------------------------------
        public double GetInvariantA()
        {
            double[ , ] arrayMatrixA = new double[, ] {
                { this.a11, this.a12, this.a13 },
                { this.a12, this.a22, this.a23 },
                { this.a13, this.a23, this.a33 }
            };
            RealMatrix matrixA    = new RealMatrix(arrayMatrixA);
            double     invariantA = matrixA.GetDeterminant();

            return(invariantA);
        }
        //------------------------------------------------------------------------------------------------
        //Центр кривой
        public Point2D GetCentre()
        {
            double[ , ] arrayMatrixX = new double[, ] {
                { this.a13, this.a12 },
                { this.a23, this.a22 }
            };
            RealMatrix matrixX = new RealMatrix(arrayMatrixX);

            double[ , ] arrayMatrixY = new double[, ] {
                { this.a11, this.a13 },
                { this.a12, this.a23 }
            };
            RealMatrix matrixY = new RealMatrix(arrayMatrixY);

            double coordinateX = -matrixX.GetDeterminant() / this.GetInvariantD();
            double coordinateY = -matrixY.GetDeterminant() / this.GetInvariantD();

            Point2D centre = new Point2D(coordinateX, coordinateY);

            return(centre);
        }