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

Бесконечные суммы - C++

Восстановить пароль Регистрация
 
olhov94
0 / 0 / 0
Регистрация: 05.01.2012
Сообщений: 34
07.03.2012, 03:07     Бесконечные суммы #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
#include <iostream.h>
#include <iomanip.h>
#include <cmath>
int main()
{
    int i;
    double r, memb;
    i = 0;
    r = 0;
    memb = static_cast<float>(1)/(3i-2)*(3i+1);
 
    cout << setprecision(10) << setiosflags(ios::fixed |
          ios::showpoint);
    do
    {
     r += memb;
memb = static_cast<float>(1)/(3i-2)*(3i+1);
 
    i++;
    } while (fabs(memb) >= 0.05);
     cout << "Rezultat s tochnostyu do eps = 0.05: "
       << r << endl;
}
Помогите написать программу.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
golatin
259 / 216 / 38
Регистрация: 12.10.2011
Сообщений: 311
Завершенные тесты: 1
07.03.2012, 11:23     Бесконечные суммы #2
http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{1}{1*4}+\frac{1}{4*7}+...+\frac{1}{(3n-2)*(3n+1)}+...=\frac{1}{3}*(\frac{1}{1}-\frac{1}{4})+\frac{1}{3}*(\frac{1}{4}-\frac{1}{7})+...+\frac{1}{3}*(\frac{1}{3n-2}-\frac{1}{3n+1})+...=\frac{1}{3}*(1-\frac{1}{4}+\frac{1}{4}-\frac{1}{7}+\frac{1}{7}-...)=\frac{1}{3}(1+0+0+0+...)=\frac{1}{3}
C
1
2
3
4
5
#include <iostream>
int main()
{
std::cout<<1.0/3;
}
-=ЮрА=-
Заблокирован
Автор FAQ
07.03.2012, 13:58     Бесконечные суммы #3
olhov94, прочитайте http://www.cyberforum.ru/faq/thread4...ml#post2452211
кроме теории там код и уже некоторые выполненные на форуме сходные с вашим задания...

Добавлено через 2 минуты

Не по теме:

PS:golatin, а если с точностью до 1/20 сумму находить, точно 1/3 получится???

-=ЮрА=-
Заблокирован
Автор FAQ
07.03.2012, 14:18     Бесконечные суммы #4
Итак 2 варианта решения без итератора и с итератором
Вариант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
24
25
26
27
28
29
#include <iostream>
#include <cmath>
using namespace std;
 
double an(unsigned long n)
{
        double ret = 1.0/((3*n - 2)*(3*n + 1));
        return ret;
}
 
int main()
{
        double err = 0;
        double sum = 0;
        double _an = 0;
        unsigned long i;
        while(true)
        {
                cout<<"Enter err : ";cin>>err;
                for(sum = 0, _an = an(i = 1);err < fabs(_an);i++)
                {
                        sum += _an;
                        _an = an(i + 1);
                }
                cout<<"sum = "<<sum<<endl;
                cout<<"iteration : "<<i<<endl;
        }
        return 0;
}
Код
Enter err : 0.05
sum = 0.25
iteration : 2
Enter err : 0.0005
sum = 0.326087
iteration : 16
Enter err : 0.00000005
sum = 0.333259
iteration : 1491
Enter err :
-=ЮрА=-
Заблокирован
Автор FAQ
07.03.2012, 15:13     Бесконечные суммы #5
Хоть данное задание проще считать без итератора всё таки выведем и его
http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{n} = \frac{1}{(3*n - 2)*(3*n + 1)}
http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{n + 1} = \frac{1}{(3*n + 1)*(3*n + 4)}
Вот наш итератор (корявый конечно, но ничего не поделаешь)
http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{{a}_{n + 1}}{{a}_{n}} = \frac{(3*n - 2)*(3*n + 1)}{(3*n + 1)*(3*n + 4)} = \frac{(3*n - 2)}{(3*n + 4)}

Вариант с итератором
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    double err = 0;
    double sum = 0;
    double _an = 0;
    unsigned long i;
    while(true)
    {
        cout<<"Enter err : ";cin>>err;
        for(sum = 0, i = 1, _an = 1.0/4;err < fabs(_an);i++)
        {
            sum += _an;
            _an *= (3*i - 2.0)/(3*i + 4.0);
        }
        cout<<"sum = "<<sum<<endl;
        cout<<"iteration : "<<i<<endl;
    }
    return 0;
}
Отработка
Enter err : 0.05
sum = 0.25
iteration : 2
Enter err : 0.00005
sum = 0.330986
iteration : 48
Enter err : 0.0000005
sum = 0.333098
iteration : 472
Enter err :

Добавлено через 3 минуты

Не по теме:

easybudda, больше спасибо что указал на мой просчёт!

olhov94
0 / 0 / 0
Регистрация: 05.01.2012
Сообщений: 34
07.03.2012, 17:38  [ТС]     Бесконечные суммы #6
Спасибо за помощь
Yandex
Объявления
07.03.2012, 17:38     Бесконечные суммы
Ответ Создать тему
Опции темы

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