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

Ряды в С++ - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 5.00
marik2012
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 41
05.05.2012, 18:45     Ряды в С++ #1
Найти сумму ряда с точностью E=10^-4, общий член которого An=(n!)/3(n^n)
Оригинал
Знайти суму ряду з точністю E=10^-4, загальний член якого An=(n!)/3(n^n)


Добавлено через 14 минут
вот формула http://www.cyberforum.ru/cgi-bin/latex.cgi?n!\div 3{n}^{n}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2012, 18:45     Ряды в С++
Посмотрите здесь:

ряды в С++ C++
C++ Ряды
ряды C++
C++ ряды
C++ Ряды
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1783
Регистрация: 18.12.2011
Сообщений: 14,175
Завершенные тесты: 1
05.05.2012, 19:11     Ряды в С++ #2
Что-то я не могу найти красивого рекуррентного соотношения A(n+1)=f(An),
т.к. (n+1)^(n+1) надо раскрывать через бином Ньютона.
Предлагаю такой вариант (конечно не оптимальный):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int pown(int n)
{
    int t=1;
    for(int i=1;i<=n;i++)
       t*=n;
    return t;
}
 
double sum(double eps)
{
    double an,s;
    int n;
    an=1./3.;
    s=an;
    n=2;
    while(an>eps)
    {
        an=an*n*pown(n-1)/pown(n);
        s+=an;
        n++;
    }
    return s;
}
marik2012
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 41
05.05.2012, 19:22  [ТС]     Ряды в С++ #3
Желательно через while бы
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1783
Регистрация: 18.12.2011
Сообщений: 14,175
Завершенные тесты: 1
05.05.2012, 19:28     Ряды в С++ #4
А я Вам через что сделал (16 строка)?
gGrn-7DA
мну довольно <(-__-)l
 Аватар для gGrn-7DA
203 / 192 / 1
Регистрация: 17.01.2010
Сообщений: 2,391
Завершенные тесты: 1
05.05.2012, 20:04     Ряды в С++ #5
(n+1)^(n+1)/n^n в пределе имеет e*(n+1).
http://ru.wikipedia.org/wiki/Замечательные_пределы
Ну и предел A(n+1)/A(n)=1/e

Но эти формулы точны только при больших n...
Для наглядности. Погрешность при n=1000 достаточно большая
http://www.google.ru/search?q=e-(1001/1000)^1000
marik2012
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 41
05.05.2012, 21:05  [ТС]     Ряды в С++ #6
хотелось бы увидеть реализацию программы при маленьких n.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
05.05.2012, 22:24     Ряды в С++ #7
Цитата Сообщение от marik2012 Посмотреть сообщение
хотелось бы
 Комментарий модератора 
Хотелось бы от Вас увидить здравый смысл:
1. Форум с доменом .ru по-любому только русскоязычный.
2. Тема и так находится в разделе С++. Зачем ещё и к названию лепить язык!?
Следующая ваша тема с заданием на украинском языке просто будет удалена!
gGrn-7DA
мну довольно <(-__-)l
 Аватар для gGrn-7DA
203 / 192 / 1
Регистрация: 17.01.2010
Сообщений: 2,391
Завершенные тесты: 1
06.05.2012, 10:43     Ряды в С++ #8
Цитата Сообщение от marik2012 Посмотреть сообщение
реализацию программы при маленьких n.
выше пост с кодом и есть реализация.
marik2012
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 41
14.05.2012, 21:50  [ТС]     Ряды в С++ #9
пишет что ошибка в 4 строке, может быть кто-то предложит другую реализацию?
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1783
Регистрация: 18.12.2011
Сообщений: 14,175
Завершенные тесты: 1
14.05.2012, 22:03     Ряды в С++ #10
Цитата Сообщение от marik2012 Посмотреть сообщение
пишет что ошибка в 4 строке, может быть кто-то предложит другую реализацию?
Компилируйте компилятором С++, а не С
(если используете MS VC, то расширение файла должно быть .cpp)
marik2012
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 41
14.05.2012, 22:09  [ТС]     Ряды в С++ #11
использую dev.cpp
gGrn-7DA
мну довольно <(-__-)l
 Аватар для gGrn-7DA
