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…
Reference in New Issue
Block a user