vb坐标转换程序设计内容摘要:

个数 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。 是否是数乘一维矩阵 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。 是否是一维矩阵乘数 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。 一维矩阵相乘结果是二维矩阵 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。 循环变量 Dim L() As Double 39。 各行的约化系数 39。 计算并检查矩阵的大小 Row = UBound(A, 1) LBound(A, 1) + 1 Col = UBound(A, 2) LBound(A, 2) + 1 If Row Col Then MsgBox 方程组的系数矩阵有误。 Exit Sub End If 39。 准备约化过程的变量和数组 n = UBound(b) LBound(b) + 1 If n Row Then MsgBox 方程组的系数矩阵与常数项大小不符。 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。 测站计数器 Dim dist!, dH! Private Sub cmdCancel_Click() 39。 清除已经传给主窗体的数据 Dim i% For i = 1 To iMark dis(i) = 0 detH(i) = 0 Next i 39。 清除主窗体的显示 = 水准计算结果 : 39。 卸载输入窗体 Unload Me End Sub Private Sub cmdOK_Click() dist = Val() dH = Val() Call AddData(iMark, dist, dH) 39。 在主窗体显示本站数据 = amp。 第 amp。 Str(iMark) amp。 站: amp。 vbCrLf = amp。 距离: amp。 dis(iMark) amp。 高差中数: amp。 detH(iMark) amp。 vbCrLf If iMark = nMarks Then 39。 如果已经输入完所有的测站观测值 Else 39。 若还没有输完,初始化输入界面输入下一个测站 = = End If = 观测数据输入:第 amp。 Trim(Str(iMark)) amp。 站 iMark = iMark + 1 39。 测站数加 1 End Sub Private Sub Form_Load() iMark = 1 End Sub Option Explicit Dim iMark% 39。 测站计数器 Dim dist!, dH! Private Sub cmdCancel_Click() 39。 清除已经传给主窗体的数据 Dim i% For i = 1 To iMark dis(i) = 0 detH(i) = 0 Next i 39。 清除主窗体的显示 = 水准计算结果 : 39。 卸载输入窗体 Unload Me End Sub Private Sub cmdOK_Click() dist = Val() dH = Val() Call AddData(iMark, dist, dH) 39。 在主窗体显示本站数据 = amp。 第 amp。 Str(iMark) amp。 站: amp。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。