diff --git a/src/Vaja02Fakulteta.java b/src/Vaja02Fakulteta.java new file mode 100644 index 0000000..98fea16 --- /dev/null +++ b/src/Vaja02Fakulteta.java @@ -0,0 +1,94 @@ +public class Vaja02Fakulteta { + public static void main(String[] args) { + // izpisL(); + // izpisD(); +// izpisPiNilakantha(); + System.out.println(izracunajPi(5)); + } + + + static long fakultetaL(int n) { + long x = 1; + while (n > 1) { + x *= n; + n--; + } + return x; + } + + static long stirlingL(int n) { + return Math.round(Math.sqrt(2 * Math.PI * n) * Math.pow(n / Math.E, n)); + } + + static void izpisL() { + System.out.println( + " n n! Stirling(n) napaka (%)\n" + + "----------------------------------------------------------" + ); + for (int i = 1; i <= 20; i++) { + long fakulteta = fakultetaL(i); + long stirling = stirlingL(i); + float napaka = (1 - (float) stirling / fakulteta) * 100; + + System.out.printf("%3d %20d %20d %10.7f\n", i, fakulteta, stirling, napaka); + } + } + + static double fakultetaD(int n) { + double x = 1; + while (n > 1) { + x *= n; + n--; + } + return x; + } + + static double stirlingD(int n) { + return Math.sqrt(2 * Math.PI * n) * Math.pow(n / Math.E, n); + } + + static void izpisD() { + System.out.println( + " n n! Stirling(n) napaka (%)\n" + + "----------------------------------------------------" + ); + + for (int i = 1; i <= 100; i++) { + double fakulteta = fakultetaD(i); + double stirling = stirlingD(i); + double napaka = (1 - stirling / fakulteta) * 100; + + System.out.printf("%3d %17.9E %17.9E %11.7f\n", i, fakulteta, stirling, napaka); + } + } + + static double izracunajPiNilakantha(int k) { + double x = 3; + for (int i = 0; i < k; i++) { + double a = 4.0 / ((2 + 2 * i) * (3 + 2 * i) * (4 + 2 * i)); + if (i % 2 == 0) { + x += a; + } else { + x -= a; + } + } + return x; + } + + static void izpisPiNilakantha() { + System.out.println(" k Math.PI PI (Nilakantha) razlika \n" + + "-----------------------------------------------------------------"); + for (int i = 1; i <= 22; i++) { + double nilakantha = izracunajPiNilakantha(i); + System.out.printf("%3d %19.15f %19.15f %+20.15f\n", i, Math.PI, nilakantha, Math.PI - nilakantha); + } + } + + static double izracunajPi(int k) { + double x = Math.pow(k, 2) / (k * 2 - 1); + for (int i = k; i > 1; i--) { + x = Math.pow(i - 1, 2) / (((i - 1) * 2 - 1) + x); + } + return 4 / x; + } +}