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