Bisektionsverfahren (Mathematische Funktion)

matt65

Mitglied
Hi,

ich bin dabei das Bisektionsverfahren für die Nullstellenbestimmung für Java in Eclipse zum erstellen, dabei habe ich hier im Forum folgenden Code gefunden, welchen ich noch anpassen wollte, doch leider vergebens;

Hier der Text:

Java:
	interface Function { 
	        double evaluateAt(double x); 
	} 

	class Funktionen {
		
		//wollte hier 	f1= 1-x^2/2
		//				f2= 1+sin(x)-x^0,5
		//				f3= 0,000001-sin(0,000001x)
		//definieren
	
		
	}
	
	
	class F1 implements Function { 
	        public double evaluateAt(double x) { 
	                return Math.cos(x)-x; 
	        } 
	} 

	class Bisektionsverfahren { 
	        static boolean BiSektion(double a, double b, double eps, Function f1) { 
	                if (f1.evaluateAt(a)*f1.evaluateAt(b) > 0) 
	                        return false; 
	                
	                int n=0;
	                double m;
	                for (n=0; Math.abs(a-b) >= eps; n++) { 
	                        m = (a+b)/2;
	                        
	                        if (f1.evaluateAt(a)*f1.evaluateAt(m) > 0) 
	                                a = m; 
	                        else
	                                b = m; 
	                }
	                
	                System.out.println(n + ", " + (a+b)/2);
	                
	                return true;
	        }
	        
	        public static void main(String arg[]) { 
	                Function f1 = new F1(); 
	                if (BiSektion(0.0,1.0,0.0001,f1)) {
	                        System.out.println("Success!");
	                } else {
	                        System.out.println("Failure...");
	                }
	        }
	
	}

Das Problem ist die Erstellung und Einbindung der class Funktionen, irgendwas geht da nicht, bekomme immer Fehler angezeigt und kann nicht auf Funktion zugreifen.
Außerdem wollte ich jeweils für die Funktionen f1, f2, f3 Intervallgrenzen eingeben; weis nicht wie bzw. wo ich das machen soll. (Müsste ich ja z.B. a=0, b=2 für Intervall [0,2] festsetzen, oder?)
Die Berechnung soll dann mit Genauigkeit von 0,0001 erfolgen, wird diese Genauigkeit durch den letzten if Zweig
if (BiSektion(0.0,1.0,0.0001,f1)) angezeigt, oder was bedeutet dies?

Vielen Dank für die Antworten bzw. Hilfe!
 
S

SlaterB

Gast
die Intervallgrenzen a und b gibts doch schon, kannst du beim Aufruf übergeben,

sicherlich kannst du in den Funktionen diese selber generell auf einen x-Bereich einschränken, meinst du das?
das wäre dann allein eine Frage für die Funktion-Klassen

0,0001 ist eine Art Genauigkeit, richtig, hier für die Intervall-Breite, nicht unbedingt den y-Wert, kann man alles programmieren wie man will

F1-F3 solltest du in eigenen Klassen definieren so wie ein F1 schon vorgegeben ist,
diese Klasse kopieren, umbenennen und die evaluate-Methode ändern auf die richtige Formel,
was sicher gar nicht so leicht ist

was die Klasse Funktionen dabei leisten soll ist bisher nicht verständlich
 

matt65

Mitglied
Gut also ich wollte erstmal z.b. die Berechnung für die Funktion f(X)= 1-(x^2/PI) durchführen für die Intervallgrenzen [0,2] und mit einer Genauigkeit von 0,0001 (x-Richtung genügt) das Ergebnis erhalten.

Was müsste ich jetzt konkret am Text ändern, evaluate Methode anpassen, dass das funktioniert.

Vielen Dank für die Antwort
 

matt65

Mitglied
Hab mittlerweile das Prog. etwas umgebaut.
Nur weis ich nicht, wo ich hier die für jede Funktion f(x) entsprechenden Intervallgrenzen eingeben kann, außerdem komme ich nicht mit der Eingabe meiner Funktionen zurecht, gibt nur Fehlermeldungen, die Methode Math. wird dann auch nicht mehr erkannt.

Vielleicht könnte mir jemand ein paar Tipps geben, damit das ganze dann auch funktioniert.

Danke.

Java:
public class Nullstelle {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		System.out
				.println("Die Nullstelle mit einer Genauigkeit von 0,0001 lautet:");

