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