2013-07-26 139 views
0

下面是它是如何寫在書:Java程序階乘

「的值e^x可通過以下總和來近似:

1 + X + X^2/2 + X^3 /3!+...+x^n/n!

編寫一個程序,該程序將值x作爲輸入,並輸出n的總和,取n爲值1至10,50和100.你的程序應該重複計算x的新值,直到用戶說他或他已經完成了。表達式n!被稱爲th e的階乘,定義爲

n! = 1 * 2 * 3 * ... * N

型雙存儲階乘的使用變量(或安排你的計算,以避免階乘的任何直接計算);否則,你很可能會產生整數溢出,也就是整數大於Java允許。「

我沒有任何編碼問題(至少還沒有),我的問題是我不知道它在問什麼我得到的因子部分(ex. 3i = 1*2*3),但我只是不知道它是什麼要求。我有用戶輸入值爲「x」,但「n」從哪裏來?

「值e^x可以近似爲以下總和:

1 + x + x^2/2!+ x^3/3!+ ... + x^n/n!

「我不知道這是什麼話,或索要。

我放在一起for循環爲1-10,50,100的一部分,我不知道,即使是品牌意義不理解的休息,但在這裏它是:

for (counter = 1 ; counter <= 100 ;counter++) 
{ 
    //System.out.print("Enter value for x: "); 
    //x = keyIn.nextDouble(); 
    if (counter >= 1 && counter <= 10) 
    { 
     if (counter == 1) 
      System.out.println("Iterations 1-10: "); 
     System.out.println("test to see if 10 show up"); 
    } 
    else if (counter == 50) 
    { 
     System.out.println("Iteration 50: "); 
    } 
    else if (counter == 100) 
    { 
     System.out.println("Iteration 100: "); 
    } 
} 

我一直沒在代數在兩年左右使一些這方面的東西是扔我送行一點請盡你所能,幫助的感謝。

+1

這是要求你使用指數函數的泰勒級數來計算'e^x'的某個值'x'。對某些大的「n」值,'e^x'近似等於'1 + x + x^2/2!+ x^3/3!+ ... + x^n/n! – Blender

+0

是@Blender是正確的n表示一些大數字。它可以是用戶輸入或任何固定編號。 –

回答

1

這就是說e^x可通過泰勒級數近似:Sum(i:0:n)(X /其實(我)) 因此,我們有:

double ex_taylor_series(double x, int n) 
{ 
    double value; 

    for(int i = 0; i < n; i++) 
    { 
     value += Math.pow(x, i)/(factorial(i)); 
    } 

    return value; 
} 

private int factorial (int num) 
{ 
     int value = 1; 

     for(int i = num; i > 1; i--) 
     { 
      value *= i; 
     } 

     return value; 
} 

在你的情況,你會簡單地養活N,10,50的不同值和100,至ex_taylor_series

+0

好的,謝謝。我只需要多一點澄清,爲什麼它有一個「e」和一個「n」變量。這是絆倒我的部分,我有用戶輸入「x」,但隨後有「n」和「e」在公式中浮動,我不確定將這些值編碼爲什麼。另外,我的書從來沒有超過「pow()」方法。 – novice9

+0

閱讀[泰勒系列](https://en.wikipedia.org/wiki/Taylor_series)。基本上,你可以通過總和近似一個函數。在你的情況下,我們近似於'e^x',但是在不同的近似水平上:10,50和100次迭代。增加迭代次數可以提高逼近的準確性...既然你是新手,你應該參加[tour](http://stackoverflow.com/about)。祝你好運。 –

+0

Welp,我完成它,它運行,因爲它應該。我想出了公式的含義,然後用兩條代碼作爲提升能力和析取部分的一部分,並且這樣做了!謝謝Steve和其他人。 – novice9