Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Redzep
197 / 133 / 88
Регистрация: 21.12.2014
Сообщений: 369
#1

Найти первый член последовательности по модулю меньший заданного числа - C++

10.04.2015, 17:47. Просмотров 390. Ответов 4
Метки нет (Все метки)

Дано действительное число 3 > x > 1. Последовательность a1, a2, … an образована по закону

http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{n}=\frac{(-1)^n(x^n+e^n)}{(n+1)(2n+1)!}

Найти первый член, для которого выполняется условие http://www.cyberforum.ru/cgi-bin/latex.cgi?|{a}_{n}|<\xi (машинного эпсилон), вывести на экран его значение и номер n. Предусмотреть проверку правильности ввода x.

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
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
using std::fixed;
 
#include <cmath>
 
int main()
{
    double a = 0;
    double x = 0;
    double n = 1;
    double f = 3;
 
    while (x<=1 || x>=3)
    {
        cout << "Enter x: ";
        cin >> x;
    }
 
    while (1)
    {
        a = (pow(-1.0,n)*(pow(x,n)+exp(n))) / ((n+1)*f);
        if (abs(a)<DBL_EPSILON) 
        {
            cout << n << endl;
            cout << a << endl;
            break;
        }
        n++;
        f += 2*n+1; 
    }
    
    system("pause");
    return 0;
}
Очень долго перебирает, не могу понять, где ошибка.

Добавлено через 4 минуты
А, сейчас условие напишу
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2015, 17:47
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти первый член последовательности по модулю меньший заданного числа (C++):

Найти первый член последовательности меньший Е
Помогите с решением. Ввести с клавиатуры числа x, E. Последовательность а1,...

Найти max по модулю член последовательности и max член последовательности
даны натуральные числа n, a1,a2,...an. Найти max по модулю член...

Найти первый член последовательности
на языке С Даны вещественные числа A&lt;0 и B&gt;0. Найти первый член...

Найти первый член последовательности
Помогите начинающему программисту. Не могу понять как тут сделать.

Найти первый член последовательности
Найти первый член последовательности, для которого выполнено условие...

Найти первый член последовательности
Как это осуществить?

4
Dimension
Dimension
573 / 442 / 221
Регистрация: 08.04.2014
Сообщений: 1,709
Завершенные тесты: 1
10.04.2015, 17:56 #2
в лоб перебирать конечно долго ,используйте бинпоиск по ответу
0
Redzep
197 / 133 / 88
Регистрация: 21.12.2014
Сообщений: 369
10.04.2015, 17:59  [ТС] #3
Все, я понял, написал вместо * + в факториале, глупо получилось
0
zss
Модератор
Эксперт С++
6960 / 6522 / 4139
Регистрация: 18.12.2011
Сообщений: 17,209
Завершенные тесты: 1
10.04.2015, 19:22 #4
считаем отдельно xn=xn,en= en и знаменатель (zn).
Рекуррентные соотношения n->(n+1)
xn=xn*x, en=en*e
zn=-zn*(2n+2)*(2n+3)*(n+3)/(n+1)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
double an;
double xn=1.;
double en=1.;
double zn=1.;
int n=0;
do
{
    an=(xn+en)/zn;
    xn*=x;
    en*=M_E;
    zn*=-(2.*n+2.)*(2.*n+3.)*(n+3.)/(n+1.);
    n++;
}while(fabs(an)>DBL_EPSILON);
 cout << n << endl;
 cout << an << endl;
0
Redzep
197 / 133 / 88
Регистрация: 21.12.2014
Сообщений: 369
10.04.2015, 20:01  [ТС] #5
Исправил, вроде правильно, выдает n=10

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
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
using std::fixed;
 
#include <cmath>
 
int main()
{
    double a = 0;
    double x = 0;
    double n = 1;
    
    while (x<=1 || x>=3)
    {
        cout << "Enter x: ";
        cin >> x;
    }
 
    while (1)
    {
        double f = 1;
        for (int i=0; i<(2*n+1); i++)
        {
            f*=i+1;
        }
 
        a = (pow(-1.0,n)*(pow(x,n)+exp(n))) / ((n+1)*f);
        if (abs(a)<DBL_EPSILON) 
        {
            cout << "n: " << n << endl;
            cout << "a: " << a << endl;
            break;
        }
        n++; 
    }
 
    cout << endl;
    system("pause");
    return 0;
}
0
10.04.2015, 20:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2015, 20:01
Привет! Вот еще темы с решениями:

Найти первый член последовательности, переделать с while
Найти первый член последовательности, для которого выполнено условие...

Найти первый отрицательный член последовательности
найти U-первый отрицательный член последовательности: cos(ctg(n)), n=1,2,3......

Найти первый отрицательный член последовательности
Найти U – первый отрицательный член последовательности Cos (Ctg n), n = 1, 2,...

Найти максимальный по модулю член последовательности без использования массивов
Дано натуральное число n, действительные числа a1, ..., an. Определить...


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

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

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