		System.out.println(nullstelle(0, 0001));
	}

	static double nullstelle(double a, double b)
	// Bisektionsverfahren für die Funktion x
	{
		double m, y;

		while (b - a > 1e-4) // Abbruch, wenn Intervall klein genug
		{
			m = (a + b) / 2; // Berechne Mitte
			y = f2(m); // und Wert in der Mitte
			if (y > 0)
				a = m; // Nimm rechtes Halb-Intervall
			else
				b = m; // Nimm linkes Halb-Intervall
		}
		return (a + b) / 2;

	}

	static double f1 (double x)
	   // Funktion  f(x) =  1 - x^2  /PI; deren Nullstelle berechnet wird
	   {   return Math.1-(x*exp(x)2)/PI);
	    }

	static double f2(double x)
	// Funktion, deren Nullstelle berechnet wird
	{
		return Math.exp(x) - 4 * x;
	}

	static double f3(double x)
	// Funktion, deren Nullstelle berechnet wird
	{
		return Math.exp(x) - 4 * x;
	}

}
 
S

SlaterB

Gast
> return Math.exp(x) - 4 * x;
geht doch oder?

> return Math.1-(x*exp(x)2)/PI);
ist natürlich Quark, was soll man dazu sagen, schreibe keinen Quark!

Eins ist immer noch 1 und nicht Math.1,
man kann doch nicht völlig wirre unbegründete Buchstabenfolgen korrigieren?

------

> gibt nur Fehlermeldungen,

ansonsten bitte genauer was nicht geht,

und immer LANGSAM anfangen!
erstelle doch erstmal eine Funktion (nicht 3), und versuche davon den Funktionswert an einer Stelle auszugeben (statt gleich komplexe Intervalle, Nullstellensuche-Algorithmen usw.)
wenn die kleinen Dinge schon gehen, umso besser, dann das Programm Schritt für Schritt erweitern bis du genau an ein bestimmtes neues Problem gelangst,
das dann hier evtl. nachfragen

(ich persönlich bin jetzt allerdings wahrscheinlich bis abends nicht mehr da)
 
Zuletzt bearbeitet von einem Moderator:

matt65

Mitglied
Alles klar,

ich wollte halt jetzt noch weitere Funktionen einfügen,
die erste return Math.exp(x) - 4 * x; geht auch.
Nur wenn ich jetzt eine neue einfügen will, kommt es zu Komplikationen, denn weis ich nicht genau wie das mit der Math. Methode funktioniert, deshalb kommt auch "Quark" raus.
Muss ich da etwa neue Class errichten, worin ich die Funktion defieniere, oder wie bzw. was muss ich machen.

Als nächstes wollte ich dann natürlich jeweils nur für eine Berechnung a, b also Intervallgrenzen Werte zuweisen, worin Bisektion ausgeführt wird, da schon andere Werte rauskommen sollten.
 
S

SlaterB

Gast
> Nur wenn ich jetzt eine neue einfügen will, kommt es zu Komplikationen, denn weis ich nicht genau wie das mit der Math. Methode funktioniert

welchen mathematischen Sachverhalt willst du denn ausdrücken, es geht dabei doch sicher nur im den Inhalt einer
return irgendwas mit x;
Zeile

> Muss ich da etwa neue Class errichten, worin ich die Funktion defieniere, oder wie bzw. was muss ich machen.

wie du die Funktion an sich komplett definierst ist dagegen ein völlig anderes Thema, hat absolut nichts mehr mit der Math-Klasse zu tun

