想弄一个方差的表达式,自己写的如下是对一个二维数组中的第二维数据计算方差
Public Function aveSqu(x As Integer, n() As Integer) As Single
Dim i As Integer, t As Integer
Dim ave As Singlet = 0
For i = LBound(n, 2) To UBound(n, 2)
t = t + n(x, i)
Next i
If i > 0 Then
aveSqu = (n(x, i) - t / i) * (n(x, i) - t / i) / i
End If
End Function运行时总是报越界的错.....不知道为什么...还请各位多多指点

解决方案 »

  1.   

    我写了一个计算牛顿n(n<100)次插值的函数,计算均差的函数为
    Public JC(1 To 100, 1 To 100) As Double      '均差
    public Datanumber as double
    public Sourcenumber(1 to 100,1 to 2) as double 
    Public Sub GetJC()                                     '计算方法分析一书的图表
    Dim i As Integer
    Dim j As Integer
        For i = 1 To Datanumber
            JC(i, 1) = Sourcenumber(i, 2)
        Next i
        For j = 2 To Datanumber                                                '列
           For i = j To Datanumber
              if (Sourcenumber(i - 1, 1) - Sourcenumber(i, 1))=0 then goto 10:
              JC(i, j) = (JC(i - 1, j - 1) - JC(i, j - 1)) / (Sourcenumber(i - 1, 1) - Sourcenumber(i, 1))
           Next i
       Next j
       Exit Sub
    10:
       '除数为0
       MsgBox " 请检查你输入的数据。" & vbCrLf & "可能是有X的值相同。", vbOKOnly, "提示"
    End Sub
      

  2.   

    aveSqu = (n(x, i) - t / i) * (n(x, i) - t / i) / i
    i此时已经越界了。
      

  3.   

    兄弟们!俺kingcom_xu又回来啦! 虽然俺以前帮过你们不少忙,可是这次你们一定要批评我,不要客气,我,我...我生了个私生子,叫21bird...
      

  4.   

    比如你程序就前面有没有加option base 1,要加了那就n(x,0)就是错误。
    你的x得值可不可能越界,这段程序中看不出x 是否越界
      

  5.   

    程序前面是没有加option base 1我现在就是加入数组(1,0),也报越界错误.这到底指的是什么界啊?
      

  6.   

    你的第一组也没有定义吗?加入重定义语句
    Public Function aveSqu(x As Integer, n() As Integer) As Single
    Dim i As Integer, t As Integer
    Dim ave As Singlet = 0
    N=8'假定N=8
    redim preserve avesqu(n,2) as single'模块中重定义,只是示范,按你自己的写才行
    For i = LBound(n, 2) To UBound(n, 2)
    t = t + n(x, i)
    Next i
    If i > 0 Then
    aveSqu = (n(x, i) - t / i) * (n(x, i) - t / i) / i
    End If
    End Function
      

  7.   

    主要可能是定义语句头是用的是x,而计算时用的是n,变量有变化
    或者加入一句:n=x