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

Ряды в С++

05.05.2012, 18:45. Показов 13204. Ответов 25
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Найти сумму ряда с точностью E=10^-4, общий член которого An=(n!)/3(n^n)
Оригинал
Знайти суму ряду з точністю E=10^-4, загальний член якого An=(n!)/3(n^n)


Добавлено через 14 минут
вот формула https://www.cyberforum.ru/cgi-bin/latex.cgi?n!\div 3{n}^{n}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2012, 18:45
Ответы с готовыми решениями:

Ряды
Помогите пожалуйста написать программу. Напишите программу, которая выводит на экран сообщение в...

Ряды
Для заданного ряда необходимо: 1) Найти сумму S1 для n первых элементов ряда (с использованием...

Ряды
Помогите с рядами , новичок в с++.

ряды
помогите плиз. нужно создать ряд s=1+1/4+1/9+1/25... по какой формуле это можно сделать?

25
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
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;
}
1
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 41
05.05.2012, 19:22  [ТС] 3
Желательно через while бы
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
05.05.2012, 19:28 4
А я Вам через что сделал (16 строка)?
0
мну довольно <(-__-)l
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
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
0
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 41
05.05.2012, 21:05  [ТС] 6
хотелось бы увидеть реализацию программы при маленьких n.
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
05.05.2012, 22:24 7
Цитата Сообщение от marik2012 Посмотреть сообщение
хотелось бы
 Комментарий модератора 
Хотелось бы от Вас увидить здравый смысл:
1. Форум с доменом .ru по-любому только русскоязычный.
2. Тема и так находится в разделе С++. Зачем ещё и к названию лепить язык!?
Следующая ваша тема с заданием на украинском языке просто будет удалена!
0
мну довольно <(-__-)l
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
06.05.2012, 10:43 8
Цитата Сообщение от marik2012 Посмотреть сообщение
реализацию программы при маленьких n.
выше пост с кодом и есть реализация.
0
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 41
14.05.2012, 21:50  [ТС] 9
пишет что ошибка в 4 строке, может быть кто-то предложит другую реализацию?
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
14.05.2012, 22:03 10
Цитата Сообщение от marik2012 Посмотреть сообщение
пишет что ошибка в 4 строке, может быть кто-то предложит другую реализацию?
Компилируйте компилятором С++, а не С
(если используете MS VC, то расширение файла должно быть .cpp)
0
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 41
14.05.2012, 22:09  [ТС] 11
использую dev.cpp
0
мну довольно <(-__-)l
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
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 при компиляции
0
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 минуту
но мне что-то не нравиться то что выводит на екран.
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
19.05.2012, 15:26 14
я написал рекуррентное вычисление члена ряда
a=a*n*pown(n-1)/pown(n);
чем оно Вам не понравилось?
А Ваша формула
a=factorial(n)/3*pow(n,n);
неверна (pow(n,n) - попало в числитель).
0
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;
}
}
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
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);
}
2
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 выдает такую ошибку.
0
мну довольно <(-__-)l
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
20.05.2012, 11:51 18
в конец main добавь
C++
1
return 0;
1
0 / 0 / 0
Регистрация: 05.05.2012
Сообщений: 41
20.05.2012, 12:04  [ТС] 19
выводит такой результат 3,50491e-005 это точность какая?
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
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;
}
Была ошибка - переполнение разрядной сетки.
1
20.05.2012, 12:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2012, 12:34
Помогаю со студенческими работами здесь

ряды
помогите плиз, как создать ряд из чисел кратных 7 ?

Ряды
Помогите плиз с прогой,если не трудно её полный текст ∑(от n=1 до бесконечности) n/(3n-1)

ряды в С++
помогите вот прога а при нажатии ctrl+F9 и вводе любой цифры выдается мусор вот прога: ...

ряды
дано натуральное число n. Вычислить P=(1-1/2)*(1-1/4)*(1-1/6)...(1-1/2*n)


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

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