Hallo,
ich bin ganz neu hier und kenne mich mit java noch nicht so gut aus. In der Uni haben wir folgende Aufgabe gestellt bekommen.
Die Reihe
cos(x) = 1
x2
2!
+
x4
4!
+ : : : =
X!
n=1
(1)n+3 x2n+2
(2n + 2)!
stellt den Cosinus dar. Programmieren Sie die Methode
public static float cos(float x),
die den Cosinus approximiert und die Berechnung beendet, wenn der Summand
nur in der 8. Stelle verandert wird:
Ich habe bis jetzt folgenden Code dazu geschrieben:
Ich hoffe mir kann hier jemand helfen. Bin regelrecht am verzweifeln.
Mit freundlich Grüßen
java_starter11
ich bin ganz neu hier und kenne mich mit java noch nicht so gut aus. In der Uni haben wir folgende Aufgabe gestellt bekommen.
Die Reihe
cos(x) = 1
x2
2!
+
x4
4!
+ : : : =
X!
n=1
(1)n+3 x2n+2
(2n + 2)!
stellt den Cosinus dar. Programmieren Sie die Methode
public static float cos(float x),
die den Cosinus approximiert und die Berechnung beendet, wenn der Summand
nur in der 8. Stelle verandert wird:
Ich habe bis jetzt folgenden Code dazu geschrieben:
Java:
public class CosTester{
// Methode um die Fakultät zu berechnen
public static float Factorial ( float number )
{
float k = 1;
if ( number < 0 )
return -1;
else if ( number == 0 )
return 1;
else
{
k = number * Factorial(number-1);
return k;
}
}
// Methode für die Potenzrechnung
public static float Power(float n, float exponent){
float e = n;
if (exponent==0){
return 1;
}
else{
for (int i=2; i<=exponent;i++){
n=n*e;
}
return n;
}
}
public static double EPSILON = 1E-8;// War vorher schon gegeben. Ich weiß jedoch nicht, was ich damit machen soll
//Methode um die Cos-Reihe darzustellen
public static float cos(float x) {
float k=1;
float summe=0;
float summand=0;
float summandAlt=0;
for(int n=0;n<k;n++){
summand =( Power(-1,n)*(Power(x,(2*n))/Factorial(2*n)));
// Hier soll die Abbruch-Bedingung realisiert werden.
float summandAlt_neu = (float) (Math.round(summandAlt * 1000000)/1000000.00);
float summand_neu = (float) (Math.round(summand*1000000)/1000000.0);
System.out.println("SummandAlt"+summandAlt);
System.out.println("SummandAltgerundet"+summandAlt_neu);
System.out.println("Summand"+summand);
System.out.println("Summandgerundet"+summand_neu);
if (summandAlt_neu!=summand_neu)
{
k++;
}
summandAlt = summand;
summe=summe+summand;
}
return summe;
}
public static void main(String[] args) {
//System.out.println("cos(0)=" + cos(0));
System.out.println("cos(10)=" + cos(1));
System.out.println("cos(10)=" + Math.cos(1));
//System.out.println("cos(-1)=" + cos(-1));
//System.out.println("cos(1000)=" + cos(1000));
}
}
Ich hoffe mir kann hier jemand helfen. Bin regelrecht am verzweifeln.
Mit freundlich Grüßen
java_starter11