0

Here's how it's written in the book:

"The value e^x can be approximated by the following sum:

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

Write a program that takes a value x as input and outputs this sum for n taken to be each of the values 1 to 10, 50, and 100. Your program should repeat the calculation for new values of x until the user says she or he is through. The expression n! is called the factorial of n and is defined as

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

Use variables of type double to store the factorials (or arrange your calculation to avoid any direct calculation of factorials); otherwise, you are likely to produce integer overflow, that is, integers larger than Java allows."

I don't have any coding problems (not yet at least), my problem is I don't know what it's asking me to do. I get the factorial part (ex. 3i = 1*2*3) but I am just not sure what else it is asking. I have the user input a value for "x" but where does the "n" come from?

"The value e^x can be approximated by the following sum:

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

" I don't know what this is saying or asking for.

I put together this for loop for the 1-10, 50, 100 part and I don't know if that even makes sense without understanding the rest, but here it is:

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: ");
    }
}

I haven't been in algebra in about two years so some of this stuff is throwing me off a bit. Please help with whatever you can, thanks.

4

1 回答 1

1

据说e^x可以通过泰勒级数近似:Sum(i:0:n)(x i /fact(i)) 所以,我们有:

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.

于 2013-07-26T04:05:39.520 回答