Eine mathematische Funktion als Argument für eine Methode - Matheparser?

Screen

Bekanntes Mitglied
Hallo

Ich benutze eine Klasse um Nullstellen zu suchen. Ein Intervall wird halbiert ,bis Nullstellen gefunden werden.
Das Problem ist hier,dass ich nur eine Nullstelle finden kann, auch wenn die Funktion mehrere hat.
Mit verschiedenen Intervallen habe ich das ausprobiert, sollte aber im Intervall keine Nulstelle liegen bekomme ich eine Fehlermeldung: java.lang.StackOverflowError

Könnte mir jemand verraten, wie ich mehrere Nullstellen abfragen kann? Oder wie ich diesen Fehler vermeiden kann,wenn ich Intervalle ohne Nullstellen abfrage?


Java:
// Die Nulstellensuche
public class Nullstellensuche {

  /**
   * Die (stetige) Funktion für die Nullstellen gesucht werden sollen.
   */
  private Funktion funktion;
  
  /**
   * Genauigkeit, mit der Nullstellen von <code>funktion</code> berechnet werden
   * sollen.
   */
  private double genauigkeit = 0.000001;
  
  /**
   * Erzeugt eine neue Nullstellensuche mit der gegeben 
   * stetige reelwertigen <code>funktion</code>. Die Nullstelle
   * kann nährungsweise bis zur angegeben <code>genauigkeit</code>
   * berechnet werden.
   * 
   * @param funktion eine <code>stetige</code> Funktion
   */
  public Nullstellensuche(Funktion funktion, double genauigkeit) {
    this.funktion = funktion;
    this.genauigkeit = genauigkeit;
  }

  /**
   * Sucht eine Nullstelle in dem gegeben Intervall [links, rechts] und
   * findet sie auch, wenn die Vorzeichen von f(links) und f(rechts) verschieden sind,
   * dass heisst, wenn f(links) * f(rechts) < 0 sind.
   */
  public double sucheNullstelle(double links, double rechts) {
    double mitte = (links + rechts) / 2.0;
    
    if ( Math.abs( funktion.f(mitte) ) < genauigkeit ) {
      return mitte;
    } else if ( funktion.f(mitte) * funktion.f(rechts) < 0 ) {
      return sucheNullstelle(mitte, rechts);
    } else {
      // man überzeuge sich hier, dass f(mitte) * f(links) < 0 gelten muss!

       return sucheNullstelle(links, mitte);
    }
  }
}

Java:
 //Die Funktion
 public double f(double x) {
       
        return 2*Math.pow(x, 4)-1;
    }

Java:
// Die Abfrage der Nullstellen 
        double r= n.sucheNullstelle(-100,0);
        b= Math.round(r*100)/100.0);
        System.out.println(b);

        double r2= n.sucheNullstelle(0,100);
        b2= Math.round(r2*100)/100.0);
        System.out.println(b2);


Bei z.B n.sucheNullstelle(-100,-90); gibt es den Fehler von java.lang.StackOverflowError
Ich kann aber nicht wissen, ob zwischen -100 und -90 einer ist oder nicht..sollte keiner vorhandne sein, stürzt das Prog ab.

Help pls...
 
Zuletzt bearbeitet von einem Moderator:

U2nt

Bekanntes Mitglied
Ich weiß nicht, kann auch sein das das dieser Rekursions zeug is, kenn mich damit nicht aus, aber mir kommen diese:

Java:
public double sucheNullstelle(double links, double rechts) {
    double mitte = (links + rechts) / 2.0;
    
    if ( Math.abs( funktion.f(mitte) ) < genauigkeit ) {
      return mitte;
    } else if ( funktion.f(mitte) * funktion.f(rechts) < 0 ) {
      return sucheNullstelle(mitte, rechts);
    } else {
      // man überzeuge sich hier, dass f(mitte) * f(links) < 0 gelten muss!
 
       return sucheNullstelle(links, mitte);
    }
  }
}

komisch vor, du returns nochmal den Funktionsaufruf - also wie gesagt, kann auch sein das du da irgendwas mit Rekursion machst, ansonsten ..
 

Screen

