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)); } }
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)); } }