Exemplo n.º 1
0
Arquivo: RDMS.cs Projeto: asiryan/RDM
        /// <summary>
        /// Solves the navigation problem by the range-difference method (nonlinear method).
        /// </summary>
        /// <param name="A">Matrix of vectors { X, Y, Z }</param>
        /// <param name="T">Vector of time</param>
        /// <returns>Vector { X, Y, Z }</returns>
        /// <param name="eps">Epsilon (0, 1)</param>
        private static double[] RDM4(double[][] A, double[] T, double eps = 1e-8)
        {
            // Params
            int count = A.GetLength(0);

            double[]   V = new double[count];
            double[][] B;
            double[]   F, S;

            // Roots
            for (int i = 0; i < maxIterations; i++)
            {
                // Ax = b
                B = RDMS.Left(A, T, V);
                F = RDMS.Right(A, T, V);
                S = Vector.Solve(B, F);
                V = Vector.Add(V, S);

                // Stop point
                if (RDMS.Convergence(S, eps))
                {
                    break;
                }
            }

            // Vector { X, Y, Z }
            return(Vector.Resize(V, 3));
        }
Exemplo n.º 2
0
Arquivo: RDMS.cs Projeto: asiryan/RDM
        // **************************************************************
        //                          ALGORITHMS
        // **************************************************************
        // * RDM implementation for 5 (or more) time-synchronized
        // receivers by solving a linearized system of equations [1].
        // --------------------------------------------------------------
        // * RDM implementation for 2, 3 and 4 time-synchronized
        // receivers by solving a nonlinear system of equations [2,3].
        //
        //
        // **************************************************************
        //                          REFERENCES
        // **************************************************************
        // [1] I.V. Grin, R.A. Ershov, O.A. Morozov, V.R. Fidelman -
        // "Evaluation of radio source’s coordinates based on solution
        // of linearized system of equations by range-difference method"
        // --------------------------------------------------------------
        // [2] V.B. Burdin, V.A. Tyurin, S.A. Tyurin, V.M. Asiryan -
        // "The estimation of target positioning by means of the
        // range-difference method"
        // --------------------------------------------------------------
        // [3] E.P. Voroshilin, M.V. Mironov, V.A. Gromov -
        // "The estimation of radio source positioning by means of the
        // range-difference method using the multiposition passive
        // satellite system"
        // **************************************************************

        /// <summary>
        /// Solves the navigation problem by the range-difference method (linear method).
        /// </summary>
        /// <param name="A">Matrix of vectors { X, Y, Z }</param>
        /// <param name="T">Vector of time</param>
        /// <returns>Vector { X, Y, Z }</returns>
        private static double[] RDM5(double[][] A, double[] T)
        {
            // Roots
            double[][] B = RDMS.Left(A, T);
            double[]   F = RDMS.Right(A, T);
            double[]   S = Vector.Solve(B, F);

            // Vector { X, Y, Z }
            return(Vector.Resize(S, 3));
        }