203 / 192 / 1
Регистрация: 17.01.2010
Сообщений: 2,391
Завершенные тесты: 1
14.05.2012, 22:52     Ряды в С++ #12
замени код функции.
C
1
2
3
4
5
6
7
8
int pown(int n)
{
    int t=1;
    int i;
    for(i=1;i<=n;i++)
       t*=n;
    return t;
}
еще есть вариант с использованием флага -std=c99 при компиляции
marik2012
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 41
19.05.2012, 08:17  [ТС]     Ряды в С++ #13
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>
#include <cmath>
using namespace std;
long factorial(int n);
int main()
{
double eps=1.0e-4; //точность расчета
    int n=1;
    double a;
    double s=0;
 
do
{
    a=factorial(n)/3*pow(n,n);
    s+=a;
    n++;
}while(a>=eps);
cout<<"s="<<s<<endl;
 
    return 0;
}
 
long factorial(int n)
{
    long f=1;
    for(int i=1; i<=n;i++)
        f*=i;
    return f;
}
подскажите правильно ли написал, если нет то исправьте ошибки.

Добавлено через 7 часов 1 минуту
но мне что-то не нравиться то что выводит на екран.
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1783
Регистрация: 18.12.2011
Сообщений: 14,175
Завершенные тесты: 1
19.05.2012, 15:26     Ряды в С++ #14
я написал рекуррентное вычисление члена ряда
a=a*n*pown(n-1)/pown(n);
чем оно Вам не понравилось?
А Ваша формула
a=factorial(n)/3*pow(n,n);
неверна (pow(n,n) - попало в числитель).
marik2012
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 41
19.05.2012, 17:06  [ТС]     Ряды в С++ #15
в таком виде программа не работает.
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
#include<iostream>
using namespace std;
 
int main()
{
int pown(int n)
 
 
{
    int t=1;
    for(int i=1;i<=n;i++)
       t*=n;
    return t;
}
 
double sum(double eps)
{
    double an,s;
    int n;
    an=1./3.;
    s=an;
    n=2;
    while(an>eps)
    {
        an=an*n*pown(n-1)/pown(n);
        s+=an;
        n++;
    }
    return s;
}
}
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1783
Регистрация: 18.12.2011
Сообщений: 14,175
Завершенные тесты: 1
19.05.2012, 17:30     Ряды в С++ #16
Функции не вставляют внутрь других функций
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 pown(int n)
{
    int t=1;
    for(int i=1;i<=n;i++)
       t*=n;
    return t;
}
 
double sum(double eps)
{
    double an,s;
    int n;
    an=1./3.;
    s=an;
    n=2;
    while(an>eps)
    {
        an=an*n*pown(n-1)/pown(n);
        s+=an;
        n++;
    }
    return s;
}
int main()
{
   cout<<sum(1e-6);
}
marik2012
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 41
20.05.2012, 11:43  [ТС]     Ряды в С++ #17
C:\Users\Admin\Desktop\1.cpp(29) : warning C4508: 'main' : function should return a value; 'void' return type assumed

1.obj - 0 error(s), 1 warning(s)
с++ 6.0 выдает такую ошибку.
gGrn-7DA
мну довольно <(-__-)l
 Аватар для gGrn-7DA
203 / 192 / 1
Регистрация: 17.01.2010
Сообщений: 2,391
Завершенные тесты: 1
20.05.2012, 11:51     Ряды в С++ #18
в конец main добавь
C++
1
return 0;
marik2012
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 41
20.05.2012, 12:04  [ТС]     Ряды в С++ #19
выводит такой результат 3,50491e-005 это точность какая?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2012, 12:34     Ряды в С++
Еще ссылки по теме:

ряды C++
Ряды C++
Ряды C++

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

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1783
Регистрация: 18.12.2011
Сообщений: 14,175
Завершенные тесты: 1
20.05.2012, 12:34     Ряды в С++ #20
замените функцию pow на такую
C++
1
2
3
4
5
6
7
double pown(int n)
{
   double t=1;
    for(int i=1;i<=n;i++)
       t*=n;
    return t;
}
Была ошибка - переполнение разрядной сетки.
Yandex
Объявления
20.05.2012, 12:34     Ряды в С++
Ответ Создать тему
Опции темы

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