title: Taylor series for sin(x) in Java
body: <p>I am trying to build a program that calculates Taylor series for sin(x). With x bigger than 0 and less than pi/2 (I tried to write with latex but didn't work(??)) . Approximation of sin(x) is around the point x0 = 0. e is the max error (or inaccuracy... I don't know how it's called). Error(or inaccuracy) is calculated with the formula in the method I call r. So r must always be less than e. Finally, n is the number of iterations. Below is my program, it works with no errors but i get inaccurate results and i don't know what i am doing wrong(maybe we should take into consideration the propability of using a formula with mistakes).</p>
  
  <pre><code>import java.lang.Math;
  import java.util.Scanner;
  
  public class hw74 { 
      public static long factorial(int number) {
          long result = 1;
  
          for (int factor = 2; factor &lt;= number; factor++) {
              result *= factor;
          }
  
          return result;
      }
  
      static double p(double x, double x0, int n) {
          double PT = Math.pow(-1, n) * (Math.pow(x-x0, 2*n+1)/factorial(2*n+1));
          return PT;
      }
  
      static double r(double x, int n) {
          double rn = Math.pow(x, n+1)/factorial(n+1);
          return Math.abs(rn);
      }
  
      public static void main(String[] args) {
          Scanner sc = new Scanner(System.in);
          double x0 = 0;
          System.out.println("Give x. ");
          double x = sc.nextDouble();
          System.out.println("Give E. ");
          double e = sc.nextDouble();
          System.out.println("Give N. ");
          int n = sc.nextInt();
          int i = 0;
          //System.out.println(e&lt;r(x, i) &amp;&amp; i&lt;n);
          //System.out.println(r(x, i));
          while((r(x, i)&lt;e) &amp;&amp; i&lt;n) {
              i++;
              System.out.println("N is : "+i);
              System.out.println("P is : "+p(x,x0,n));
              System.out.println("E is : "+r(x,n));
          }
      }   
  }
  </code></pre>
  
  <p>For example: for n=5, e=1 and x=pi/5 (0.62831853071), the results should be : sin(pi/5) = 0.5877852522... For n=1 r=0.1974, n=2 r=0.0413, n=3 r=0.0065, n=4 r=8.16*10^(-4), n=5 r=8.54*10^(-5)</p>