mehrere Funktionen am besten so wie im ersten Post, was du da kompiert hast, ein Interface, jede Methode eine neue Klasse,
einfach den F1-Klassencode kopieren, umbennen, fertig ist eine neue Funktion,
ganz ohne statische Methoden
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
JustusJonas93 Bisektionsverfahren Java Basics - Anfänger-Themen 42
U Brauche Hilfe bei Bisektionsverfahren Java Basics - Anfänger-Themen 23
J Problem mit Bisektionsverfahren Java Basics - Anfänger-Themen 1
Kingdako Wie löse ich eine Mathematische Formel mit Arrays und Schleifen? Java Basics - Anfänger-Themen 32
L mit Fakultät mathematische Formel berechnen Java Basics - Anfänger-Themen 5
F Arrays: Mathematische Funktion Java Basics - Anfänger-Themen 19
E Mathematische Aufgabe: Antwort entspricht nicht der Lösung Java Basics - Anfänger-Themen 5
C mathematische Symbole im Kommentar Java Basics - Anfänger-Themen 1
B Anwender soll mathematische Funktion eingeben können, Einfachster Fnktionsplotter Java Basics - Anfänger-Themen 4
J kleiner Fehler im FAQ Parser für mathematische Formeln Java Basics - Anfänger-Themen 5
N mathematische Funktion Java Basics - Anfänger-Themen 29
L Mathematische zeichen Java Basics - Anfänger-Themen 10
D Methoden Mathematische Strukturen in Java umwandeln Java Basics - Anfänger-Themen 10
D Mathematische Rechnung als String Java Basics - Anfänger-Themen 4
T Ausdrucksparser für Mathematische Ausdrücke Java Basics - Anfänger-Themen 15
data89 Frage zum FAQ-'Parser für mathematische Formeln' Java Basics - Anfänger-Themen 4
M Mathematische Funktion: Ableiten Java Basics - Anfänger-Themen 2
D Mathematische Funktionen Zeichnen Java Basics - Anfänger-Themen 2
B Mathematische Funktionen Java Basics - Anfänger-Themen 3
Q mathematische Operationen als Methode und nicht Infix-Operator Java Basics - Anfänger-Themen 14
Spin Kompexe Mathematische Formeln Java Basics - Anfänger-Themen 10
G Mathematische Frage Java Basics - Anfänger-Themen 7
D Unicode für mathematische/statistische Zeichen. Java Basics - Anfänger-Themen 3
S Mathematische Zeichen (z.B. Alpha) ausgeben Java Basics - Anfänger-Themen 2
M Mathematische Funktionen zeichnen. Java Basics - Anfänger-Themen 2
A mathematische Funktionen grafisch darstellen Java Basics - Anfänger-Themen 8
E Das mathematische "!" in Java Java Basics - Anfänger-Themen 5
O mathematische Formel in quellcode Java Basics - Anfänger-Themen 5
B Mathematische funktionen Berechnen und ausgeben lassen?WIE? Java Basics - Anfänger-Themen 2
M mathematische zeichen und schreibweise in java Java Basics - Anfänger-Themen 5
E Hilfe bei rekursiver Funktion Java Basics - Anfänger-Themen 3
FunkyPhil94 Wert in einer Lambda Funktion erhöhen Java Basics - Anfänger-Themen 3
M Eine Funktion zuweisen Java Basics - Anfänger-Themen 3
V Die Funktion des neuen Schlüsselworts in Java Java Basics - Anfänger-Themen 1
M variable in anderer funktion aufrufen Java Basics - Anfänger-Themen 10
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
W GUI - JButton ohne Funktion? Java Basics - Anfänger-Themen 24
J Rekursive Funktion und return statement Java Basics - Anfänger-Themen 3
F Wie kann ich eine Funktion schreiben, die nur in bestimmten Fällen einen Wert zurückgibt? Java Basics - Anfänger-Themen 5
R Buttons ohne Funktion Java Basics - Anfänger-Themen 2
I Generische Funktion Java Basics - Anfänger-Themen 3
E Pervasive PSQL insert funktion geht nicht Java Basics - Anfänger-Themen 9
C Java Funktion: externe Daten vom Internet einbinden Java Basics - Anfänger-Themen 2
T Log Funktion erstellen Java Basics - Anfänger-Themen 1
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
H Den Wert einer rekursiven Funktion bestimmen Java Basics - Anfänger-Themen 5
J In main() Datei geöffnet, von anderer Funktion beschreiben Java Basics - Anfänger-Themen 3
M toDouble Funktion Java Basics - Anfänger-Themen 3
Tino1993 Ellipse über draw Funktion ohne spur wandern lassen Java Basics - Anfänger-Themen 6
X Ackermannsche Funktion Java Basics - Anfänger-Themen 32
P Dezimal zu Hexadezimalzahl Funktion Java Basics - Anfänger-Themen 5
S Verwenden von throw Exception an der Funktion Java Basics - Anfänger-Themen 2
M Arrays in Funktion Kopieren und Bearbeiten Java Basics - Anfänger-Themen 4
B Funktion mit mehreren Rückgabewerten aka Prozeduren? Java Basics - Anfänger-Themen 12
J Dynamisches Array durch split()-Funktion? Java Basics - Anfänger-Themen 3
D Funktion nur 1 Rueckgabewert Java Basics - Anfänger-Themen 9
M Wie lang eine Funktion/Methode? Java Basics - Anfänger-Themen 51
N den inhalt eines array per funktion ausgeben Java Basics - Anfänger-Themen 8
R Ackermann Funktion Java Basics - Anfänger-Themen 2
B Treetable (rekursive Funktion) aufbauen von Datenbank Java Basics - Anfänger-Themen 4
D Funktion zwei Arraylisten zu verleichen ob gleich funktioniert nicht Java Basics - Anfänger-Themen 26
N Abfragen eines Textes aus einem JTextField in Java, Funktion, CardLayout, Java Basics - Anfänger-Themen 2
T Rekursion Warum bricht meine Funktion nicht ab Java Basics - Anfänger-Themen 4
N Funktion funktioniert nicht immer Java Basics - Anfänger-Themen 6
E Contain-funktion überlisten Java Basics - Anfänger-Themen 4
J Division ohne Arithmetische Funktion Java Basics - Anfänger-Themen 2
S Funktion in Klasse auslagern Java Basics - Anfänger-Themen 4
J Problem mit Boolean bei Funktion! Java Basics - Anfänger-Themen 5
S Gibt es eine Funktion, die gewissermaßen eine Reihe von instanceOf() vereinheitlicht? Java Basics - Anfänger-Themen 19
D Nullstellen einer Funktion 3. Grades mit Horner Schema Java Basics - Anfänger-Themen 6
Aprendiendo Gibt es in der JAVA-API eine Funktion, die eine Dezimalzahl in eine binäre Zahl umwandelt? Java Basics - Anfänger-Themen 8
D Funktion gibt Dimension zurück Java Basics - Anfänger-Themen 11
A Rekursion Funktion in eine Iterativ Funktion umwandeln Java Basics - Anfänger-Themen 9
T static String Variable wird nur beim ersten aufruf durch eine Funktion geändert. Java Basics - Anfänger-Themen 16
B Zugriffe in einer Klasse / Funktion Java Basics - Anfänger-Themen 9
T Koordinatensystem zeichnen - Variablen merken? Quadratische Funktion zeichnen? Java Basics - Anfänger-Themen 5
J Array innerhalb einer Funktion mehrfach iniatilisieren Java Basics - Anfänger-Themen 4
T Lambda-Funktion bei Binärbäumen Java Basics - Anfänger-Themen 13
J Wie lässt sich der Konstruktor einer Klasse einer Funktion einer Klasse nutzen. Java Basics - Anfänger-Themen 4
M Thread.sleep() Funktion Java Basics - Anfänger-Themen 1
B OOP Wie benutze ich die Main Funktion richtig? Java Basics - Anfänger-Themen 10
H Nicht Static Funktion ohne Objekt aufrufen? Java Basics - Anfänger-Themen 6
K Methoden mit den Namen accept. Welche Funktion haben diese? Java Basics - Anfänger-Themen 2
E Compare-Funktion bei eigener Klasse Java Basics - Anfänger-Themen 4
S Threads run - Funktion wird nur einmal ausgeführt. Java Basics - Anfänger-Themen 8
R If Funktion funktioniert nicht :P Java Basics - Anfänger-Themen 3
H Funktion in Hintergrund und Vordergrund ausführen Java Basics - Anfänger-Themen 11
S Funktion die mir fuer einen String eine Zahl zwischen 0.0 und 1.0 zurueckliefert..? Java Basics - Anfänger-Themen 9
S Funktion eines Stacks Java Basics - Anfänger-Themen 4
T Integer-Objekt über Hash-Funktion in Array ablegen Java Basics - Anfänger-Themen 1
S Separate Funktion für JUnit-Test Java Basics - Anfänger-Themen 3
D Keine Funktion bei "else" Java Basics - Anfänger-Themen 5
S timer funktion mit javax panel Java Basics - Anfänger-Themen 3
T Klassen Funktion in einem Funktionsaufruf definieren Java Basics - Anfänger-Themen 3
F Funktion eines JButton in einen Vektor verlagern Java Basics - Anfänger-Themen 4
X Eval-Funktion mit Variable Java Basics - Anfänger-Themen 2
T Screenreader Funktion Java Basics - Anfänger-Themen 2
S Wertetabelle einer Funktion f : R -> R Java Basics - Anfänger-Themen 1
P Methoden suche funktion die char wert ausgibt wenn man numerischen wert und radix angibt Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben