VB 积分 from baidu

Private Sub Command1_Click()
    Dim 下限 As Single, 上限 As Single, 允许误差 As Single, 实际误差 As Single, 分条 As Integer
    下限 = Val(InputBox("请输入积分下限"))
    上限 = Val(InputBox("请输入积分上限"))
    If 下限 > 上限 Then
        MsgBox "下限高于上限。怀疑输入手误。程序自动交换"
        t = 下限
        下限 = 上限
        上限 = t
    End If
    允许误差 = Val(InputBox("请输入允许误差"))
    Print "积分下限:"; 下限
    Print "积分上限:"; 上限
    Print "允许误差为:"; 允许误差
    Print "积分结果为:"; 积分(下限, 上限, 允许误差, 实际误差, 分条)
    Print "划分梯形个数:"; 分条
    Print "截断误差为:"; 实际误差
End Sub
Private Function 积分(下限 As Single, 上限 As Single, 误差要求 As Single, 误差 As Single, 块数 As Integer)
    Dim p As Single
    块数 = 2
    积分值 = 0
    步长 = (上限 - 下限) / 块数
    p = 函数(下限) + 函数(上限)
    d = 函数(下限 + 步长)
    Do
        s = (p + 4 * d) * 步长 / 3
        误差 = Abs(s - 积分值)
        If 误差 <= 误差要求 And 块数 > 100 Then Exit Do
        块数 = 块数 * 2
        步长 = (上限 - 下限) / 块数
        积分值 = s
        p = p + 2 * d
        d = 0
        For i = 1 To 块数 - 1 Step 2
            d = d + 函数(下限 + i * 步长)
        Next i
    Loop
    积分 = s
End Function

Private Function 函数(自变量 As Single) '这个函数的内容是要你自己修改的
    函数 = 自变量 * 自变量
End Function

posted on 2013-03-11 23:47  song2013  阅读(289)  评论(0编辑  收藏  举报

导航