0 / 0 / 0
Регистрация: 03.05.2017
Сообщений: 16
1

Сумма ряда: Программа выдает пустую консоль. Как решить проблему?

06.06.2017, 22:51. Показов 866. Ответов 4
Метки нет (Все метки)

Доброго времени суток. Написан код для вычисления суммы бесконечного ряда. Ряд выглядит следующим образом:
https://www.cyberforum.ru/cgi-bin/latex.cgi?{(-1)}^{n+1}\frac{{2}^{2n-1}}{(4n-3)!!}
Он является сходящимся, ибо факториал в знаменателе растет быстрее, чем степенная функция в числителе.
Программа выдает пустую консоль. Как решить проблему? Вот код:
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
#include <iostream>
#include <math.h>
using namespace std;
 
int fact(int n) //Функция, которая считает двойной факториал.
{
    int f=1;
    if(n%2==0)
    {
       for(int i=2; i<=n; i+=2)
       {
           f*=i;
       }
    }
    else
    {
        for(int i=1; i<=n; i+=2)
       {
           f*=i;
       }
    }
    return f;
}
 
void ryad(double eps) // Функция, считающая сумму бесконечного ряда
{
    double row, w=1.2, k=1, sum = 0;
    row=pow(-1,k+1)*(pow(w,2*k-1))/(fact(4*k-3)); // сам ряд, в знаменателе вызывается функция, считающая двойной факториал
   do
    {
        sum += row;
        k++;
    }
    while(fabs(sum)> eps);
    cout << sum << endl;
}
 
int main()
{
    double eps = 0.001;
    ryad(eps); //Вызываю функцию, которая считает ряд.
    return 0;
}
Функция, которая считает факториал, взята отсюда.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.06.2017, 22:51
Ответы с готовыми решениями:

Выдает пустую консоль без программы, в чем ошибка?
в чем ошибка этой программы? #include &quot;stdafx.h&quot; #include &lt;time.h&gt; #include &lt;stdio.h&gt; #include...

Как решить проблему загрузки
Зараннее прошу прощения за свое изложение! Помогите плиз! Суть проблемы: при загрузке ноута после...

Как решить проблему с кодировкой
Отправляю сообщение на русском языке. Приходят на почту одни знаки ???? С английским все...

_debugger_hook_dummy = 0 - как решить эту проблему
У меня программа нормально работает в debug режиме, но в release выдает такую ошибку void __cdecl...

4
Диссидент
Эксперт C
26822 / 16731 / 3666
Регистрация: 24.12.2010
Сообщений: 37,448
07.06.2017, 00:00 2
Первое что увидел
C++
1
2
3
4
5
6
7
   do
    {
        row=pow(-1,k+1)*(pow(w,2*k-1))/(fact(4*k-3)); // 
        sum += row;
        k++;
    }
    while(fabs(row)> eps);
А вообще-то все весьма глупо... Ряды считаются не так. Особенно с факториалами в знаменателе...
Цитата Сообщение от Friday n Посмотреть сообщение
Функция, которая считает факториал, взята отсюда.
Больно смотреть
C++
1
2
3
4
5
6
7
8
9
int fact(int n) //Функция, которая считает двойной факториал.
{
    int f=1;
    for(int i=(n%2) ? 1 : 2; i<=n; i+=2)
       {
           f*=i;
       }
    return f;
}
Добавлено через 2 минуты
А еще проще
C++
1
2
3
4
5
6
7
8
int fact(int n)
{ int f =1;
   while (n>1) {
     f *= n;
     n -= 2;
  } 
  return f;
}
0
0 / 0 / 0
Регистрация: 03.05.2017
Сообщений: 16
07.06.2017, 01:17  [ТС] 3
помогло отчасти. Проблема осталась в том, что если я возьму w>3, или где то в этой области, программа перестает считать. То есть w=1.2 считает, w=1.3, 1.4, ... 2.7, 2.8 считает, а дальше - нет, выдает пустую консоль. Но ведь ряд будет сходиться даже при очень больших w.
0
Модератор
Эксперт С++
12062 / 9748 / 5896
Регистрация: 18.12.2011
Сообщений: 26,170
07.06.2017, 08:08 4
Friday n, факториалы в таких задачах явно не считаются!
почему бы Вам не ознакомиться с
Вычисление функций разложением в ряд Тейлора
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
07.06.2017, 10:55 5
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
#include "stdafx.h"
#include <iostream>
#include <cmath>
 
int main()
{
    double eps = 0.0001;
    double row;
    double summ = 0.;
    double t = 1.;
    int n = 1;
    int N = 2, T = 1;
 
    do {
        row = t * N /  T;
        summ += row;
        t = -t;
        N *= 4;
        n++;
        T *= (4*n - 3)*(4*n - 5);
        std::cout << " row = " << row << std::endl;
    } while (abs(row) > eps);
    std::cout << " summ = " << summ << std::endl;
    system ("pause");
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.06.2017, 10:55
Помогаю со студенческими работами здесь

Как решить проблему с установкой BeautifulSoup
привет всем подскажите как решить проблему с установкой BeautifulSoup выскакивает вот такая...

Как решить проблему поиска в поле?
Как решить проблему поиска в поле? Есть таблица «Sety» в которой есть поле «IDUlica». Код в...

Как решить проблему с выводом на печать
Необходимо при исполненни запроса на добавление в таблицу, при сохранении строки в таблице...

Подскажите как решить проблему. Непонятные ссылки
Приветствую!) Зайдя в веб мастер &quot;Яндекса&quot; в разделе Исключенные страницы - По типу увидел: ...

Как возможно решить проблему переполнения переменных?
program bacterii; {$APPTYPE CONSOLE} uses SysUtils,windows; var a,b,n,i:integer;

подскажите плиз как решить эту проблему
здравствуйте у меня виндовс 7 , проблема в том, что нету звука.. точнее музыка ииграет, а самого...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru