Исправить ошибку в вычислениях функции - C (СИ)

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

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

Листинг программы
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include <math.h>
  4. #include<stdlib.h>
  5. #include<iostream.h>
  6. long double factorial(int n) {
  7. return !n ? 1 : n * factorial(n - 1);
  8. }
  9. float sum_r(float _x,float _e)
  10. {
  11. float rez,element;
  12. int i;
  13. rez=0;i=1;
  14. element=(pow((-1),i)*sqrt(i+M_PI)*pow(sin(i*x),2)/(factorial(i+1)+exp(i*x));
  15. while ( fabs(element)>=_e )
  16. {
  17. rez=rez+element;
  18. i++;
  19. element=(pow((-1),i)*sqrt(i+M_PI)*pow(sin(i*x),2)/(factorial(i+1)+exp(i*x));
  20. }
  21. return(rez);
  22. }
  23. int main()
  24. {
  25. float x, e, rezult;
  26. int ii;
  27. x=0.63;
  28. for (ii=1;ii<=10;ii++)
  29. {
  30. rezult=sum_r(0.63,pow(10,-ii));
  31. printf("\n For e = %12.10f x = %3.1f rezult = %15.14f",pow(10,-ii),x,rezult);
  32. }
  33. getch();
  34. return 0;
  35. }
почемуто не нравится x, переробовал все но еичего помоите пожалуста

Решение задачи: «Исправить ошибку в вычислениях функции»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <conio.h>
  5.  
  6. long double factorial(int n)
  7. {
  8.    return !n ? 1 : n * factorial(n - 1);
  9. }
  10.  
  11. float element(int i, float x)
  12. {
  13.    return (pow((-1), i) * sqrt(i + M_PI) * pow(sin(i * x), 2) /
  14.            (factorial(i + 1) + exp(i * x)));
  15. }
  16.  
  17. float sum_r(float x, float e)
  18. {
  19.    float rez, elem;
  20.    int i;
  21.    rez = 0;
  22.    i = 1;
  23.    elem = element(i, x);
  24.  
  25.    while (fabs(elem) >= e)
  26.    {
  27.       rez = rez + elem;
  28.       i++;
  29.       elem = element(i, x);;
  30.    }
  31.  
  32.    return(rez);
  33. }
  34.  
  35. int main()
  36. {
  37.    float x = 0.63, rezult;
  38.    int ii;
  39.  
  40.    for (ii = 1; ii <= 10; ii++)
  41.    {
  42.       rezult = sum_r(0.63, pow(10, -ii));
  43.       printf("  For e = %12.10f x = %3.1f rezult = %15.14f\n", pow(10, -ii), x, rezult);
  44.    }
  45.  
  46.    getch();
  47.  
  48.    return 0;
  49. }

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

  1. Включаем необходимые заголовочные файлы: , , , .
  2. Определяем функцию factorial(), которая вычисляет факториал числа n.
  3. Определяем функцию element(i, x), которая вычисляет значение элемента функции на заданном шаге i и аргументе x.
  4. Определяем функцию sum_r(x, e), которая вычисляет сумму ряда на заданном интервале [0, x] с точностью до e.
  5. В функции main() задаем начальные значения переменных: x = 0.63, e = 10^-ii, где ii — номер итерации.
  6. Задаем цикл от 1 до 10 и выполняем вычисления в каждой итерации.
  7. Выводим результаты на экран.
  8. В конце программы вызываем функцию getch() для приостановки выполнения программы до нажатия клавиши.
  9. Возвращаем 0, чтобы указать, что программа успешно завершилась.

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


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

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

11   голосов , оценка 4.182 из 5

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

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

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