novice9
novice9

Reputation: 5

Java program factorials

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.

Upvotes: 0

Views: 3036

Answers (1)

Steve P.
Steve P.

Reputation: 14709

It's saying that e^x can be approximated through a Taylor Series: Sum(i:0:n)(xi/fact(i)) So, we have:

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;
} 

In your case, you would simply feed different values of n, 10, 50 and 100, to ex_taylor_series.

Upvotes: 1

Related Questions