С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 06.09.2016
Сообщений: 14
1

Вычисление суммы ряда с заданным Eps

10.10.2016, 19:07. Показов 1583. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Всплывает 0.000000001 при вычислениях и отсюда идут 2 ошибки:
1. При некоторых значениях цикл не доходит до xend.
2. При больших значениях и, соответственно, большом количестве выполнения цикла - огромная ошибка в вычислениях.
Как сделать ограничение только в 7 символов после запятой? Округление через round ошибки не исключает. Подсказали использовать numeric_limits, но я не нашел в гугле дельной статьи, которая бы объясняла использование данной функции.
C++
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <windows.h>
 
double Function(double x)
{
    return exp(-x*x);
}
 
long double MyFunction(double x, double eps)
{
    long double sum = 1, q = 1;
    int k = 1;
    for (k; fabs(q) >= eps; k++)
    {
        q *=-x*x / k;
        sum += q;
    }
    return sum;
}
 
double Delta(double a, double b)
{
    return sqrt(fabs(a*a - b*b));
}
 
float main()
{
    double e, xstart, xend, dx, eps, xideal, sum, MFid, Fid, MF, F;
    m1:
    printf("eps = ");
    scanf_s("%lf", &eps);
    printf("x start = ");
    scanf_s("%lf", &xstart);
    printf("x end = ");
    scanf_s("%lf", &xend);
    printf("dx = ");
    scanf_s("%lf", &dx);
    if (xstart == xend)
    {
        if ((dx != 0) || (eps<=0) || (eps>1000000) || 
            (xstart<-1000000) || (xstart>1000000) || (xend<-1000000) || (xend>1000000) || 
            (dx<-1000000) || (dx>1000000))
        {
            printf("\nError\nPlease, check your values and try again\n\n");
            goto m1;
 
        }
        else
        {
            MF = MyFunction(xstart, eps);
            F = Function(xstart);
            printf("_____________________________________________________________________\n");
            printf("|%16s|%16s|%16s|%16s|\n", "x", "MyFunction(x)", "Function(x)", "Delta");
            printf("---------------------------------------------------------------------\n");
            printf("|%16.7lf|%16.7lf|%16.7lf|%16.7lf|\n", xstart, MF, F, Delta(MF, F));
        }
    }
    else
    {
        if ((dx == 0) || (eps<=0) || (eps>1000000) || (xstart<-1000000) || 
            (xstart>1000000) || (xend<-1000000) || (xend>1000000) || (dx<-1000000) || 
            (dx>1000000) || ((xstart>xend) && (dx>0)) || ((xstart<xend) && (dx<0)))
        {
            printf("\nError\nPlease, check your values and try again\n\n");
            goto m1;
        }
        else 
        {
            printf("_____________________________________________________________________\n");
            printf("|%16s|%16s|%16s|%16s|\n", "x", "MyFunction(x)", "Function(x)", "Delta");
            printf("---------------------------------------------------------------------\n");
            if (xend > xstart)
            {
                for (xstart; xstart <= xend; xstart += dx)
                {
                    MF = MyFunction(xstart, eps);
                    F = Function(xstart);
                    printf("|%16.7lf|%16.7lf|%16.7lf|%16.7lf|\n", xstart, MF, F, Delta(MF, F));
                }
            }
            else
            {
                for (xstart; xstart >= xend; xstart += dx)
                {
                    MF = MyFunction(xstart, eps);
                    F = Function(xstart);
                    printf("|%16.7lf|%16.7lf|%16.7lf|%16.7lf|\n", xstart, MF, F, Delta(MF, F));
                }
            }
        }   
    }
    printf("---------------------------------------------------------------------\n\n");
    m2:
    printf("x ideal = ");
    scanf_s("%lf", &xideal);
    if ((xideal<-1000000) || (xideal>1000000))
    {
        printf("\nError\nPlease, check your values and try again\n\n");
        goto m2;
 
    }
    else
    {
        printf("_____________________________________________________________________\n");
        printf("|%16s|%16s|%16s|%16s|\n", "Eps", "MyFunction(x)", "Function(x)", "Delta");
        printf("---------------------------------------------------------------------\n");
        for (eps = 0.1; eps >= 0.0000001; eps *= 0.1)
        {
            MFid = MyFunction(xideal, eps);
            Fid = Function(xideal);
            printf("|%16.7lf|%16.7lf|%16.7lf|%16.7lf|\n", eps, MFid, Fid , Delta(MFid, Fid));
        }
        printf("---------------------------------------------------------------------\n");
    }
    _getch();
}
Миниатюры
Вычисление суммы ряда с заданным Eps   Вычисление суммы ряда с заданным Eps   Вычисление суммы ряда с заданным Eps  

0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.10.2016, 19:07
Ответы с готовыми решениями:

Вычисление суммы членов бесконечного ряда с заданной точностью eps
Вычислить сумму членов бесконечного ряда с заданной точностью eps. Предварительно вывести...

Вычисление суммы ряда с заданным числом членов ряда
Разработать алгоритм и программу на языке ASSEMBLER для вычисления суммы с заданным числом N...

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

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

0
10.10.2016, 19:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.10.2016, 19:07
Помогаю со студенческими работами здесь

Вычисление суммы членов ряда с точностью до члена ряда, меньшего ε
Составить программу для вычисления суммы членов ряда с точностью до члена ряда, меньшего ε( по...

По формуле члена ряда с номером k . Вычисление суммы всех членов ряда
По заданной формуле (k+2)/(k³+4) члена ряда с номером k составить программу вычисления суммы всех...

Вычисление суммы членов бесконечного ряда с точностью до члена ряда, меньшего ε
Доброе утро, форум. Если кому не сложно, то помогите с программой, вернее найти ошибку в ней Само...

Цикл: вычисление суммы членов бесконечного ряда с точностью до члена ряда, меньшего ε
Добрый вечер, помогите пожалуйста: Составить программу для вычисления суммы членов бесконечного...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru