# Mathematische Funktionen/Bisektionsverfahren



## Trine (11. Mai 2004)

Hallo!

Gleich zu Anfang möchte ich sagen, dass ich auch schon hier http://matheplanet.com/matheplanet/nuke/html/viewtopic.php?topic=20249 um Hilfe gebeten habe (und sollte ich da Antwort bekommen, werde ich das hier auch schnell abhaken, nicht, dass sich jemand umsonst die Mühe macht .

Also, es geht darum, dass ich das Bisektionsverfahren in Java schreiben soll.
Dabei soll man so vorgehen, dass man dafür eine eigene Methode schreibt, die als Parameter zwei double-Werte (Intervallgrenzen), einen Toleranzwert (double epsilon) und einen Zeiger auf eine Funktion hat.
Außerdem soll sie als Rückgabewert eine Flag haben, bestehend aus einem boolean (Verfahren erfolgreich?) und ggf. die Näherungslösung und die Anzahl der Iterationen.

Mein Problem ist jetzt, dass ich a) nicht weiß, wie ich das mit den Funktionen hinbekomme und b) bisher immer nur Methoden mit entweder einem oder gar keinem Rückgabewert kennengelernt habe - wie funktioniert das dann bei drei unterschiedlichen?

Das Programm soll dann in etwa (also grob skizziert) so aussehen:


```
class NST {
	public  function(double x) {
		??? 
        }
/* also irgend eine Implementierung einer "Platzhalterfunktion"; ich muss diese dann später (was mich aber auch verwirrt NICHT  im Hauptprogramm) konkretisieren und für mehrere Funktionen implementieren können (also ich brauche f1, f2, f3, f4 und das ganze auch nochmal für g1,g2,g3,g4)*/
		
	static boolean Bisektion(double a, double b, double eps, function f) {
		if (f(a)*f(b) > 0)
			return false;
		int n = 0;
		while (Math.abs(a-b) >= eps) {
			double m = (a+b)/2;
			if (f(m)*f(a) < 0)
				b = m;	
			else
				a = m;
			n++;
		}
		return true, n, (a+b)/2; //also Verfahren erfolgreich, Anzahl Iterationen, Näherungslsg
	}
	public static void main(String arg[]) {
		Bisektion(0,1,1.000000005,f1);
	}
}
```

Es soll also so aussehen: Man ruft Bisektion mit den Grenzen des Intervalls auf, bestimmt Epsilon und dann die Funktion, auf die man sich bezieht.

Weiß da jemand Rat? Mir fehlt irgendwie jeder Ansatz, und alles, was ich bisher schon versucht hab, ist fehlgeschlagen...

Gruß,
Trine


----------



## L-ectron-X (11. Mai 2004)

Stimmt, mit Java kann nur ein Datentyp zurück gegeben werden.
Du könntest entweder das Ergebnis in ein Array oder eine Collection packen oder Du müsstest eine Klasse schreiben, die Instanzen Deiner Rückgabewerte speichert. Dann gibst Du dieses Objekt zurück.
Ich hoffe, ich habe Dich richtig verstanden. ???:L


----------



## Trine (11. Mai 2004)

Ja, richtig verstanden.  Ich denke, ich werds mit ner Klasse so machen... mal schaun, ob ich das so hinbekomme. Danke jedenfalls!


----------

