Annäherung an den Grenzwert einer impliziten Funktion durch HalbierungC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Annäherung an den Grenzwert einer impliziten Funktion durch Halbierung

Post by Anonymous »

Ich muss eine Halbierung auf einer Funktion statt auf einem Array ausführen. Meine Recherchen in der .NET-API haben nur Array.BinarySearch ergeben, bei dem die gesuchte Domäne ein Array ist, aber das ist nicht mein Fall.
Die Reproduzierbarkeit ist einfach. Jede Funktion mit der Signatur

Code: Select all

public static bool IsValid(double x)
hat die gleiche Signatur wie die Funktion, die ich suchen muss. Verhaltenstechnisch muss ich davon ausgehen, dass der Rückgabewert der Funktion monoton ist, aber möglicherweise ansteigt oder abnimmt: Das heißt, für den Wert von x, den ich finden muss, ist der Rückgabewert wahr für alle x darüber und falsch für alle x darunter, oder es könnte die umgekehrte Version davon sein.
Meine Suchfunktionssignatur wird so aussehen

Code: Select all

public double Bisect(Func func, double xTrue, double xFalse, double tolerance = 1e-3)
wo
  • Code: Select all

    func
    ist die Funktion, die wiederholt aufgerufen werden soll
  • Code: Select all

    xTrue
    ist ein bekannter Wert von x, für den func true zurückgibt
  • Code: Select all

    xFalse
    ist ein bekannter Wert von x, für den func false zurückgibt
  • Code: Select all

    tolerance
    ist die Differenz zwischen zwei Funktionsaufrufen, unterhalb derer die Suche beendet wird.
Wenn nichts eingebaut ist, kann ich dies gerne selbst implementieren.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post