【文章內(nèi)容簡介】
個(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ù)乘一維矩陣 ia = UBound(Qa) LBound(Qa) If Err Then e4 = True If e4 Then For bi = LBound(Qa, 2) To UBound(Qa, 2) Qn(bi) = Qa * Qb(bi) Next bi 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。一維矩陣相乘結(jié)果是二維矩陣 For ai = LBound(Qa, 1) To UBound(Qa, 1) For bi = LBound(Qa, 2) To UBound(Qa, 2) Qn(ai, bi) = Qa(ai) * Qb(bi) Next bi Next ai End If End Sub Public Sub ShowMatrix(tt) Dim i%, j%, n%, m% m = UBound(tt, 1) LBound(tt, 1) + 1 n = UBound(tt, 2) LBound(tt, 2) + 1 For i = 1 To m For j = 1 To n tt(i, j), Next j Next i End Sub 39。列選主元法 Guass 約化求解線性方程組 Public Sub MajorInColGuass(A, b, x) Dim Row%, Col%, n% 39。矩陣大小 Dim iStep%, iRow%, iCol% 39。循環(huán)變量 Dim L() As Double 39。各行的約化系數(shù) 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。準(zhǔn)備約化過程的變量和數(shù)組 n = UBound(b) LBound(b) + 1 If n Row Then MsgBox 方程組的系數(shù)矩陣與常數(shù)項(xiàng)大小不符! Exit Sub End If ReDim L(2 To Row) As Double Dim sumAX As Double, iPos%, temp 39。約化過程 For iStep = 1 To n 1 39。列選主元 iPos = 0 For iRow = iStep + 1 To n If Abs(A(iRow, iStep)) Abs(A(iStep, iStep)) Then iPos = iRow End If Next iRow If iPos iStep Then 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。約化過程 For iRow = iStep + 1 To n L(iRow) = A(iRow, iStep) / A(iStep, iStep) For iCol = iStep To n A(iRow, iCol) = A(iRow, iCol) L(iRow) * A(iStep, iCol) Next iCol b(iRow) = b(iRow) L(iRow) * b(iStep) Next iRow Next iStep 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。測(cè)站計(jì)數(shù)器 Dim dist!, dH! Private Sub cmdCancel_Click() 39。清除已經(jīng)傳給主窗體的數(shù)據(jù) Dim i% For i = 1 To iMark dis(i) = 0 detH(i) = 0 Next i 39。清除主窗體的顯示 = 水準(zhǔn)計(jì)算結(jié)果 : 39。卸載輸入窗體 Unload Me End Sub Private Sub cmdOK_Click() dist = Val() dH = Val() Call AddData(iMark, dist, dH) 39。在主窗體顯示本站數(shù)據(jù) = amp。 第 amp。 Str(iMark) amp。 站: amp。 vbCrLf = amp。 距離: amp。 dis(iMark) amp。 高差中數(shù): amp。 detH(iMark) amp。 vbCrLf If iMark = nMarks Then 39。如果已經(jīng)輸入完所有的測(cè)站觀測(cè)值 Else 39。若還沒有輸完,初始化輸入界面輸入下一個(gè)測(cè)站 = = End If = 觀測(cè)數(shù)據(jù)輸入:第 amp。 Trim(Str(iMark)) amp。 站 iMark = iMark + 1 39。測(cè)站數(shù)加 1 End Sub Private Sub Form_Load() iMark = 1 End Sub Option Explicit Dim iMark% 39。測(cè)站計(jì)數(shù)器 Dim dist!, dH! Private Sub cmdCancel_Click() 39。清除已經(jīng)傳給主窗體的數(shù)據(jù) Dim i% For i = 1 To iMark dis(i) = 0 detH(i) = 0 Next i 39。清除主窗體的顯示 = 水準(zhǔn)計(jì)算結(jié)果 : 39。卸載輸入窗體 Unload Me End Sub Private Sub cmdOK_Click() dist = Val() dH = Val() Call AddData(iMark, dist, dH) 39。在主窗體顯示本站數(shù)據(jù) = amp。 第 amp。 Str(iMark) amp。 站: amp