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

  • Автор темы Partyboy
  • Дата начала
Статус
Закрыто для дальнейших ответов.
P

Partyboy

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

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

DarkKnight

Well-known member
01.08.2010
653
0
#2
найти сумму ряда (-1)^k/(2*k-1)^2, где k изменяется от 1 до бесконечности, с точностью, которая вводится с консоли и обозначает количество цифр после десятичной точки.
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;

}
 

Вложения

P

Partyboy

#3
Спасибо большое!
вот мой первоначальный вариант, но он неправильный:
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<<" ";}
}
 
Статус
Закрыто для дальнейших ответов.