AW: Iterative Verfahren für Rückrechnung auf Annhamen
23.05.2019 15:05:40
Zwenn
Hallo Jens,
für die Intervall-Lösung berechnest Du immer den Wert, der sich aus den Parametern in der Mitte Deines Intervalls ergibt. Ist das Ergebnis kleiner als der gesuchte Wert, setzt Du die Intervallgrenzen auf die obere Hälfte des aktuellen Intervalls und rufst die Funktion mit diesen Parametern aus sich selbst heraus auf (rekursiv). Ist der berechnete Wert beim nächsten Durchlauf größer, als der gesuchte Wert, muss der gesuchte Wert in der unteren Hälfte des aktuell bearbeiteten Intervalls liegen, usw. Auf diese Weise bist Du bei jedem Aufruf direkt die Hälfte eines Intervalls los und in maximal log2(n) Funktionsaufrufen beim gesuchten Werten.
Die Abbruchbedingung für die Funktionsaufrufe ist Dein Vergleichswert. Ist das berechnete Ergebnis also kleiner-gleich diesem Wert, wird die Funktion nicht erneut aufgerufen, sondern Du gibst die Lösung an die aufrufende Funktion zurück. Da sich jede aufgerufene Instanz der Funktion in ihrem Code hinter dem Selbtsaufruf befindet, wird die Lösung bis zur ersten aufrufenden Routine durchgereicht. Also an die Sub, die die rekursive Funktion als erste aufgerufen hat.
In Pseudocode sieht das prinzipiell so aus:
Function Annaehern(aUnten as Double, _
bUnten as Double, _
aOben as Double, _
bOben as Double, _
vergleichsWert as Double) as Double
Bestimme die Mitte des Intervalls zwischen den Oben- und Unten-Werten
Merke Dir die Werte der Mitte, sie bilden ggf. eine neue Intervallgrenze
Berechne für die gefundene Mitte den gesuchten Wert
Wenn berechneterWert > vergleichsWert Dann
lösung = Annaehern(aUnten, bUnten, aMitte, bMitte)
Ende Wenn
Wenn berechneterWert
Habe das jetzt aus dem Kopf aufgeschrieben. Müsste aber in etwa so funktionieren. Der Vergleichswert müsste dann aus Deinen Spalten C oder D stammen. Was Du berechnest weiß ich natürlich nicht. Das klappt aber wie gesagt nur, wenn Du anhand des errechneten Wertes eindeutig bestimmen kannst, ob der gesuchte Wert in der unteren oder oberen Intervallhälfte liegen muss.
Viele Grüße,
Zwenn