Форум программистов, компьютерный форум CyberForum.ru

Найти сумму ряда с заданной точностью = 10 - C++

Восстановить пароль Регистрация
 
referent
1 / 1 / 0
Регистрация: 24.04.2014
Сообщений: 36
27.04.2014, 21:46     Найти сумму ряда с заданной точностью = 10 #1
Народ, что-то не пойму, что имеется в виду:
Найти сумму ряда с точностью =10, общий член которого а=2*n!/(3n)!
Как определяется и проверяется точность в коде?

Добавлено через 56 минут
Народ, как написать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vikichocolated
4 / 4 / 0
Регистрация: 14.04.2014
Сообщений: 60
27.04.2014, 21:50     Найти сумму ряда с заданной точностью = 10 #2
Пусть S- это Ваша сумма. Имеем два элемента n-й и (n+1)-й. Ваша задача в том, чтобы
|S(n+1) - S(n)| <= точность
referent
1 / 1 / 0
Регистрация: 24.04.2014
Сообщений: 36
27.04.2014, 22:32  [ТС]     Найти сумму ряда с заданной точностью = 10 #3
Цитата Сообщение от vikichocolated Посмотреть сообщение
Пусть S- это Ваша сумма
Я не пойму, как циклы будут выглядеть. Откуда и покуда считать сумму?

Добавлено через 38 минут
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
#define _USE_MATH_DEFINES
#include <cmath>
 
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
int factorial(int n)
{
    return (n == 1 || n == 0) ? 1 : factorial(n - 1) * n;
}
 
double Sum(double accuracy, double n)
{
    double sum = 0, current = 0, previous = 0;
 
    do {
        previous = current;
        current = 2 * factorial(n) / factorial(3 * n);
        sum += current;
    } while (abs(current - previous) > 10);
    
    return sum;
}
 
int main()
{
    double n;
    cin >> n;
    cout << Sum(10, n);
    return 0;
}
так не работает
nmcf
4299 / 3720 / 1253
Регистрация: 14.04.2014
Сообщений: 14,551
27.04.2014, 22:45     Найти сумму ряда с заданной точностью = 10 #4
n не может вводиться заранее, тебе надо просто суммировать ряд пока не выполнится условие точности.
Instigator
 Аватар для Instigator
2 / 2 / 1
Регистрация: 26.04.2014
Сообщений: 12
27.04.2014, 23:08     Найти сумму ряда с заданной точностью = 10 #5
Каждый новый член ряда должен превышать заданную точность.

C++
1
2
3
4
5
6
7
8
9
10
double Sum(double accuracy, [зачёркнуто] double n[/зачёркнуто])
{
    double sum = 0, current = 0;
    for (int n = 1; abs(current) > accuracy; n++)
    {
        current = 2 * factorial(n) / factorial(3 *-n);
        sum += current;
    }
    return sum;
}

А, стоп. При n, стремящейся к бесконечности, каждый новый член А n стремится к нулю. Так что точность явно не десять.
referent
1 / 1 / 0
Регистрация: 24.04.2014
Сообщений: 36
27.04.2014, 23:30  [ТС]     Найти сумму ряда с заданной точностью = 10 #6
Instigator, меня это тоже как-то смутило. Возможно, ошибка в записи.

Добавлено через 2 минуты
Но при любой точности выводит 0
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
#include <cmath>
#include <iostream>
 
using namespace std;
 
int factorial(int n)
{
    return (n == 1 || n == 0) ? 1 : factorial(n - 1) * n;
}
 
double Sum(double accuracy)
{
    double sum = 0, current = 0;
 
    for (int n = 1; abs(current) > accuracy; n++) {
        current = 2 * factorial(n) / factorial(3*-n);
        sum += current;
     
    }
    return sum;
}
 
int main()
{
    cout << Sum(0.01);
    return 0;
}
Instigator
 Аватар для Instigator
2 / 2 / 1
Регистрация: 26.04.2014
Сообщений: 12
28.04.2014, 00:16     Найти сумму ряда с заданной точностью = 10 #7
referent,
Ах да, забыл указать, что начальное значение current'a должно быть больше accuracy. Можно написать просто
C++
1
double sum = 0, current = accuracy+1
И ещё в формуле появился минус, смотри:
C++
1
current = 2 * factorial(n) / factorial(3*-n);
referent
1 / 1 / 0
Регистрация: 24.04.2014
Сообщений: 36
28.04.2014, 09:28  [ТС]     Найти сумму ряда с заданной точностью = 10 #8
Instigator, я, конечно, дико извиняюсь, но все равно не работает.

Добавлено через 2 часа 38 минут
Ну народ, кто может помочь? У меня проект по андроиду горит, а я сижу над элементарной, скорее всего задачей.
Instigator
 Аватар для Instigator
