Вычислить сумму ряда и указать количество слагаемых - C (СИ)

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

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

Дано действительное число х (0<x<=1). Вычислить сумму ряда с точностью e=10^-6 и указать количество слагаемых. Считать, что требуемая точность достигнута, если очередное слагаемое по модулю меньше e. помогите пожалуйста

Решение задачи: «Вычислить сумму ряда и указать количество слагаемых»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. double factorial(int t)
  5. {
  6.     return tgamma((double)t + 1.0);
  7. }
  8.  
  9. double absd(double t)
  10. {
  11.     return t < 0 ? -t : t;
  12. }
  13.  
  14. double f(double x, int *num)
  15. {
  16.     const double eps = 1e-6;
  17.     *num = 0;
  18.  
  19.     double res = 0.0;
  20.     int k;
  21.     for(k = 1; ; k++)
  22.     {
  23.         double r = pow(-1.0, (double)k) / factorial(k << 1) * pow(x / 3.0, 4.0 * (double)k);
  24.         if(absd(r) < eps) return res;
  25.         res += r;
  26.         *num = *num + 1;
  27.     }
  28. }
  29.  
  30. int main()
  31. {
  32.     double x, y;
  33.     int n;
  34.     scanf("%lf", &x);
  35.     y = f(x, &n);
  36.     printf("Summa = %lf, chislo slagaemych = %d\n", y, n);
  37.     return 0;
  38. }

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

Выше представлен код на языке C, который вычисляет сумму ряда и количество слагаемых.

  1. В функции factorial используется функция tgamma из библиотеки , которая вычисляет факториал числа. В данном случае, факториал числа t + 1 вычисляется как tgamma((double)t + 1.0).
  2. В функции absd используется тернарный оператор для определения абсолютного значения числа. Если число t меньше нуля, то возвращается его отрицательное значение, иначе возвращается само число.
  3. В функции f определяется ряд с помощью цикла for, который выполняется до тех пор, пока абсолютное значение произведения не станет меньше заданной точности eps. Значение eps равно 1e-6.
  4. Каждое слагаемое ряда определяется как pow(-1.0, (double)k) / factorial(k << 1) * pow(x / 3.0, 4.0 * (double)k). Здесь используется операция сдвига влево (k << 1) для удвоения значения k.
  5. В функции main пользователю предлагается ввести значение x с клавиатуры, затем вызывается функция f с этим значением и неинициализированной переменной n (которая будет использоваться как указатель на переменную, которая будет изменяться в процессе работы функции). Функция f возвращает сумму ряда y и количество слагаемых n.
  6. Наконец, в функции main выводятся значения y и n с помощью функции printf. Значение y представляет собой сумму ряда, а значение n - количество слагаемых.

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


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

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

14   голосов , оценка 4.429 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут