Страницы

понедельник, 28 апреля 2014 г.

Вычисление суммы ряда С++

Вычислим сумму бесконечного сходящегося ряда. Суммирование нужно прекратить при появлении в сумме слагаемых, имеющих абсолютную величину, меньшую заданной погрешности d. Значение d задается пользователем.
Возьмем, к примеру, ряд


Самый простой вариант решения – в цикле считать сумму (с учетом знака слагаемых), пока член ряда не станет меньше последовательности.
Запрашиваем у пользователя значение погрешности и аргумента функции. При этом нужно учитывать, что аргумент не может быть равен нулю. Поэтому используем дополнительный цикл с постусловием, пока пользователь не введет другое значение.
Затем считаем первый член ряда, потом переходим к циклу расчетов.
Текст программы:

//программа расчета суммы ряда
//погрешность и аргумент задаются пользователем

#include <iostream.h>
#include <math.h>

int main()
{
    double d, dArg, dSumma=0.0;
    cout<<"Программа расчета суммы сходящегося ряда\n"
        <<"S=1/tg(x)-1/tg(2x)+1/tg(3x)-...\n";
    do
    {    cout<<"Введите погрешность d: ";}
    while(!(cin>>d));
    cout<<"\nВведите аргумент функции: ";
    cin>>dArg;
    while(dArg==0)
    {
        cout<<"\nВведите аргумент функции: ";
        cin>>dArg;
    }
    int number=1;
    double dCount=1/tan(number*dArg);
    cout<<"Сумма ряда "<<'\t'<<"Последнее слагаемое \n";
    while(fabs(dCount)>d)
    {
        if(number%2) dSumma= dSumma+dCount;
        else dSumma=dSumma-dCount;
        cout<<dSumma<<"\t\t"<<dCount<<endl;
        number++;
        dCount=1/tan(number*dArg);
    }
    cout<<" Последнее слагаемое "<<dCount<<endl;
    cin.get();
    return 0;
}