【正文】
2 = x(3) / Cos(e2) 39?;《然癁槎?.分秒的形式:輸入弧度值,輸出度 .分秒(各占兩位) Public Function HuToDo(ByVal Hu As Double) As Single Dim du%, fen%, miao% Hu = Hu * 180 / PI du = Fix(Hu) Hu = (Hu du) * 60 fen = Fix(Hu) Hu = (Hu fen) * 60 miao = Fix(Hu + ) If miao = 60 Then fen = fen + 1 miao = 0 End If HuToDo = du + fen / 100 + miao / 10000 End Function 39。矩陣轉(zhuǎn)置的通用過程 Public Sub MatrixTrans(A, At) Dim i%, j% Dim R1%, C1% On Error Resume Next C1 = UBound(A, 2) LBound(A, 2) + 1 If Err Then MsgBox 輸入的矩陣維數(shù)不對(duì)! Exit Sub End If R1 = UBound(A, 1) LBound(A, 1) + 1 ReDim c(1 To C1, 1 To R1) For i = 1 To R1 For j = 1 To C1 At(j, i) = A(i, j) Next j Next i End Sub 39。看 Qa 是不是一維數(shù)組 ic = UBound(Qa, 2) LBound(Qa, 2) If Err Then e1 = True On Error Resume Next 39。二維矩陣相乘 For ai = LBound(Qa, 1) To UBound(Qa, 1) For bi = LBound(Qb, 2) To UBound(Qb, 2) For ci = LBound(Qa, 2) To UBound(Qa, 2) Qn(ai, bi) = Qn(ai, bi) + Qa(ai, ci) * Qb(ci, bi) Next ci Next bi Next ai ElseIf e1 = True And e2 = False Then On Error Resume Next ia = UBound(Qa) LBound(Qa) If Err Then e6 = True If e6 Then 39。一維矩陣乘以二維矩陣 For ci = LBound(Qb, 2) To UBound(Qb, 2) For ai = LBound(Qa, 1) To UBound(Qa, 1) Qn(ci) = Qn(ci) + Qa(ai) * Qb(ai, ci) Next ai Next ci End If ElseIf e1 = False And e2 = True Then On Error Resume Next ic = UBound(Qb) LBound(Qb) If Err Then e7 = True If e7 Then 39。二維矩陣乘以一維矩陣 For ai = LBound(Qa, 1) To UBound(Qa, 1) For bi = LBound(Qa, 2) To UBound(Qa, 2) Qn(ai) = Qn(ai) + Qa(ai, bi) * Qb(bi) Next bi Next ai End If Else Dim errT As Integer On Error Resume Next 39。一維矩陣乘以一維矩陣得一個(gè)數(shù) For ai = LBound(Qa, 1) To UBound(Qa, 1) For bi = LBound(Qa, 2) To UBound(Qa, 2) Qn = Qn + Qa(ai) * Qb(bi) Next bi Next ai Exit Sub End If On Error Resume Next 39。是否是一維矩陣乘數(shù) ib = UBound(Qb) LBound(Qb) If Err Then e5 = True If e5 Then For ai = LBound(Qa, 1) To UBound(Qa, 1) Qn(ai) = Qa(ai) * Qb Next ai Exit Sub End If 39。列選主元法 Guass 約化求解線性方程組 Public Sub MajorInColGuass(A, b, x) Dim Row%, Col%, n% 39。循環(huán)變量 Dim L() As Double 39。計(jì)算并檢查矩陣的大小 Row = UBound(A, 1) LBound(A, 1) + 1 Col = UBound(A, 2) LBound(A, 2) + 1 If Row Col Then MsgBox 方程組的系數(shù)矩陣有誤! Exit Sub End If 39。約化過程 For iStep = 1 To n 1 39。需要換主元 For iCol = iStep To n temp = A(iStep, iCol) A(iStep, iCol) = A(iPos, iCol) A(iPos, iCol) = temp Next iCol temp = b(iStep) b(iStep) = b(iPos) b(iPos) = temp End If 39?;卮^程 x(n) = b(n) / A(n, n) For iRow = n 1 To 1 Step 1 sumAX = 0 For iCol = n To iRow + 1 Step 1 sumAX = sumAX + A(iRow, iCol) * x(iCol) Next iCol x(iRow) = (b(iRow) sumAX) / A(iRow, iRow) Next iRow End Sub Option Explicit Dim iMark% 39。清除已經(jīng)傳給主窗體的數(shù)據(jù) Dim i% For i = 1 To iMark dis(i) = 0 detH(i) = 0 Next i 39。卸載輸入窗體 Unload Me End Sub Private Sub cmdOK_Click() dist = Val() dH = Val() Call AddData(iMark, dist, dH) 39。 第 amp。 站: amp。 距離: amp。 高差中數(shù): amp。 vbCrLf If iMark = nMarks Then 39。若還沒有輸完,初始化輸入界面輸入下一個(gè)測(cè)站 = = End If = 觀測(cè)數(shù)據(jù)輸入:第 amp。 站 iMark = iMark + 1 39。測(cè)站計(jì)數(shù)器 Dim dist!, dH! Private Sub cmdCancel_Click() 39。清除主窗體的顯示 = 水準(zhǔn)計(jì)算結(jié)果 : 39。在主窗體顯示本站數(shù)據(jù) = amp。 Str(iMark) amp。 vbCrLf = amp。 dis(iMark) amp。 detH(iMark) amp。如果已經(jīng)輸入完所有的測(cè)站觀測(cè)值 Else