Klausur 9/00 Approx Sinus

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Klausur 9/00 Approx Sinus
In Aufgabe 10 sollen wir Sinus nach einem Approximationsverfahren berechnen, so wie ketztes Semester in Scheme. Nur diesmal in Java, und wir sollen eine Methode dazu schreiben.

Jetzt meine Frage, kann ich in einer Methode Submethoden anlegen, oder habt ihr das alles irgendwie in eine Methode gequetscht, oder wie habt ihr das angestellt?

[edit] Aufgabe 12 ist auch irgendwie komisch, in a) heisst es:

“Implementieren sie die Klasse mit allen benötigten Komponenten”

und Teil b) und c) wollen dann isEmpty? und append() sehen, die muss man doch schon in Teil a) machen, oder?


10:


double asin(double x, double eps){
	double sum = 0;
	int index = 1;
	double next = x;
	while(Math.abs(next) >= eps){
		sum+=next;
		next*=(x*x*(-1))/((2*index)*(2*index +1));
		index++;
	}
	return  sum;
}

12:

Denke mal die meinen damit die Variablen, Konstruktor. Noch was?


Danke für die fixe Antwort, aber funktioniert dein asin auch?

ich meine in deiner Formel steht immer:

  • x² / (2ind*(2ind+1))

Da der Nenner nie negativ wird, hast du schonmal keine Plus Glieder drin, und wie du die Fakultät umgeformt hast würde mich auch mal interessieren (ich glaub dir schon, dass es geht, aber ich verstehs nicht).

Aber von der Struktur her ist mir das ganze schonmal klarer geworden, an while denk ich viel zu selten…

PS: Ich würde mein Zimmer mal lüften, auf deinem Avatar erkennt man kaum was :wink:



double asin(double x, double eps){
	double sum = 0;
	int index = 1;
	double next = x;
	while(Math.abs(next) >= eps){
		sum+=next;
		next*=
                                                    ( (x^(2*index-1) * (-1)^(index+1) 
                                                                               /
                                                        Math.fak(2*index-1)   );

		index++;
	}
	return  sum;
}

Habs mir jetzt nochmal überlegt, wenn es in Java “^” gibt und es die Funktion Math.fak gibt, dann müsste es doch so aussehen, oder?


Glaub das funzt so nicht. Da muss das * raus, in meiner Methode berechne ich den nächsten next wert, indem ich den alten -1 * x^2/2index * 2*index+1 nehm

Damit ändert sich das VZ (wegen *-1); aus x^n wird x^n+2; und aus n! wird n+2!.

Deine Lösung geht auch, aber dann muss es

next = … statt next *= heissen.


Hab ich mir auch gedacht. Aber schau dir mal den Platz an: die meinen sicher nur „leere Klasse mit Konstruktor“.


Naja ich hab halt z.B. 3! = 123
um aufs nächste Glied zu kommen (5!):

3! * 4 * 5 = 12345 = 5!


Okay, ich hatte das *= übersehen, ich hab das für ein = gehalten, das erklärt natürlich einiges :slight_smile:


saubere arbeit, stricha!
so kurz habe ich die methode auf anhieb nicht hingekriegt - das ist schon eine musterloesung, was kompaktheit angeht!