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

Сумма бесконечного ряда с факториалом

09.10.2014, 22:01. Показов 11168. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Найти сумму ряда с заданной точностью e = 0,001, общий член которого:
a = n! / pow(n,n)
Проблема в том, что вычислить надо не с помощью функции, а с помощью for, while или do-while.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.10.2014, 22:01
Ответы с готовыми решениями:

Сумма бесконечного ряда с факториалом
Не понимаю как записать факториал в c++, да и упростить как.

Сумма бесконечного ряда с факториалом и с заданной точностью
Сначала надо найти сумму ряда чисел с заданной точностью 0.0001: 1 + x + \frac{{x}^{1}}{!1} +...

Сумма бесконечного ряда
Есть формула , которую нужно расчитать:\xi =\frac{Q}{\pi x}M(w) . Тут M(w)=\sum_{n=1}^{\propto...

Сумма бесконечного ряда
Задание : Ввести с клавиатуры х и точность вычисления Eps. Вычислить с заданной точностью сумму:...

21
79 / 79 / 34
Регистрация: 26.10.2011
Сообщений: 220
09.10.2014, 22:14 2
ряды разные бывают... вам какой нужен?
0
0 / 0 / 0
Регистрация: 09.10.2014
Сообщений: 38
09.10.2014, 22:23  [ТС] 3
я написал, все, что у меня есть в задании) там еще не проста "а", а "а" с индексом n
0
79 / 79 / 34
Регистрация: 26.10.2011
Сообщений: 220
09.10.2014, 22:39 4
если общий член ряда не стремиться к нулю в бесконечности (ваш случай) то ряд расходится - в этом случае сумму ряда посчитать нельзя...
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,432
Записей в блоге: 8
09.10.2014, 22:43 5
sergestus, ты серьезно считаешь, что ряд с общим членом

https://www.cyberforum.ru/cgi-bin/latex.cgi?a_n=\frac{n!}{n^n}

расходится? Факториал растет гораздо медленнее, чем nn
0
0 / 0 / 0
Регистрация: 09.10.2014
Сообщений: 38
09.10.2014, 22:49  [ТС] 6
я так понимаю, что это не важно, надо просто программу написать

Добавлено через 2 минуты
я вот такой вариант попробовал, и конечно не получается
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
#include <iostream.h>
#include <math.h>
int main()
{
int n, f= 1, i= 1;
double a;
do
{
f= f * i;
i++;
do
{
a= a + f/ pow(n,n);
n++;}
while(a > 0.001);}
while( i <= n );
cout« a;
 
return 0;
}
 
И такой:
#include <iostream.h>
#include <math.h>
int main()
{
int n= 1, i, f;
double a= 1.00;
do
{for(i=1; i <= n; i++ )
{n++;
f= f * i;}
a= a + f/pow(n,n);
n++;
}
while( a > 0.001 );
cout« a;
return 0;
}
Добавлено через 2 минуты
вообще запутался
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
09.10.2014, 23:08 7
В знаменателе произведение эн раз по эн - степень, в числителе также произведение эн раз, причём чисел меньших эн - т.е. факториал. Числитель меньше знаменателя, причём с ростом эн знаменатель всё значительнее будет дробить числитель, устремляя член ряда к нулю. Ряд сходится!

Добавлено через 6 минут
Agry, неверно! Так ты даже до десятого члена не успеешь досчитать, т.к. Pow(n,n) это очешуенно большое число, переполняющее любые инты!(n=10) Оптимизируй, чайник!
0
0 / 0 / 0
Регистрация: 09.10.2014
Сообщений: 38
09.10.2014, 23:10  [ТС] 8
как?
0
79 / 79 / 34
Регистрация: 26.10.2011
Сообщений: 220
09.10.2014, 23:14 9
и вправду сходится... у меня получилось, что сумма ряда на шаге 10 равна 1.87926
0
0 / 0 / 0
Регистрация: 09.10.2014
Сообщений: 38
09.10.2014, 23:15  [ТС] 10
можете прислать программу, по которой вы это посчитали?
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
09.10.2014, 23:15 11
Agry, сколько у тебя по алгебре в четверти выходит в оценке?

