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

Сумма ряда - C++

Восстановить пароль Регистрация
 
hello_world
3 / 3 / 4
Регистрация: 17.01.2011
Сообщений: 41
05.10.2011, 21:22     Сумма ряда #1
Вычислить сумму ряда:
Сумма ряда
С точностью до члена ряда меньшего 10^-6.
Для определения текущего члена ряда использовать рекуррентную формулу.

 Комментарий модератора 
Прикрепляйте картинки к сообщениям.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.10.2011, 21:22     Сумма ряда
Посмотрите здесь:

C++ сумма ряда
Сумма ряда C++
Сумма ряда C++
C++ сумма ряда
C++ Сумма ряда
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
05.10.2011, 22:13     Сумма ряда #2
Цитата Сообщение от hello_world Посмотреть сообщение
Вычислить сумму ряда:
http://i073.***********/1110/cb/73636d157568.jpg
С точностью до члена ряда меньшего 10^-6.
Для определения текущего члена ряда использовать рекуррентную формулу.
Вот что у меня получилось
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
#include <iostream>
#include <cmath>
#include <conio.h>
using namespace std;
 
double SeqElement(double x, long n, long i)
{
    double ret = pow(x,n);
    if(0 < i)
    if(i < n)
        ret = pow(x,1.0*(n - i))/(i + 1);
    else
        ret = (x - (n - i))/(n + (i - n));
    return ret;
}
 
 
int main()
{
    long i,n;
    double x,e,sum,buf;
    do
    {
        std::cout<<"Enter x : ";std::cin>>x;
        std::cout<<"Enter n : ";std::cin>>n;
        std::cout<<"Enter e (for example 0.000001) :";std::cin>>e;
        i = 0;sum = 0;//Обнулили счётчик єлементов и сумму
        //Я пишу в старой версии студии в 10-ке вместо fabs нужно писать abs
        while(e < fabs((buf = SeqElement(x, n, i)) - SeqElement(x, n, i + 1)))
        {
            //Цикл продолжается до пока i-ый элемент больше заданой погрешности
            sum += buf;
            i++;
        }
        std::cout<<"S = "<<sum<<"\r\n";
        std::cout<<"Press Y for new input\r\n";
    }
    while(toupper(getch()) == 'Y');
    return 0;
}
Миниатюры
Сумма ряда  
hello_world
3 / 3 / 4
Регистрация: 17.01.2011
Сообщений: 41
05.10.2011, 22:31  [ТС]     Сумма ряда #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
#include <iostream>
#include <cmath>
#include <conio.h>
using namespace std;
 
double SeqElement(double x, long n, long i)
{
    double ret = pow(x,n);
    if(0 < i)
    if(i < n)
        ret = pow(x,1.0*(n - i))/(i + 1);
    else
        ret = (x - (n - i))/(n + (i - n));
    return ret;
}
 
 
int main()
{
    long i,n;
    double x,e,sum,buf;
    do
    {
        std::cout<<"Enter x : ";std::cin>>x;
        std::cout<<"Enter n : ";std::cin>>n;
        std::cout<<"Enter e (for example 0.000001) :";std::cin>>e;
        i = 0;sum = 0;//Обнулили счётчик єлементов и сумму
        //Я пишу в старой версии студии в 10-ке вместо fabs нужно писать abs
        while(e < fabs((buf = SeqElement(x, n, i)) - SeqElement(x, n, i + 1)))
        {
            //Цикл продолжается до пока i-ый элемент больше заданой погрешности
            sum += buf;
            i++;
        }
        std::cout<<"S = "<<sum<<"\r\n";
        std::cout<<"Press Y for new input\r\n";
    }
    while(toupper(getch()) == 'Y');
    return 0;
}
в паскаль кста перевести не сможешь?
-=ЮрА=-
05.10.2011, 22:39
  #4

Не по теме:

Цитата Сообщение от hello_world Посмотреть сообщение
в паскаль кста перевести не сможешь?
- к сожелению я не знаком с Pascal

hello_world
3 / 3 / 4
Регистрация: 17.01.2011
Сообщений: 41
05.10.2011, 22:59  [ТС]     Сумма ряда #5
Вот эту функцию сможешь прокомментировать?
C++
1
2
3
4
5
6
7
8
9
10
double SeqElement(double x, long n, long i)
{
        double ret = pow(x,n);
        if(0 < i)
        if(i < n)
                ret = pow(x,1.0*(n - i))/(i + 1);
        else
                ret = (x - (n - i))/(n + (i - n));
        return ret;
}
-=ЮрА=-
Заблокирован
Автор FAQ
06.10.2011, 09:36     Сумма ряда #6
Цитата Сообщение от hello_world Посмотреть сообщение
Вот эту функцию сможешь прокомментировать?
Да конечно. Введём обозаначение E[i] - i-ый элемент ряда.
Тогда искомую сумму можем записать так
S = E[0] + E[1] + E[2] + ... + E[n] + E[n + 1] + E[n + 2] + ...
E[0] = x^n -
Цитата Сообщение от hello_world Посмотреть сообщение
double ret = pow(x,n);
E[1] = x^(n - 1)/2 - x(n - i)/(i + 1)
Цитата Сообщение от hello_world Посмотреть сообщение
ret = pow(x,1.0*(n - i))/(i + 1);
E[n] = x^/n
E[n + 1] = (x - 1)/(n + 1)
Цитата Сообщение от hello_world Посмотреть сообщение
ret = (x - (n - i))/(n + (i - n));
Данная функция
Цитата Сообщение от hello_world Посмотреть сообщение
double SeqElement(double x, long n, long i)
и возвращает элемент ряда в зависимости от i. Условием окончания итерационного процесса является |E[i + 1] - E[i]| < e
Цитата Сообщение от hello_world Посмотреть сообщение
e < fabs((buf = SeqElement(x, n, i)) - SeqElement(x, n, i + 1))
Правда я формулу перевернул |E[i] - E[i + 1]| < e, но сути это не изменит мы всё равно модуль находим
Yandex
Объявления
06.10.2011, 09:36     Сумма ряда
Ответ Создать тему
Опции темы

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