Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 1
1

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

27.05.2016, 15:57. Просмотров 1339. Ответов 1
Метки нет (Все метки)


Всем доброго времени суток,
Название: Индивидуальное задание f(x).gif
Просмотров: 19

Размер: 2.0 КбНазвание: Индивидуальное задание (разложение).gif
Просмотров: 19

Размер: 1.4 Кб

Написал код для табулирования функции и функционального ряда и оценки средних погрешностей - все работает, однако, значения в результате абсолютно разные. В этой связи и правильность оценки погрешностей под вопросом. Не могу понять, где ошибка или опечатка (опыт среде программирования VB.net - несколько недель):
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Imports System.Math
Public Class Form5
    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        TextBox4.Text = " x         f(x) " + Chr(13) + Chr(10)
        TextBox5.Text = " x         S " + Chr(13) + Chr(10)
    End Sub
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim x0, xn, h, Eps, delta, S, y, a, c As Double
        Dim k, n, i As Long
        h = Val(TextBox8.Text)
        x0 = Val(TextBox1.Text)
        xn = Val(TextBox2.Text)
        Eps = Val(TextBox3.Text)
        'Табулирование f(x)
        Select Case True
            Case x0 > -1 And xn < 1
                For x = x0 To xn Step h
                    y = 1 / 4 * Log((1 + x) / (1 - x)) + 1 / 2 * Atan(x)
                    TextBox4.Text = TextBox4.Text +
                Format(x, "0.000") + " " +
                Format(y, "0.00000") + Chr(13) + Chr(10)
                Next x
            Case x0 <= -1 Or x0 >= 1 And xn <= -1 Or xn >= 1 'Предупреждение об ОДЗ
                MsgBox("В данной области f(x) не существует! Введите значения концов сегмента в диапазоне (-1;1)")
        End Select
        'Табулирование S
        For x = x0 To xn Step h
            a = x : S = x : k = 0
            Do
                S = S + a
                c = x ^ 4 * ((4 * k + 1) / (4 * k + 5))
                a = c * a
                k = k + 1
            Loop Until Abs(a) < Eps
            TextBox5.Text = TextBox5.Text +
                Format(x, "0.000") + " " +
                Format(S, "0.00000") + Chr(13) + Chr(10)
        Next x
        'Вычисление погрешностей
        n = CInt(Abs(xn - x0) / h) + 1 'определение количества точек в данном интервале
        For x = x0 To xn Step h
            y = 1 / 4 * Log((1 + x) / (1 - x)) + 1 / 2 * Atan(x)
            S = 0 : a = x : k = 0
            For k = 0 To 5000
                S = S + a
                c = x ^ 4 * ((4 * k + 1) / (4 * k + 5))
                a = c * a
                If Abs(a) < Eps Then Exit For
                delta = Abs(S - y)
                For i = 1 To n
                    delta = delta + Abs(S - y)
                    i = i + 1
                Next i
                TextBox6.Text = Format(delta, "0.000") 'Вывод средней абсолютной погрешности
                TextBox7.Text = Format((Format(delta, "0.000") / S) * 100, "0.000") + "%" 'вывод средней относительной погрешности 
            Next k
        Next x
    End Sub
 
 
End Class
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2016, 15:57
Ответы с готовыми решениями:

Табулирование функции и суммы функционального ряда
Вид вычисляемой функции задать с помощью подпрограммы-функции. Функциональный ряд S вычисляется с...

Табулирование функции и суммы функционального ряда
visual basic 6.0 Протабулировать 1. функцию y на отрезке с шагом h. 2. сумму S...

Табулирование функции и суммы функционального ряда
Протабулировать 1. функцию y на отрезке с шагом h. 2. сумму S функционального ряда...

Табулирование функции и суммы функционального ряда
Всем привет,может кто нить помочь прописать код в VB 6.0. На вашем форуме впервые,не знаю местных...

1
3604 / 2922 / 704
Регистрация: 02.02.2013
Сообщений: 2,809
Записей в блоге: 2
27.05.2016, 22:00 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Alzy,
Получился вполне приемлемый результат (никаких радикальных изменений не вносил).
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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
2
Миниатюры
Табулирование функции и бесконечного функционального ряда разложения функции на данном отрезке  
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.05.2016, 22:00

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Табулирование функции и суммы функционального ряда
Протабулировать 1. Функцию y на отрезке с шагом h. 2.Сумму S функционального ряда разложения...

Табулирование функции и суммы функционального ряда
Протабулировать 1. функцию y на отрезке с шагом h. 2. сумму S функционального ряда...

Табулирование функции и ее разложения в сумму ряда
Составить программу табулирования двух функций S и Y в заданном диапазоне изменения аргумента x....

Не совпадает ответ. Табулирование функции, заданной в виде бесконечного ряда
Добрый день! Старался решить сам, но не получается. Нужно было протабулировать функцию lnx =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.