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

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

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

#include<stdio.h>
#include<conio.h>
#include <math.h>
#include<stdlib.h>
#include<iostream.h>
 long double factorial(int n) {
    return !n ? 1 : n * factorial(n - 1);
}
 
float sum_r(float _x,float _e)
{
        float rez,element;
    int i;
    rez=0;i=1;
    element=(pow((-1),i)*sqrt(i+M_PI)*pow(sin(i*x),2)/(factorial(i+1)+exp(i*x));
    while ( fabs(element)>=_e )
    {
        rez=rez+element;
        i++;
                element=(pow((-1),i)*sqrt(i+M_PI)*pow(sin(i*x),2)/(factorial(i+1)+exp(i*x));
    }
    return(rez);
}
 
int main()
{
    float x, e, rezult;
        int ii;
        x=0.63;
        for (ii=1;ii<=10;ii++)
        {
          rezult=sum_r(0.63,pow(10,-ii));
          printf("\n  For e = %12.10f x = %3.1f rezult = %15.14f",pow(10,-ii),x,rezult);
        }
    getch();
    return 0;
}
почемуто не нравится x, переробовал все но еичего помоите пожалуста

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

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
 
long double factorial(int n)
{
   return !n ? 1 : n * factorial(n - 1);
}
 
float element(int i, float x)
{
   return (pow((-1), i) * sqrt(i + M_PI) * pow(sin(i * x), 2) /
           (factorial(i + 1) + exp(i * x)));
}
 
float sum_r(float x, float e)
{
   float rez, elem;
   int i;
   rez = 0;
   i = 1;
   elem = element(i, x);
 
   while (fabs(elem) >= e)
   {
      rez = rez + elem;
      i++;
      elem = element(i, x);;
   }
 
   return(rez);
}
 
int main()
{
   float x = 0.63, rezult;
   int ii;
 
   for (ii = 1; ii <= 10; ii++)
   {
      rezult = sum_r(0.63, pow(10, -ii));
      printf("  For e = %12.10f x = %3.1f rezult = %15.14f\n", pow(10, -ii), x, rezult);
   }
 
   getch();
 
   return 0;
}

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

  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