Bekanntes Mitglied
Der Code von oben ist funktionsfähig ,er gibt mir eine richtige Nullstelle aus... ich brauche aber mehr, eigentlich alle Nullstellen der Funktionen.
Mit unterschiedlichen Intervallen funktioniert das leider nicht !
 
Zuletzt bearbeitet:

alien0matic

Mitglied
Dein Problem ist, dass du davon ausgehst, dass auf dem Interval eine Nullstelle vorhanden ist. Ist keine vorhanden rufst du deine Methode immer weiter auf bis der Speicher nichtmehr ausreicht. Hier fehlt eine Abbruchbedingung.
 

Screen

Bekanntes Mitglied
Dein Problem ist, dass du davon ausgehst, dass auf dem Interval eine Nullstelle vorhanden ist. Ist keine vorhanden rufst du deine Methode immer weiter auf bis der Speicher nichtmehr ausreicht. Hier fehlt eine Abbruchbedingung.

Das habe ich mir auch schon gedacht...leider ist mir die Bedingung nicht bekannt. Es kann keine If Befindung mit < oder > 0 schreiben.
Wie könnte diese aussehen?

So in der Art If( ErgebnisvonNullstellensuche== keine Zahl) { break ; } ..aber wie genau?
 
Zuletzt bearbeitet:

alien0matic

Mitglied
Naja spätestens wenn links und rechts gleich sind wird man nichts mehr finden ;)
Da du hier aber mit double werten rechnest müsstest du hier auch eine Genauigkeit mit einbeziehen. Allerdings müsste auch der return wert ein anderer sein, denn es gibt 2 Möglichkeiten: Nullstelle oder nichts.
Ich würde hier also ein Double Objekt zurückgeben.
 

Final_Striker

Top Contributor
Das habe ich mir auch schon gedacht...leider ist mir die Bedingung nicht bekannt. Es kann keine If Befindung mit < oder > 0 schreiben.
Wie könnte diese aussehen?

So in der Art If( ErgebnisvonNullstellensuche== keine Zahl) { break ; } ..aber wie genau?

Du musst die Suche abbrechen sobald der Abstand der Punkte links und recht eine festgelegte Länge unterschreitet.
 

ne0n2005

Mitglied
Du könntest einfach behaupten, dass wenn er 1000mal das Intervall halbiert hat und immer noch nicht in deinem Genauigkeitsbereich ist es keine Nullstelle gibt.
Jedoch ist das ein bisschen schwer zu Implementieren. Ein einfacher zähler, wie oft die Methode schon aufgerufen wurde würde vielleicht sogar auch Funktionieren, aber um es schön zu machen müsste man der Methode glaube ich einen Zähler als Parameter mitgeben, damit jede Verzweigung ihren eigenen Zähler bekommt.

edit: Es sollte in dem Forum einen Knopf "Dummes Kommentar sofort unwiederruflich löschen und alle User die es gelesen haben aufspüren und zum Schweigen bringen lassen" geben. Denn natürlich hat sich dann nach diesen 1000 durchgängen der linke und der rechte Wert angenähert.
Ich glaube ich sollte einfach nur noch Fern gucken wenn ich krank bin ;)
 
Zuletzt bearbeitet:

ne0n2005

Mitglied
Mein Vorhaben den Link zur Rekursion von google zu posten sollte auch bloß der reinen Belustigung dienen, denn früher kam dann immer eine Endlosschleife "Meinten sie: Rekursion". Aber irgendwie gibt es das nun leider nichtmehr.
 

Screen

Bekanntes Mitglied
Also Ich kann den Fehler vermeiden ,wenn ich die Bedingung:

Java:
if (funktion.f(links) == funktion.f(rechts))
     {
           return 0;
     }


die Nullstellensuche -Methode einbaue.
Ich kann aber keine 0 ausgeben,wenn im Intervall keine Nullstelle ist :D
Trotzdem habe ich jetzt nur eine Nullstelle :<
 
Zuletzt bearbeitet:

alien0matic

Mitglied
Also Ich kann den Fehler vermeiden ,wenn ich die Bedingung:

Java:
if (funktion.f(links) == funktion.f(rechts))
     {
           return 0;
     }


Die die Nullstellensuche -Methode einbaue.
Ich kann aber keine 0 ausgeben,wenn im Intervall keine Nullstelle ist :D
Trotzdem habe ich jetzt nur eine Nullstelle :<


