Задача: Нахождение суммы ряда с заданной точностью

Тема в разделе "C/C++/C#", создана пользователем Partyboy, 13 дек 2010.

Статус темы:
Закрыта.
  1. Partyboy

    Partyboy Гость

    Ребята! Помогите пожалуйста решить вот такую задачу
    (Visual Studio 2008):

    найти сумму ряда (-1)^k/(2*k-1)^2, где k изменяется от 1 до бесконечности, с точностью, которая вводится с консоли и обозначает количество цифр после десятичной точки.
     
  2. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Код (C++):
    /*
    найти сумму ряда (-1)^k/(2*k-1)^2, где k изменяется от 1 до бесконечности, с точностью,
    которая вводится с консоли и обозначает количество цифр после десятичной точки.
    */

    /*
    codeby.net
    Autor: DarkKnight125 (Denis Goncharov)
    */

    #include <iostream>
    #include <iomanip>

    using namespace std;

    //Введем функцию для определения значения последовательности k-ого члена
    double Funct(unsigned long k)
    {
    return pow(-1.0,(double)k)/pow(2*k-1,2.0);
    }

    void main(void)
    {
    setlocale(LC_ALL,".1251"); //Установим локаль
    double esp= 0.0; //Это значение нашей точности
    int CountZero; //Кол-во знаков после запятой (которые вводит пользователь)
    cout << "Введите точность вычисления (кол-во символов после запятой): ";
    cin >> CountZero;
    esp = pow(10.0, (double)-CountZero); //Вычислим значение точности

    unsigned long Iteration = 0; //Итерация K-ый член последовательности
    double Sum = 0.0; //Сумма членов
    double El = 1.0; //Значение последовательности для текущего члена
    while (abs(El) > esp) //Пока модуль El > точности
    {
    Iteration++; //Увеличик член последовательности
    El = Funct(Iteration); //Получим значение для данного члена
    Sum += El; //Добавим его к сумме
    }
    //Вывод информации
    cout<<fixed;
    cout << "Заданная точность : " << setprecision(CountZero) << esp << endl;
    cout << "Кол-во итераций (членов послед.) : " << Iteration << endl;
    cout << "Сумма последовательности :" <<setprecision(CountZero)<< Sum << endl;

    }
     

    Вложения:

    • cmetod1.jpg
      cmetod1.jpg
      Размер файла:
      39 КБ
      Просмотров:
      21
  3. Partyboy

    Partyboy Гость

    Спасибо большое!
    вот мой первоначальный вариант, но он неправильный:
    Код (C++):
    #include <iostream>
    #include <cmath>
    using namespace std;

    void main()
    {
    setlocale(LC_ALL, "Russian");

    int k,t,nGran,vGran;
    double y,sum=0;
    cout<<"Введите нижнюю границу:\t";
    cin>>nGran;
    cout<<"Введите верхнюю границу:\t";
    cin>>vGran;
    cout<<"Введите точность.";
    cin>>t;

    cout.precision(t);
    for(k=nGran; k<vGran; k++){

    y = pow(double(-1),k)/pow(double(2*k-1),2);
    sum = sum + y;
    //cout<<"\a ";
    cout<<"\n\n "<<sum;
    cout<<" ";}
    }
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей