Найти сумму бесконечного ряда с заданной точностью, используя рекуррентные зависимости - C (СИ)
Формулировка задачи:
Найти сумму бесконечного ряда с заданной точностью, используя рекуррентные зависимости. с точностью при . Найти надо с помощью операторов for,whie,do...while. Кто знает и может отзовитесь пожалуйста.
Решение задачи: «Найти сумму бесконечного ряда с заданной точностью, используя рекуррентные зависимости»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
float Factorial(n)
{
return !n ? 1 : n * Factorial(n - 1);
}
int main()
{
unsigned short n=1;
float s=0,s1,x;
while(1)
{
printf("Введите х: ");
scanf("%f",&x);
if((x<=0.0)||(x>=2.0))
printf("Неправильнный ввод!!!");
else
break;
}
while(1)
{
s1=pow(-1,n+1)*pow(x-1,n)/Factorial(n-1);
if(fabs(fabs(s)-fabs(s1+s))<0.0001)
break;
s+=s1;
n++;
}
printf("\nSum = %.5f",s);
return 0;
}
Объяснение кода листинга программы
- Вводится значение переменной
nравное 1. - Инициализируются переменные
sиs1равные 0.0, а также переменнаяxравная 0.0. - Запускается бесконечный цикл, в котором программа запрашивает у пользователя ввод значения переменной
x. - Если пользователь вводит некорректное значение (меньше или равное 0.0 или больше или равное 2.0), программа выводит сообщение об ошибке и продолжает цикл.
- Если пользователь вводит корректное значение, программа прерывает цикл и переходит к следующему циклу.
- В следующем цикле программа вычисляет значение переменной
s1с помощью формулы, используя значения переменныхnиx. - Сравнивая разницу между текущим значением
sи вычисленным значениемs1, программа определяет, достигнута ли заданная точность. - Если точность достигнута, программа прерывает цикл и выводит значение переменной
s. - Значение переменной
nувеличивается на 1. - Цикл повторяется до тех пор, пока не будет достигнута заданная точность.
- Значение переменной
sвыводится на экран. - Программа возвращает 0, завершая свою работу.