Exemple #1
0
        private void PMatrix()
        {
            int bi;
            int m_Pnumber = UnknowPoints.Count();
            int numAngle  = StationInfos.Count();

            P = new Matrix(DistNum + numAngle, DistNum + numAngle);
            //设夹角的中误差为1“,距离的中误差为0.005m
            //角度权=1,距离全4*10000(秒/米)平方
            for (bi = 0; bi < numAngle; bi++)
            {
                P.SetNum(bi, bi, 1);
            }
            for (bi = numAngle; bi < DistNum + numAngle; bi++)
            {
                P.SetNum(bi, bi, 40000);
            }
            L = new Matrix(DistNum + numAngle, 1);
            for (bi = 0; bi < numAngle; bi++)
            {
                L.SetNum(bi, 0, La.getNum(bi, 0));
            }
            for (bi = numAngle; bi < DistNum + numAngle; bi++)
            {
                L.SetNum(bi, 0, Ld.getNum(bi - numAngle, 0));
            }
        }
Exemple #2
0
        public void AllErrorEquations()
        {
            //总的误差方程计算
            int m_Pnumber = UnknowPoints.Count();
            int numAngle  = StationInfos.Count();

            B = new Matrix(DistNum + numAngle, m_Pnumber * 2);
            L = new Matrix(DistNum + numAngle, 1);
            int bi, bj;

            for (bi = 0; bi < numAngle; bi++)
            {
                for (bj = 0; bj < m_Pnumber * 2; bj++)
                {
                    B.SetNum(bi, bj, Ba.getNum(bi, bj));
                }
                L.SetNum(bi, 0, La.getNum(bi, 0));
            }
            for (bi = numAngle; bi < DistNum + numAngle; bi++)
            {
                for (bj = 0; bj < m_Pnumber * 2; bj++)
                {
                    double tt = Bd.getNum(bi - numAngle, bj);
                    B.SetNum(bi, bj, tt);
                }
                L.SetNum(bi, 0, Ld.getNum(bi - numAngle, 0));
            }
        }