簡體   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