Некорректный результат. Сумма сходящегося ряда с заданной точностью - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Задание такое написать программу, которая для заданного аргумента х и заданной точности вычисляет значение y=f(x), как сумму членов бесконечного ряда. Погрешность огромна. как избавиться?
#include <stdio.h>
#include <math.h>
 
int main()
{
int s, c; //s - знак. c - знаменатель.
double y, x, a, eps; //а - очередной член. eps - погрешность. 
do {
    printf("Input x, e: ");
    scanf("%lf%lf",&x,&eps);
} while (x<0||x>1||eps>1);
s=1;
y=1;
c=3;
a=s*(x-1)/c;
while (fabs(a)>eps) 
{
y=y+a;
s=s*(-1);
a=s*(c-1)/(c+3)*(x-1);
c=c+3;
}
printf("y = %lf;",y);
return 0;
}

Решение задачи: «Некорректный результат. Сумма сходящегося ряда с заданной точностью»

textual
Листинг программы
#include <math.h>
#include <stdio.h>
 
int main()
{
    int c; // c - индекс.
    double y, x, a, eps; //а - очередной член. eps - погрешность. 
    do 
    {
        printf("Input x, e: ");
        scanf("%lf%lf",&x,&eps);
    } while (x<0||x>1||eps>1);
    c=3;
    a=(x-1.)/c;
    y=1+a;
    while (fabs(a)>eps) 
    {
        a*=-(x-1)*(c-1)/(c+3);
        y+=a;
        c+=3;
    }
    printf("y = %lf\n",y);
    return 0;
}

Объяснение кода листинга программы

В этом коде выполняется вычисление суммы сходящегося ряда с заданной точностью. Пользователю предлагается ввести значение x и точность e. После этого, в цикле do-while, происходит проверка корректности введённых значений. Если x меньше нуля или больше единицы, а e больше единицы, то пользователю предлагается ввести корректные значения. Далее, инициализируются переменные c, a и y. Переменная c получает значение 3, a рассчитывается как (x-1)/c, а y как 1+a. Затем, в цикле while, происходит вычисление следующего члена ряда a, а затем значение y увеличивается на a. Переменная c увеличивается на 3, а переменная a пересчитывается как (x-1)*(c-1)/(c+3). Цикл продолжается до тех пор, пока абсолютное значение a не станет меньше заданной точности e. В конце программы выводится значение y и программа возвращает 0, сигнализируя о успешном завершении работы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.9 из 5
Похожие ответы