[英]C program to evaluate e^x
我正在尝试编写一个C程序,该程序将允许我评估e ^ x,但是我不确定自己是否走对了。 对于较低的x值似乎可以正常工作,但是可能超过5则存在太多错误。 只是想知道是否有人可以看到我的代码哪里出了问题(或者我的代码是正确的,这可能是PC无法处理n大于n的n的问题!)。
谢谢 :-)
韦德福德
unsigned int counter1 = 1, counter2 = 1, counter3 = 1, num, numFactorial, X;
float e, ex, x;
printf( "%s", "Enter a number: ");
scanf( "%d", &num);
printf( "%s", "Enter a value for x: ");
scanf( "%f", &x);
e = e + 2;
counter3 = num;
while ( counter3 > 1 ) {
counter1 = counter3;
numFactorial = counter3;
X = x;
while( counter1 > 1 ) {
numFactorial = numFactorial * ( counter3 - counter2);
counter1--;
counter2++;
X = X * x;
}
counter2 = 1;
e = e + ( 1 / (float) numFactorial );
ex = ex + X * ( 1 / (float) numFactorial );
counter3--;
}
ex = ex + x + 1;
printf( "e to the nth order of approximation (n = %d) is: %f", num, e);
printf( "\ne^x to the nth order of approximation (n = %d) is: %f", num, ex);
我刚刚尝试了您的代码,当x = 3时,它最多可以达到num = 19(因此在扩展中为19阶)。 之后,数量与预期值有所差异。 那是溢出的问题,您的人数太大了。
如果我理解正确,那么在两个系列扩展中,您都希望获得Neper数的值以及给定数字x的指数,直到给定的阶数(num)。
然后,您可以计算阶乘数! 在您的代码中。 如果numfactorial是一个无符号int,则此方法不适用于大于约15的数字。 只是因为数字的表示。 至少使用两次。
根据我的经验,当您需要计算阶乘时,如果要这样做,请使用库“ math.h”中的Gamma Function ,它称为tgamma。 如果查看Gamma函数的Wikipedia页面,则可以使用它来获取整数的阶乘:num! = tgamma(num + 1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.