private void LinearProcedure_CheckAllCalculations_ValidRotMatrixDeltaVectorM()
    {
        FillListsCoordinationData(PathToTxt, out var srcList, out var dstList);

        var rotMatrixActual   = ReadControlDataFromFile(PathToTxt + "\\rotationMatrixWithoutM.txt", 3, 3);
        var deltaVectorActual = ReadControlDataFromFile(PathToTxt + "\\resultDeltaVector.txt", 3, 1).Column(0);
        var mActual           = -0.00000290935921;

        var lp = new LinearProcedure(srcList, dstList);
        var rotMatrixExpected   = lp.RotationMatrix;
        var deltaVectorExpected = lp.DeltaCoordinateMatrix;

        for (int row = 0; row < rotMatrixExpected.Matrix.RowCount; row++)
        {
            for (int col = 0; col < rotMatrixExpected.Matrix.ColumnCount; col++)
            {
                Assert.Equal(rotMatrixActual[row, col], rotMatrixExpected.Matrix[row, col], 8);
            }
        }

        for (int row = 0; row < deltaVectorExpected.Vector.Count; row++)
        {
            Assert.Equal(deltaVectorActual[row], deltaVectorExpected.Vector[row], 8);
        }

        Assert.Equal(mActual, lp.M, 9);
    }
        private void CalculateParameters(object sender, RoutedEventArgs e)
        {
            if (_sourcePoints.Count == 0)
            {
                MessageBox.Show("Список исходных координат не может быть меньше 0", "Ошибка выполнения", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            if (_destinationPoints.Count == 0)
            {
                MessageBox.Show("Список конечных координат не может быть меньше 0", "Ошибка выполнения", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            var srcSc = new SystemCoordinate(_sourcePoints);
            var dstSc = new SystemCoordinate(_destinationPoints);

            var nip = new NewtonIterationProcess(srcSc, dstSc);

            NipParams.ItemsSource = FillParamsList(nip);
            var a9 = new NineAffine(srcSc, dstSc);

            A9Params.ItemsSource = FillParamsList(a9);
            var lp = new LinearProcedure(srcSc, dstSc);

            LpParams.ItemsSource = FillParamsList(lp);
            var svd = new SingularValueDecomposition(srcSc, dstSc);

            SvdParams.ItemsSource = FillParamsList(svd);

            var nipHelmert =
                new Helmert(srcSc).FromSourceToDestinationByParameters(nip.DeltaCoordinateMatrix,
                                                                       nip.RotationMatrix, nip.M).GetSubtractList(dstSc);

            NipDataGrid.ItemsSource = RoundList(nipHelmert);

            var a9Helmert =
                new Helmert(srcSc).FromSourceToDestinationByParameters(a9.DeltaCoordinateMatrix,
                                                                       a9.RotationMatrix, a9.M).GetSubtractList(dstSc);

            A9DataGrid.ItemsSource = RoundList(a9Helmert);

            var lpHelmert =
                new Helmert(srcSc).FromSourceToDestinationByParameters(lp.DeltaCoordinateMatrix,
                                                                       lp.RotationMatrix, lp.M).GetSubtractList(dstSc);

            LinearDataGrid.ItemsSource = RoundList(lpHelmert);

            var svdHelmert =
                new Helmert(srcSc).FromSourceToDestinationByParameters(svd.DeltaCoordinateMatrix,
                                                                       svd.RotationMatrix, svd.M).GetSubtractList(dstSc);

            SvdDataGrid.ItemsSource = RoundList(svdHelmert);
        }
    private void LinearProcedure_FormingLzVector_ValidLzVector()
    {
        FillListsCoordinationData(PathToTxt, out var srcList, out var dstList);

        var             lzVectorExpected = ReadControlDataFromFile(PathToTxt + "\\LzMatrix.txt", 10, 1).Column(0);
        var             lp             = new LinearProcedure(srcList, dstList);
        Vector <double> lzVectorActual = lp.FormingLzVectorTst();

        Assert.Equal(lzVectorActual.Count, lzVectorExpected.Count);

        for (int row = 0; row < lzVectorActual.Count; row++)
        {
            Assert.Equal(lzVectorActual[row], lzVectorExpected[row], 8);
        }
    }
    private void LinearProcedure_FormingMatrixQ_ValidMatrixQ()
    {
        FillListsCoordinationData(PathToTxt, out var srcList, out var dstList);

        var             qMatrixExpected = ReadControlDataFromFile(PathToTxt + "\\qMatrix.txt", 10, 4);
        var             lp            = new LinearProcedure(srcList, dstList);
        Matrix <double> qMatrixActual = lp.FormingQMatrixTst();

        for (int row = 0; row < qMatrixActual.RowCount; row++)
        {
            for (int col = 0; col < qMatrixActual.ColumnCount; col++)
            {
                Assert.Equal(qMatrixExpected[row, col], qMatrixActual[row, col], 8);
            }
        }
    }
    private void LinearProcedure_CalculateDxVector_ValidDxVector()
    {
        FillListsCoordinationData(PathToTxt, out var srcList, out var dstList);

        var             dxVectorExpected = ReadControlDataFromFile(PathToTxt + "\\DxVector.txt", 4, 1).Column(0);
        var             lp             = new LinearProcedure(srcList, dstList);
        var             qMatrix        = lp.FormingQMatrixTst();
        var             lxVector       = lp.FormingLxVectorTst();
        Vector <double> dxVectorActual = lp.CalculateDVectorsTst(qMatrix, lxVector);

        Assert.Equal(dxVectorActual.Count, dxVectorExpected.Count);

        for (int row = 0; row < dxVectorActual.Count; row++)
        {
            Assert.Equal(dxVectorActual[row], dxVectorExpected[row], 8);
        }
    }