Java:
if (funktion.f(links) == funktion.f(rechts)) //möglich, dass das nie eintritt.
     {
           return 0; //und wenn die nullstelle wirklich 0 ist? Wie unterscheidest du das?
     }
 

ne0n2005

Mitglied
Die Methode hat doch auch nur einen Rückgabewert, ich weiß jetzt gerade nicht mehr genau, aber müsste das dann nicht die zuletzt gefundene Nullstelle sein ? Also wenn der Stack dann irgendwann runterbricht und die Ergebnisse zurückliefert.
 

Screen

Bekanntes Mitglied
Ne klar...

Es stehen aber immer noch die Fragen offen:
1. Wie soll die Abbruchbedingung aussehen? bzw. der returnwert
2. Wie frage ich alle anderen Nullstellen des selben Intervalls ab?
 

Final_Striker

Top Contributor
Nimm am besten als Rückgabewert
Code:
Double.MAX_VALUE;
oder
Code:
Double.MIN_VALUE;
(größte oder kleinster double Wert) da an diesen Stellen keinen Nullstelle liegen kann. ;-)
 

ne0n2005

Mitglied
[Java]
public double sucheNullstelle(double links, double rechts) {
double mitte = (links + rechts) / 2.0;

//Rekursionsverankerung 1:
if (funktion.f(links) == funktion.f(rechts)) {
//wenn es nicht möglich war eine Nullstelle zu finden
return 0;
}
//Rekursionsverankerung 2:
if ( Math.abs( funktion.f(mitte) ) < genauigkeit ) {
// wenn eine Nullstelle gefunden wurde
return mitte;
}


if ( funktion.f(mitte) * funktion.f(rechts) < 0 ) {
//wenn zwischen der mitte und rechts ein Vorzeichenwechsel stattfindet
//es dort also eine Nullstelle geben muss
return sucheNullstelle(mitte, rechts);
}
if( funktion.f(mitte) * funktion.f(links) < 0 )
//wenn zwischen der mitte und links ein Vorzeichenwechsel stattfindet
//es dort also eine Nullstelle geben muss
return sucheNullstelle(links, mitte);
}
//wenn jetzt in keines der beiden letzten if´s gegangen wurde gibt es keine Nullstelle
}
[/Java]


ok vielleicht den Code hier oben garnicht so ernst nehmen. Beim schreiben ist mir glaub ich schon etwas unschönes aufgefallen: Undzwar interessierst du dich nur für die rechte Seite, und testest diese dann mit deinem Vorzeichenwechsel-Trick. Gibt es nun aber rechts vom Mittelpunkt 2 Nullstellen, so dass das Vorzeichen von f(mitte) und f(rechts) das gleiche ist, so suchst du links nach einer Nullstelle. Sollte es links keine geben, findest du garkeine.

Ich glaube es wäre fast sinnvoll die Reukstion wie folgt aufzubauen:

Wenn keine Nullstelle in der Mitte vorliegt und rechts nicht gleich links sind, dann rufe dich selbst noch einmal mit links und mitte UND mitte und rechts auf.

Ich weiß ja nicht aus welchem bereich du anfangs mit rechts und links kommst, jedoch kann es glaube ich sein, dass es nicht immer fehlerfrei funktioniert zu schauen ob sich zwischen rechts und der mitte das vorzeichen gedreht hat.
 
Zuletzt bearbeitet:

Screen

Bekanntes Mitglied
Hallo

Ich habe das Problem teilweise gelöst.

Die Methode f gibt einen doublewert ,also die lösung einer funktion zurück.
Wie könnte ich dieser Methode aber eine Funktion übergeben?
Ich habs mit dme Douple-Parse versucht, das geht aber nicht.
Wie kann ich z.B. 1*Math.pow(x, 4)+2 diese Funktion dieser MEthode übergeben,damit sie das Ergebnis zurückliefert?
z.b. ich gebe mit der Scannermethode eine Gleichung ein, es ist aber ein String. Darum kann ich die Funktion der Methode f nicht übergeben,damit sie das Ergebnis mit dme x zurücklifert.