2 / 2 / 1
Регистрация: 26.04.2014
Сообщений: 12
28.04.2014, 10:36     Найти сумму ряда с заданной точностью = 10 #9
Плюнул, написал сам - всё работает. И с теми значениями, что ты последний раз подставлял.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream.h>
#include <cmath>
 
void main ()
{
      double accuracy;
      cout << "accuracy = ";
      cin >> accuracy;
      double current = accuracy + 1;
      double sum = 0;
      double fact = 1;
      double fact3 = 1; 
      for (int n = 1; current < accuracy; n++)
      {
              fact = fact*n;
              fact3 = 3*fact3*n;
              current = 2*fact/fact3;
              sum += current;
      }
      cout << "/nSum (" << n << ") = " << sum << "/n/n";
}
Добавлено через 4 минуты
Кстати, если так любишь английские имена, то правильнее было бы использовать "precision" c:
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
28.04.2014, 10:37     Найти сумму ряда с заданной точностью = 10 #10
Instigator, цикл же никогда не выполняется да и вообще эта программа не компилируется.
Instigator
 Аватар для Instigator
2 / 2 / 1
Регистрация: 26.04.2014
Сообщений: 12
28.04.2014, 10:49     Найти сумму ряда с заданной точностью = 10 #11
fasked,
С радостью бы приложил скрин с работающей программой, но на компе пока проблемы с интернетом.
P.S. Делал в visual studio 6.0
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
28.04.2014, 11:01     Найти сумму ряда с заданной точностью = 10 #12
Instigator, зачем же скрин, тут и так видно:
C++
1
2
      double current = accuracy + 1;
      for (int n = 1; current < accuracy; n++)
что current заведомо больше accuracy.
Instigator
 Аватар для Instigator
2 / 2 / 1
Регистрация: 26.04.2014
Сообщений: 12
28.04.2014, 11:05     Найти сумму ряда с заданной точностью = 10 #13
Ах да, случайно поставил знак "меньше" - писал вручную с телефона.
Instigator
 Аватар для Instigator
2 / 2 / 1
Регистрация: 26.04.2014
Сообщений: 12
28.04.2014, 11:11     Найти сумму ряда с заданной точностью = 10 #14
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream.h>
#include <cmath>
 
void main ()
{
    double accuracy;
    cout << "accuracy = ";
    cin >> accuracy;
    double current = accuracy + 1;
    double sum = 0;
    double fact = 1;
    double fact3 = 1; 
    for (int n = 1; current > accuracy; n++)
    {
        fact = fact*n;
        fact3 = 3*fact3*n;
        current = 2*fact/fact3;
        sum += current;
    }
    cout << "\nSum (" << n << ") = " << sum << "\n\n";
}
Найти сумму ряда с заданной точностью = 10
referent
1 / 1 / 0
Регистрация: 24.04.2014
Сообщений: 36
28.04.2014, 11:12  [ТС]     Найти сумму ряда с заданной точностью = 10 #15
Instigator, в общем, окончательный код должен выглядеть вот так:
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>
#include <cmath>
 
using namespace std;
 
int main()
{
    double accuracy;
    cout << "accuracy = ";
    cin >> accuracy;
    double current = accuracy + 1;
    double sum = 0;
    double fact = 1;
    double fact3 = 1;
    int n;
    for (n = 1; current > accuracy; n++)
    {
        fact = fact*n;
        fact3 = 3 * fact3*n;
        current = 2 * fact / fact3;
        sum += current;
    }
    cout << "\nSum (" << n << ") = " << sum << "\n\n";
    system("pause");
    return 0;
}
да?
З. Ы: студия 2013 не дает вывести итератор цикла n
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2014, 14:34     Найти сумму ряда с заданной точностью = 10
Еще ссылки по теме:

Найти сумму ряда с заданной точностью C++
C++ Найти сумму ряда с заданной точностью
C++ Найти сумму ряда с заданной точностью

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

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,178
Завершенные тесты: 1
28.04.2014, 14:34     Найти сумму ряда с заданной точностью = 10 #16
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
double Sum(double eps)
{
    double s,an;
    int n;
    n=1;
    an=1.0/3.0;// a1=(2*1!)/(3!)
    s=0;
    while(fabs(an)>eps)
    {
         s+=an;
         n++;
         an*=(n+1.0)/( (3.*n+1.0)*(3.*n+2.0)*(3.*n+3.0)); 
    }
    return s;
}
в строке 12 пересчитываем http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{n+1} через http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{n}
Yandex
Объявления
28.04.2014, 14:34     Найти сумму ряда с заданной точностью = 10
Ответ Создать тему
Опции темы

Текущее время: 12:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru