• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Задача: Сумма последовательности (с заданной точностью)

  • Автор темы Sheriff92
  • Дата начала
S

Sheriff92

Задание: Составить программу, вычисляющую с точностью eps сумму заданного ряда. Примечание: вычислить сумму ряда с точностью eps значит завершить суммирование членов ряда тогда, когда очередной член ряда окажется меньше eps по абсолютной величине. Сверить с контрольными значениями. Результаты вывести на экран монитора.

Выражение:
S(z)=∑_(n=0)^∞▒〖((-1)^n 〖(π/2)〗^(2n+1))/((2n+1)!(4n+3)) z^(4n+3) 〗

Точность eps:
pow(10,-3);
pow(10,-6);
pow(10,-8)

Аргумент:
Z=0.5
z=1

Контрольные числа:
S(0.5)=0.0647324
S(1)=0.4382591
 
S

Sheriff92

Единственное, что через do - while. А чтоб точность eps указывать, можно либо через меню выбора, либо задать какую-нибудь переменную, и чтобы если пользователь вводил "1", то программа выдавала pow(10,-3), если "2", то eps=pow(10,-6)...ну и на pow(10,-8) соответственно "3".
 
D

DarkKnight

А выражение можешь понятнее написать, или лучше скан-копию его.....
А то разобрать не могу...
 
S

Sheriff92

вот выражение
 

Вложения

  • 1.jpg
    1.jpg
    24,2 КБ · Просмотры: 205
D

DarkKnight

C++:
/*
codeby.net
Autor: DarkKnight125
*/

#include <iostream>
#include <iomanip>

using namespace std;

void main(void)
{
setlocale(LC_ALL,"Russian"); //Локаль
const double Pi = 3.141592653589; //Число ПИ
double esp = pow(10.0,-3.0); //Точность *определять ее тут не обязательно, она в цикле определяется
double z; //Аргумент функции
double Sum = 0; //Сумма
double Current = ::numeric_limits<double>::max(); //Текущий элемент последовательности
double n = 0; //Индекс последовательности
cout<<"Введите аргумент Z = ";
cin >> z; //Ввод агрумента

for (int k = -3; k> - 13; k--) //Цикл отвечающий за погрешность (точность)
{
esp = pow(10.0,(double)k); //Зададим точность
Current = ::numeric_limits<double>::max(); //Максимальное значение типа double
Sum = 0; //Обнулим сумму
n=0; //Обнулим n
while (abs(Current) > esp) //Пока модуль текущего значения последовательности > точности
{
Current = pow(-1.0,n) * pow (Pi/2,2*n+1); //Вычислим числитель первого 
for (int i = 2*n+1; i>1; i--) //Вычислим факториал в знаменателе первого
Current/=i; 
Current /= (4*n +3); //Разделим на второй множитель знаменателя первого
Current *= pow(z,4*n+3); //Умножим на второе
Sum += Current; //Увеличим сумму 
n++; //Увеличим индекс
}
cout<<"Результат (точность 10^"<<(int)k<<") : "<<setprecision(int(abs(k)))<<Sum<<endl;
}

}
 

Вложения

  • zd1.jpg
    zd1.jpg
    31,2 КБ · Просмотры: 363
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!