Java:
public double f(double x) {
        
       // return 1*Math.pow(x, 4)+2*Math.pow(x, 3)-13*Math.pow(x, 2)-14*Math.pow(x, 1)+24;
       
        return x*x-2;
    }

Wie mache ich das?
return "x*x-2"; geht nicht !
return Double.parseDouble("x*x-2") geht nicht!

Wie gebe ich nun der Methode eine Funktion?
 

ne0n2005

Mitglied
Hey, fuktioniert die rekursive Suche der Nullstellen denn jetzt, weil ich war jetzt der Meinung, dass sie z.B. für f(x) = x²-1 nicht gehen sollte, wenn du die Suche mit (-500,200) aufrufst.
 

Screen

Bekanntes Mitglied
Die Klasse funktioniert nun... naja ich bekomme wenigstens 2 nullstellen raus. Wenn ich von dem Intervall -100 bis 0 und von 0 bis +100 abfrage. :D

Leider weiß ich nicht wie ich per Scanner(methode) eine neue Funktion der Methode f übergeben soll :(
 

Marco13

Top Contributor
Also das
if (funktion.f(links) == funktion.f(rechts))
als Abbruchbedingung ist glaub' ich nicht so gut. Spätestens bei nicht-stetigen Funktionen (bei denen die Sprungstelle genau zwischen links und rechts liegt) dürfte es das raushauen. Sowas wie
if (Math.abs(links-rechts) < 1e8) abbruch
würde mir eher einleuchten.

Für die Information "es gibt dort keine Nullstelle" bietet sich IMHO die Rückgabe von Double.NaN an....
Code:
double berechne(...)
{
    if (Math.abs(links-rechts) < 1e8) return Double.NaN;
    ...
}


// Aufruf
double nullstelle = berechne(...);
if (Double.isNaN(nullstelle)) System.out.println("Da is nix");
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
KonradN Mal eine Frage zu Binary Serialization Allgemeine Java-Themen 15
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
dokan wie kann ich eine funktionierende Suchleiste erstellen Allgemeine Java-Themen 1
B Wie erstelle ich dazu eine Abfrage ob der Button gedrückt wurde? Allgemeine Java-Themen 8
J Integration pay Pale in eine JavaFx Desktop Application Allgemeine Java-Themen 1
berserkerdq2 Wenn ich einfach eine GIF in den Scenebuilder als Bild reinpacke, wird das dann asl Gif angezeigt Allgemeine Java-Themen 1
8u3631984 Strukturiertes Logging : Jedes Feld in eine seperate Zeile - aber wie ? Allgemeine Java-Themen 2
berserkerdq2 Gibt es eine saubere Dokumentation von Jfoenix? Allgemeine Java-Themen 1
M Eigene Datenstruktur um eine Menge zu speichern Allgemeine Java-Themen 3
A Wie schreibe ich eine For-Schleife in ein Stream API um? Allgemeine Java-Themen 12
E Es ist nicht möglich, eine Batch-Anweisung auszuführen. Allgemeine Java-Themen 9
T Eine Frage des Designs Allgemeine Java-Themen 2
R Best Practice Erfahrungswerte für eine Migration von JSF nach Angular (oder anderes JS-Framework) Allgemeine Java-Themen 1
H Eine Linie verkürzen Allgemeine Java-Themen 5
N rekursion mehrfach eine Methode Öffnen Allgemeine Java-Themen 4
berserkerdq2 Wenn ich eine Methode nur jede 50ms ausführen will, wie mach ich das? Allgemeine Java-Themen 4
berserkerdq2 Wie synchronisiere ich eine for-Schleife Allgemeine Java-Themen 12
berserkerdq2 Wie mache ich in IJVM eine if verzweigung? Allgemeine Java-Themen 27
F Gibt es mittlerweile eine Alternative zu DaisyDiff Allgemeine Java-Themen 2
_user_q Was brauche ich, um eine eigene "Search for updates"-Funktion einzubauen? Allgemeine Java-Themen 1
E Eine Methode einer extendeten Klasse deakitivieren Allgemeine Java-Themen 12
LimDul Kam eine java.net.URL zu einer HashMap und ging als DNS Anfrage wieder heraus Allgemeine Java-Themen 18
pizza_dox_9999 Wie füge ich eine "eigene" ScriptEngine dem ScriptEngineManager? Allgemeine Java-Themen 3
F Kennt ihr eine Library um 2 HTML Seiten zu diffen? Allgemeine Java-Themen 8
Y ImagePanel von anderer Klasse in eine MainFrame Klasse hinzufügen. Allgemeine Java-Themen 1
OnDemand Anzeigen was eine Applikation macht Allgemeine Java-Themen 1
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
J Eine Frage zu den Threads und Task Allgemeine Java-Themen 1
Tobero Wie bekomme ich in welchem Quadrat sich eine Position in einem Grid befindet Allgemeine Java-Themen 11
Tobero Wie kann man eine Poisson Disc Sampler? Allgemeine Java-Themen 7
M Openjdk - gibt es auch eine Openjre? Allgemeine Java-Themen 7
R Lambda Expression in einer Methode execute() aufrufen (execute() ist eine Methode aus dem funktionalen Interface Command) Allgemeine Java-Themen 5
S Noch eine Design-Frage zu Setter Allgemeine Java-Themen 6
N Arrayliste in eine Datei speichern Allgemeine Java-Themen 4
J Öffnen eine jar-Datei Allgemeine Java-Themen 11
Zrebna Gibt es eine Möglichkeit eine NPE zu vermeiden, wenn null returned wird? Allgemeine Java-Themen 3
S Klassen Einfügen von unbekannter menge an Variablen in eine Klasse mithilfe von ASM Allgemeine Java-Themen 5
R Wo müsste ich im Code eine Änderung vornehmen? Allgemeine Java-Themen 6
S Rückgabe einer HttpURLConnection für eine Seite einlesen bei der man eingeloggt ist..? Allgemeine Java-Themen 5
S Gibt es eine Moeglichkeit die Runtime Ausführung zu analysieren..? Allgemeine Java-Themen 7
S Habt ihr eine Idee wie man Serializierung testen kann..? Allgemeine Java-Themen 6
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
Drachenbauer warum bekomme ich hier eine NullPointerException Allgemeine Java-Themen 6
M Gibt es eine API die den aktuellen Wert eines Indikators beim Trading zurückgibt? Allgemeine Java-Themen 7
X Collections Gibt es eine Klasse welche die Vorteile von List und HashMap vereint, aber konstante Laufzeit (O(1)) hat in Java? Allgemeine Java-Themen 4
N Eine stelle der Fibonacci-Zahlenfolge ausgeben. Allgemeine Java-Themen 4
E Hat der Compiler einen Fehler oder warumbeendet return nicht eine Methode ? Allgemeine Java-Themen 7
W Collections Suche etwas Sorted-List-Artiges...hat jemand eine Idee? Allgemeine Java-Themen 13
L Methoden Über Reflections eine Methode mit aufrufen Allgemeine Java-Themen 3
S Kann ich eine Methode schreiben die alle Arten von funktionalen Interfaces akzeptiert..? Allgemeine Java-Themen 21
Drachenbauer Wie kann eine vorgegebene Farbe über einen String erkannt werden? Allgemeine Java-Themen 11
J Datenstruktur für eine Map erstellen Allgemeine Java-Themen 2
sascha-sphw Java 9 module Zugriff auf eine resource einer anderen JAR Allgemeine Java-Themen 0
pkm Kann eine ServerSocket-Klasse nicht stateful sein? Allgemeine Java-Themen 4
B Aufruf der Methode ergibt eine Exception Allgemeine Java-Themen 13
I Eine Anwendung so gut wie möglich beschützen Allgemeine Java-Themen 9
M Wie kann man eine void Methode mit Variablen von zwei verschiedenen Objekten ausführen? Allgemeine Java-Themen 15
X Wie mache ich hier eine Rekursion rein ? Allgemeine Java-Themen 7
K OOP Suche Hilfe + Erklärung für eine Hausaufgabe Allgemeine Java-Themen 1
N Über einen Button in JavaFX ein Event über eine Pipeline schicken(Netty) Allgemeine Java-Themen 1
M Login in eine Webseite mit Java Allgemeine Java-Themen 3
A NetBeans Suche Programmierer für eine Belegarbeit Allgemeine Java-Themen 11
D Warum kann ich eine (deflaut) Klasse aus einer Libary in einem anderen Projekt benutzen? Allgemeine Java-Themen 3
L Übergabe an eine eher einfache Java- Applikation wegen Kündigung Allgemeine Java-Themen 1
C Ein Iterator ist eine Implementierung des Interface Iterable? Allgemeine Java-Themen 2
M Schlüsselworte Was ist eine Java Spezifikation + JSR? Allgemeine Java-Themen 11
E RMI NULL-Pointer-Exeception wenn der RMI-Proxy eine Methode deligiert Allgemeine Java-Themen 2
E RMI FWH: RMI- Wie erstelle ich stubs dynamisch, bzw. unterdrücke eine Statisch-Warnung? Allgemeine Java-Themen 0
J Eine bestimmte Zahl im Integer ändern Allgemeine Java-Themen 9
Q-bert Strings aus der JList in eine Datenbank speichern Allgemeine Java-Themen 1
D Möglichkeit mit GAE eine Table auszulesen und eine csv zu schreiben Allgemeine Java-Themen 22
S Korrekte Pfadangaben damit eine .jar Datei unter Windwos läuft. Allgemeine Java-Themen 24
D Eine Forschleife mit Threads abarbeiten um es zu schneller zu machen. Ist das möglich? Allgemeine Java-Themen 20
S Wie kann ich eine kleine Stelle in meinem Code mit multiplen Threads abarbeiten..? Allgemeine Java-Themen 20
B Gibt es eine Funktion die den Datentyp einer Variablen ermittelt? Allgemeine Java-Themen 8
R bei eclipse von java in eine andere programmiersprache wechseln? Allgemeine Java-Themen 2
D Pivot-Wahl beim QuickSort steigert die Effizienz, eine Lüge??? Allgemeine Java-Themen 17
C Eclipse einstellen, dass eine bestimmte JDK benutzt werden soll Allgemeine Java-Themen 3
M Klassen Eine Klasse in mehreren Klassen einbinden Allgemeine Java-Themen 11
A Best Practice Java - eine Art Plugin-Struktur Allgemeine Java-Themen 3
S wie rufe ich mit .jar datei eine .bat auf? Allgemeine Java-Themen 15
R Signatur von Methoden in eine Datei schreiben? Allgemeine Java-Themen 4
perlenfischer1984 Functionsparameter prüfen und eine Exception werfen !? Allgemeine Java-Themen 11
J Mehrere Wörter getrennt in eine Array einlesen, wie ? Allgemeine Java-Themen 7
E Methoden Hat jemand eine gute Lösung? Allgemeine Java-Themen 5
Z NullPointerException beim Schreiben einer ArrayList in eine Datei Allgemeine Java-Themen 6
Exdroid BlueJ Wie bekomme ich die Ausgabe in eine TXT Datei? Allgemeine Java-Themen 2
G Methoden Aus einem Event, wo ich weiß, dass es ausgeführt werden wird, eine Get-Methode basteln Allgemeine Java-Themen 8
F Wie kann ich auf einem System prüfen, ob eine lib verfügbar ist? Allgemeine Java-Themen 2
Tausendsassa Interface Eine Gui von einer anderen schließen lassen Allgemeine Java-Themen 3
S Threads Kann mir jemand helfen eine parallele Hilfsklasse zu implementieren..? Allgemeine Java-Themen 3
S Best Practice Brauche eine Idee für eine Java Projekt! Allgemeine Java-Themen 11
P Zwei ArrayLists: Ohne die eine überhaupt anzurühren, wird sie verändert Allgemeine Java-Themen 2
M Eine Datei im Speicher erneut laden(?) Allgemeine Java-Themen 1
V Gibt es eine Möglichkeit die Internet auslastung mit Java auszulesen Allgemeine Java-Themen 11
L Drop Emails von Outlook in eine JList Allgemeine Java-Themen 5
P Wie funktioniert das Feedback eines Klicks auf eine Java GUI Allgemeine Java-Themen 10
P Dezimalzahl in eine Binärzahl umrechnen Allgemeine Java-Themen 12
M Eine static-Methode verlassen Allgemeine Java-Themen 2
X HTTP Auslesen der Ergebnisse von einer Webseite und in eine Liste packen Allgemeine Java-Themen 1

Ähnliche Java Themen

Neue Themen


Oben