I am trying to build a program that calculates Taylor series for sin(x). With 0< x < pi/2. 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 itterations. 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)
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 <= 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<r(x, i) && i<n); System.out.println(r(x, i)); while((r(x, i)<e) && i<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)); } } }
Thanks in advance.