Подсказка: вычисляй новый член ряда домножением предыдущего, это уже не по программированию задачка. Тут чистая алгебра!
0
0 / 0 / 0
Регистрация: 09.10.2014
Сообщений: 38
09.10.2014, 23:18  [ТС] 12
предыдущий домножается на что?
вообще с этим никогда не сталкивался, ни с рядами, ни с факториалами
0
79 / 79 / 34
Регистрация: 26.10.2011
Сообщений: 220
09.10.2014, 23:32 13
можете прислать программу, по которой вы это посчитали?
не могу вдруг у меня ошибка, лучше сверимся потом... теоретически алгоритм не так просто построить - пользуйся дебагером и промежуточными выводами на экран, поставил брэйкпоинт в цикл и смотришь как у тебя сумма меняется...
0
205 / 181 / 112
Регистрация: 15.03.2014
Сообщений: 392
10.10.2014, 04:29 14
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
#include <iostream>
 
using namespace std;
 
int main() {
 
    const double eps = 0.001;
    int numerator = 1, denominator = 1;
    int counter = 1;
    double current = 1.0, sum = 1.0;
 
    while ( current > eps ) {
 
        numerator *= ++counter;
        denominator = counter;
        for ( int i = 1; i < counter; ++i )
            denominator *= counter;
 
 
        current = static_cast < double >( numerator ) / denominator;
        sum += current;
    }
 
 
    cout << "Количество суммированных элемнтов ряда = " << counter << endl;
    cout << "Сумма ряда = " << sum << endl;
 
    return 0;
}
В данном случае 9 элементов ряда просуммированы и целочисленного ( даже знакового ) типа int ( 32 бит ) для хранения самого большого знаменателя ( 9^9 ) достаточно.
Так как заданная точность невелика, то и элементов просуммировано немного.
1
0 / 0 / 0
Регистрация: 09.10.2014
Сообщений: 38
10.10.2014, 07:52  [ТС] 15
А как это будет выглядеть без static_cast? Нам про это просто еще не говорили
0
205 / 181 / 112
Регистрация: 15.03.2014
Сообщений: 392
10.10.2014, 08:10 16
C++
1
2
3
...
current = ( double )numerator / denominator;
...
0
0 / 0 / 0
Регистрация: 09.10.2014
Сообщений: 38
10.10.2014, 08:12  [ТС] 17
А что означает эта запись? Деление это понятно, а замен double перед делением?
0
205 / 181 / 112
Регистрация: 15.03.2014
Сообщений: 392
10.10.2014, 08:23 18
Это явное приведение типа.
numerator - переменная целочисленного типа
denomenator - также.
В результате частное от двух целочисленных значений будет целочисленным ( 0 в данном случае ).
Потому тут необходимо явное приведение типа.

Вариант с static_cast < double >( numerator ) - в стиле C++.
Второй вариант ( double )numerator / denominator - в стиле C.

Попробуйте убрать явное приведение типа и поглядите что программа выдаст в ответ.
current = numerator / denominator
0
0 / 0 / 0
Регистрация: 09.10.2014
Сообщений: 38
10.10.2014, 08:26  [ТС] 19
Спасибо большое)
0
343 / 343 / 331
Регистрация: 02.10.2014
Сообщений: 666
10.10.2014, 08:42 20
https://www.cyberforum.ru/cgi-bin/latex.cgi?sum = \sum_{k=1}^{n}{a}_{k}
https://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{k+1} = {a}_{k} * {(\frac{k}{k+1})}^{k}
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
#include <iostream>
 
#define EPS 0.00000001
 
int main(){
    
    double a, p, sum;
    int i;
    
    i = 1; 
    a = 1;
    sum = a;
    do{
        p = 1;
        for (int j = 1; j <= i; ++j)
            p *= (i / (i + 1.));
        a *= p;
        sum += a;
        ++i;
    }while(a > EPS);
    
    std::cout << "sum = " << sum << std::endl;
    std::cout << "Ïðîñóììèðîâàíî ÷ëåíîâ ðÿäà: " << i << std::endl;
    
    return 0;
}
0
10.10.2014, 08:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.10.2014, 08:42
Помогаю со студенческими работами здесь

Сумма бесконечного ряда
Дана такая задача. Найти сумму бесконечного ряда с точностью Е где x принадлежит интервалу (-1;1) а...

Сумма бесконечного ряда
Рассчитать сумму членов бесконечного ряда с заданной пользователем точностью E для заданного...

Сумма бесконечного ряда
Поступил в этом году в вуз, а там с первых дней программирование на уровне, мне недоступном. Первые...

Сумма бесконечного ряда с заданной точностью
Написать программу вычисления суммы бесконечного ряда с точностью eps=0.001: ...


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

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