Итерационные циклы. Вычисление суммы бесконечного ряда - C (СИ)
Формулировка задачи:
Разработать алгоритм и программу, определяющие сумму ряда с заданной погрешностью е(ипсилон) для произвольно заданного аргумента x.
Бесконечная сумма: 2* (x + (x^3/3) + (x^5/5).... (x^(2n+1)/(2n+1)) )
Диапазон изменений |x|<1
Решение задачи: «Итерационные циклы. Вычисление суммы бесконечного ряда»
textual
Листинг программы
#include <malloc.h>
#include <string.h>
#include <math.h>
int _tmain(int argc, _TCHAR* argv[])
{
float x; float e, t = 0, n = 0;
setlocale(LC_ALL, "Russian");
printf_s("Введите значение x: ");
scanf_s("%f", &x);
if (abs(x) < 1)
{
printf_s("E>0 и E<1 Введите значение погрешности E: ");
scanf_s("%f", &e);
if (e >= 0 && e <= 1)
{
while (abs(((pow(2 * n + 1, x)) / (2 * n + 1))) > e)
{
n++;
t = t + ((pow(2 * n + 1, x)) / (2 * n + 1));
}
printf_s("Кол-во повторений: %.0f\n", n);
}
else
{
printf_s("Погрешность должна быть меньше 1");
}
}
else
{
printf_s("|X| должен быть меньше 1!");
}
n = 0;
_gettch();
return 0;
}
Объяснение кода листинга программы
- Ввод значения x с клавиатуры
- Проверка на условие abs(x) < 1
- Если условие выполняется, то происходит вывод сообщения и ввод значения погрешности E
- Проверка на условие e >= 0 && e <= 1
- Если условие выполняется, то происходит запуск цикла while
- В цикле происходит проверка на условие abs(((pow(2 n + 1, x)) / (2 n + 1))) > e
- Если условие выполняется, то происходит увеличение значения n на 1
- К значению t прибавляется значение ((pow(2 n + 1, x)) / (2 n + 1))
- После выхода из цикла while происходит вывод значения n
- Если условие в блоке else выполняется, то выводится сообщение
Погрешность должна быть меньше 1 - Если условие в блоке else выполняется, то выводится сообщение
|X| должен быть меньше 1! - Значение n сбрасывается в 0
- Выполняется функция _gettch()
- Возвращается 0