Аппроксимация e ^ -x не возвращает правильное значение - PullRequest
1 голос
/ 05 мая 2020

Nb Приведенный ниже код намеренно выполнен без использования библиотеки <math.h>

Для расчета приближения:

text

Мне нужно работать со следующей формулой:

text

Я просто написал приведенный ниже код, чтобы сделать это, но мне не хватает чего-то, чего я не могу понять, что делает код, чтобы не возвращать правильное значение. Было бы здорово, если бы кто-нибудь мог посмотреть. Спасибо большое!

#include <stdio.h>

double f_fact(float i);
double f_pot (float i, float x);

int main()
{
   double f_calculo, a, x, i;

   printf("Please specify the number of terms to sum\n");
   scanf("%lf", &a);

   printf("Please enter the value of the exponent\n");
   scanf("%lf", &x);

   for (i = 1; i <= a; ++i)
   {
      f_calculo = f_calculo + (double) f_pot (i, x) / f_fact(i);
   }

   printf("The result is: %lf\n", f_calculo);

   return 0;
}

double f_fact(float i)
{
   int j;
   long long int factorial = 1;

   for (j = 1; j <= i; ++j)
   {
      factorial = factorial * j;
   }
   return (factorial);
}


double f_pot (float i, float x)
{
   int j;
   double power = 1;

   for (j = 1; j <= i; ++j)
   {
      power = power * (-x);
   }
   return (power);
}

1 Ответ

1 голос
/ 07 мая 2020

Просто оставьте ниже окончательный исправленный код на основе комментариев @NateEldredge. Спасибо!

#include <stdio.h>

double f_fact(float i);
double f_pot (float i, float x);

int main()
{
   double f_calculo, k, x, i;

   printf("Please specify the number of terms to sum (k)\n");
   scanf("%lf", &k);

   printf("Please enter the value of the exponent (x)\n");
   scanf("%lf", &x);

   for (i = 1; i <= k; ++i)
   {
      f_calculo = f_calculo + (double) f_pot (i, x) / f_fact(i);
   }

   printf("The result is: %lf\n", 1 + f_calculo);

   return 0;
}

double f_fact(float i)
{
   int j;
   long long int factorial = 1;

   for (j = 1; j <= i; ++j)
   {
      factorial = factorial * j;
   }
   return (factorial);
}


double f_pot (float i, float x)
{
   int j;
   double power = 1;

   for (j = 1; j <= i; ++j)
   {
      power = power * (-x);
   }
   return (power);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...