Написать функцию вычисления суммы ряда - C (СИ)

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

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

Написать функцию вычисления суммы ряда s=s(1)+…+s(n), где s(n)=(-1)n x(2n-1)/(2n+1) с точностью до eps=0.001. В качестве параметров выбрать x и eps. Выполнил программу, вот ошибки -> Сумму надо посчитать с точностью eps, т.е. цикл добавления очередного члена ряда продолжается до тех пор, пока член ряда не станет меньше eps. Это цикл с неизвестным заранее числом повторений, т.е. n вводить не нужно. Помогите исправить.
#include <stdio.h>
#include <math.h>
 
float f(float , int);
main()
{ 
    float x, s;
    int n, j;
    printf ("Введите x и n через \"пробел\": ");
    scanf ("%f %d", &x, &n);
    
    for (j=1; j<=n; j++)
        s+=f(x, j);
        
    printf ("\ns=%.3f", s);
    
    getchar();
    getchar();
    return 0;
}
 
float f(float x, int n)
{
    float y;
    y=pow(-1, n)*pow(x, 2*n-1)/(2*n+1);
    printf ("\ny=%.3f", y);
    return y;
};
Вот, посмотрите, правильно? Почему-то просит ввести два числа(
#include <stdio.h>
#include <math.h>
#include <conio.h>
/*
Написать функцию вычисления суммы ряда s=s(1)+…+s(n), 
где s(n)=(-1)n x(2n-1)/(2n+1) с точностью до eps=0.001. В качестве параметров выбрать x и eps.
*/
float f(float , int);
main()
{ 
    float x, s, eps = 0.001;
    int j;
    printf ("Enter x: ");
    scanf ("%f ",&x);
    j=0;
    s=0;
    do
    {
      j=j+1;
      s=s+f(x, j);
    }
    while (s < eps);        
    printf ("\n s=%.3f ", s);     
    getch();    
    return 0;
}
 
float f(float k, int n)
{
    float y;
    y=pow(-1, n)*pow(k, 2*n-1)/(2*n+1); 
    return y;
};
теперь работает нормально, только не знаю,правильно ли?
#include <stdio.h>
#include <math.h>
#include <conio.h>
/*
Написать функцию вычисления суммы ряда s=s(1)+…+s(n), 
где s(n)=(-1)n x(2n-1)/(2n+1) с точностью до eps=0.001. В качестве параметров выбрать x и eps.
*/
float f(float , int);
main()
{ 
    float x, s, eps = 0.001;
    int j;
    printf ("Enter x: ");
    scanf ("%f",&x);
    j=0;
    s=0;
    do
    {
      j=j+1;
      s=s+f(x, j);
    }
    while (s > eps);        
    printf ("\n s=%.3f ", s);     
    getch();    
    return 0;
}
 
float f(float k, int n)
{
    float y;
    y=pow(-1, n)*pow(k, 2*n-1)/(2*n+1); 
    return y;
};

Решение задачи: «Написать функцию вычисления суммы ряда»

textual
Листинг программы
while (f(x, j) < eps)

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


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

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

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