繁体   English   中英

评估e ^ x的C程序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM