Интегрирование методом трапеций с заданной точностью

lodkinnn

Интегрирование методом трапеций с заданной точностью 15 интеграл не получается сделать чтобы была точность нужная в чем проблема
Public Class Form1
    Private Function f(ByVal x As ******)
        f = System.Math.Pow(System.Math.Sin(x), 3) * x
    End Function
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim a, b, n, h, s, integral
        a = 0
        b = System.Math.PI
        n = 100
        h = (b - a) / n
        s = 0
        For i = 1 To n - 1
            s = s + f(a + h * i)
        Next i
        integral = h * ((f(a) + f(b)) / 2 + s)
        TextBox1.Text = Str(integral)
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
    End Sub
End Class
3 ответа

lodkinnn

А где у вас вообще в коде эпсилон?


lodkinnn

Попробуйте так
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Dim a As ****** = 0
    Dim b As ****** = Math.PI
    Dim n As Integer = 5
    Dim eps As ****** = 0.01
    Dim intg As ******
    Dim intg0 As ****** = solIntegr(n, a, b)
    Do
        n *= 2
        intg = solIntegr(n, a, b)
        If Math.Abs(intg - intg0) < eps Then Exit Do
        intg0 = intg
    Loop While True
    MsgBox(intg.ToString & vbCrLf & n.ToString)
End Sub
Private Function solIntegr(ByVal nn As Integer, ByVal aa As ******, ByVal bb As ******) As ******
    Dim ff = Function(x As ******) (Math.Sin(x) ^ 3) * x
    Dim h As ****** = (bb - aa) / nn
    Dim vv As ****** = ff(aa) / 2 + ff(bb) / 2
    For i = 1 To nn - 1
        vv += ff(aa + h * i)
    Next
    Return vv * h
End Function


lodkinnn

Надо просто как можно проще