Табулирование функции и бесконечного функционального ряда разложения функции на данном отрезке - 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