Табулирование функции и бесконечного функционального ряда разложения функции на данном отрезке - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток, Написал код для табулирования функции и функционального ряда и оценки средних погрешностей - все работает, однако, значения в результате абсолютно разные. В этой связи и правильность оценки погрешностей под вопросом. Не могу понять, где ошибка или опечатка (опыт среде программирования VB.net - несколько недель):

Решение задачи: «Табулирование функции и бесконечного функционального ряда разложения функции на данном отрезке»

textual
Листинг программы
Public Class Form7
    Private Sub Form7_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        TextBox5.Font = New Font(FontFamily.GenericSansSerif, 9)
        TextBox6.Font = New Font(FontFamily.GenericSansSerif, 9)
    End Sub
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim x0, xn, h, Eps As Double
        If Not Double.TryParse(TextBox3.Text, h) Then Exit Sub
        If Not Double.TryParse(TextBox1.Text, x0) Then Exit Sub
        If Not Double.TryParse(TextBox2.Text, xn) Then Exit Sub
        If Not Double.TryParse(TextBox4.Text, Eps) Then Exit Sub
        TextBox5.Clear() : TextBox6.Clear()
        TextBox5.AppendText("x" & "y".PadLeft(20) & vbCrLf)
        TextBox6.AppendText("x" & "y".PadLeft(20) & vbCrLf)
        If x0 > -1 AndAlso xn < 1 Then
            For x = x0 To xn Step h
                TextBox5.AppendText(Format(x, "0.000") & Format(fnt(x), "0.00000").PadLeft(15) & vbCrLf)
                TextBox6.AppendText(Format(x, "0.000") & Format(fntSeries(x, Eps), "0.00000").PadLeft(15) & vbCrLf)
            Next
        Else
            MsgBox("В данной области f(x) не существует! Введите значения концов сегмента в диапазоне (-1;1)")
            Exit Sub
        End If
    End Sub
    Private Function fnt(ByVal x As Double) As Double
        Return 0.25 * Math.Log((1 + x) / (1 - x)) + 0.5 * Math.Atan(x)
    End Function
    Private Function fntSeries(ByVal x As Double, ByVal eps As Double) As Double
        Dim a As Double = x, S As Double = 0, c As Double, k As Integer
        Do
            S += a
            c = x ^ 4 * ((4 * k + 1) / (4 * k + 5))
            a *= c
            k += 1
        Loop Until Math.Abs(a) < eps
        Return S
    End Function
End Class

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5
Похожие ответы