Vaja 02 Fakulteta
This commit is contained in:
		
							parent
							
								
									8e0baa5eb7
								
							
						
					
					
						commit
						b7a5965a7d
					
				
							
								
								
									
										94
									
								
								src/Vaja02Fakulteta.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								src/Vaja02Fakulteta.java
									
									
									
									
									
										Normal file
									
								
							@ -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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user