commad.click()
lufenjie                      '调用子过程
huidai1                       '调用子过程
Text4.Visible = True
For i = 0 To n - 1             '输出结果
Text4.Text = "x" & CStr(i) & "=" & c(i, n) & "," & "  " & Text4.Text
Next i
end subPrivate Sub hebin()
Dim i, j As Integer
ReDim c(n - 1, n)For i = 0 To n - 1            '合并矩阵
  For j = 0 To n - 1
  c(i, j) = a(i * n + j)
  Next j
  c(i, n) = b(i)
Next i
'调试
For i = 0 To n - 1
     For j = 0 To n
     Debug.Print "c(" & CStr(i); ","; CStr(j); ")=" & c(i, j) & ","
     Next j
Next i
                        
End Sub                                    '方法一Private Sub lufenjie()
Dim i, j, k As Integer
hebin
For i = 1 To n - 1
c(i, 0) = c(i, 0) / c(0, 0) 'zhusi
Next i
For j = 1 To n
c(1, j) = c(1, j) - c(1, 0) * c(0, j)
Next jFor i = 2 To n - 1
    
    For j = 1 To i - 1
       For k = 0 To j - 1
       c(i, j) = c(i, j) - c(i, k) * c(k, j)
       c(i, j) = c(i, j) / c(j, j)
       Next k
    Next j
    
    For j = i To n
      For k = 0 To i - 1
      c(i, j) = c(i, j) - c(i, k) * c(k, j)
      Next k
    Next j
    
Next i'调试显示
For i = 0 To n - 1
     For j = 0 To n
     Debug.Print "c(" & CStr(i); ","; CStr(j); ")=" & c(i, j) & ","
     Next j
Next i
End Sub
Private Sub huidai1()Dim i, j As Integer
 c(n - 1, n) = c(n - 1, n) / c(n - 1, n)
 For i = n - 2 To 0
    For j = n - 1 To i + 1
     c(i, n) = c(i, n) - c(i, j) * c(j, n)
    Next j
     c(i, n) = c(i, n) / c(i, i)
 Next i
 
End Sub

解决方案 »

  1.   

    与Vb无关。计算问题的关键是你的数学、物理学得怎样?用Vb写算法与Fortran77差不多,但比C、C++好用。调试最方便!
      

  2.   

    又是一堆公式,首先你要告诉大家你这个程序是干什么的,基于什么算法吗
    并且程序本身就有好多错误,(commad.click()这是什么?)呵呵 
      

  3.   

    谢谢大家。laviewpbt(人一定要靠自己) 说的很对,首先我把程序说明一下。次程序 是试图使用 LU分解法 求解方程组,处理过程为:  先后调用 lufenjie 和 huidai1 子过程,程序通过,text框 接受系数矩阵 放在一个全局变量 c()  //C是一个根据输入的n ,redim的动态数组;以上 程序只是 程序的部分,commad.click() 的程序并不完整,( 因为代码太长)但主要完成接收输入矩阵的作用;我的意思是,各位帮我看看,我的子过程处理 是否有错误。因为,我调的时候, 发现 处理后的矩阵,最后的3个 数据,有计算错误,但其他的完全正确。我找不到出错的原因。那位Debug高手 帮我看看
      

  4.   

    Dim n As Integer
    Dim a() As Double
    Dim b() As Double
    Dim c() As Double
    Dim t1() As String
    Dim t2() As StringPrivate Sub Command1_Click()
    Dim i, j As Integer
                                ' 数据输入 处理
    If (Text3.Text <> "") And (Text2.Text <> "") And (Text1.Text <> "") Then
    n = Val(Text3.Text)ReDim a(0 To n * n - 1)
    ReDim b(0 To n - 1)
    ReDim t1(0 To n * n - 1)
    ReDim t2(0 To n * n - 1)t1 = Split(Text1.Text, ",")
    t2 = Split(Text2.Text, vbCrLf)For i = 0 To n * n - 1
       a(i) = Val(t1(i))
       'Debug.Print a(i)
    Next i
    For j = 0 To n - 1
       b(j) = Val(t2(j))
       'Debug.Print b(j)
    Next j                       '数据录入完成
    Else
    n = 0
    End IfIf Option1 = True Thenlufenjie                      '调用子过程
    huidai                        '调用子过程
    Text4.Visible = True
    For i = 0 To n - 1             '输出结果
    Text4.Text = "x" & CStr(i) & "=" & c(i, n) & "," & "  " & Text4.Text
    Next iEnd IfIf Option2 = True Then
    '
    End IfEnd SubPrivate Sub hebin()
    Dim i, j As Integer
    ReDim c(n - 1, n)For i = 0 To n - 1            '合并矩阵
      For j = 0 To n - 1
      c(i, j) = a(i * n + j)
      Next j
      c(i, n) = b(i)
    Next i
    '调试
    For i = 0 To n - 1
         For j = 0 To n
         Debug.Print "c(" & CStr(i); ","; CStr(j); ")=" & c(i, j) & ","
         Next j
    Next i
                            
    End Sub
    Private Sub lufenjie()      '方法一
    Dim i, j, k As Integer
    hebin
    For i = 1 To n - 1
    c(i, 0) = c(i, 0) / c(0, 0) 'zhusi
    Next i
    For j = 1 To n
    c(1, j) = c(1, j) - c(1, 0) * c(0, j)
    Next jFor i = 2 To n - 1
        
        For j = 1 To i - 1
           For k = 0 To j - 1
           c(i, j) = c(i, j) - c(i, k) * c(k, j)
           c(i, j) = c(i, j) / c(j, j)
           Next k
        Next j
        
        For j = i To n
          For k = 0 To i - 1
          c(i, j) = c(i, j) - c(i, k) * c(k, j)
          Next k
        Next j
        
    Next i'调试显示
    For i = 0 To n - 1
         For j = 0 To n
         Debug.Print "c(" & CStr(i); ","; CStr(j); ")=" & c(i, j) & ","
         Next j
    Next i
    End Sub
    以上是 commad.click() 中所有的代码. 程序完全可以运行,但有计算错误这是我一组调试数据
    a=
    (4,2,1,5,
    8,7,2,10,
    4,8,3,6,
    12,6,11,20)
    b=
    (-2
    -7
    -7
    -3)在处理后c 的最后 3个数据有错误.
      

  5.   


     sub lufenjie()
    .....
    .....
       For j = 1 To i - 1
           For k = 0 To j - 1
           c(i, j) = c(i, j) - c(i, k) * c(k, j)
           c(i, j) = c(i, j) / c(j, j)   
           Next k
    改正如下
     For j = 1 To i - 1
           For k = 0 To j - 1
           c(i, j) = c(i, j) - c(i, k) * c(k, j)
           Next k
          c(i, j) = c(i, j) / c(j, j).....
    .....Private Sub huidai1()Dim i, j As Integer
     c(n - 1, n) = c(n - 1, n) / c(n - 1, n)
     For i = n - 2 To 0     Step -1
        For j = n - 1 To i + 1  Step -1
         c(i, n) = c(i, n) - c(i, j) * c(j, n)
        Next j
         c(i, n) = c(i, n) / c(i, i)
     Next i
     
    End Sub