Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Tutorial

FBMath

von RedakteurnemoredSeite 3 von 5

Analysis: Berechnung des Minimums

FBMath stellt mehrere Verfahren zur Verfügung, um das Minimum einer Funktion zu bestimmen. Die Bibliothek kann dabei auch mit mehreren Unbekannten umgehen; hier wird jedoch nur auf Funktionen mit einer Unbekannten eingegangen.

Ein Verfahren dafür ist die Externer Link!Golden Section Search. Sie wird mit dem Befehl

GoldSearch(@funktion, a, b, maxIter, toleranz, xMin, yMin)

aufgerufen. Dabei bedeuten die Parameter:

'xMin' und 'yMin' liefern in jedem Fall die errechneten Näherungswerte zurück, egal ob die Suche erfolgreich war (d. h. der gefundene Wert nahe genug am gesuchten Wert liegt) oder nicht. Ob die Suche erfolgreich war, können Sie mit MathErr herausfinden: Sie enthält entweder den Wert OptOk (=0; Erfolg) oder OptNonConv (=-1; keine Konvergenz).

Das Minimum muss sich nicht zwischen 'a' und 'b' befinden; besitzt die Funktion jedoch mehrere Minima, so kann mit der Angabe von 'a' und 'b' gezielt nach dem Minimum zwischen diesen beiden Zahlen gesucht werden. Dazu sollten Sie aber sicherstellen, dass sich exakt ein Minimum zwischen 'a' und 'b' befindet.

Bitte beachten Sie, dass es sich bei der Berechnung des Minimums um ein numerisches Verfahren handelt und Sie aufgrund der eingeschränkten Genauigkeit von Computerberechnungen keine exakten Ergebnisse erwarten dürfen!

Beispiel:

#INCLUDE "math.bi"

FUNCTION parabel(x AS DOUBLE) AS DOUBLE
  ' Parabel mit Scheitelpunkt S(1.777 / 0.444); hier liegt auch das Minimum
  RETURN (x-1.777)^2 + 0.444
END FUNCTION

DIM AS DOUBLE Xmin, YMin, toleranz = 10^-7
GoldSearch(@parabel, -10, 10, 50, toleranz, Xmin, Ymin)
IF MathErr = OptOk THEN
  PRINT "Das Minimum befindet sich (etwa) bei (" & Xmin & " / " & Ymin & ")"
ELSE
  PRINT "Das Minimim konnte leider nicht bestimmt werden."
END IF
SLEEP

Da das Ergebnis höchstwahrscheinlich sowieso nicht exakt ist, ist es empfehlenswert, das Ergebnis sinnvoll zu runden. Auch dafür stellt FBMath eine Funktion zur Verfügung. 'Xmin' und 'Ymin' sollen nun auf zwei Stellen hinter dem Komma gerundet ausgegeben werden:

  PRINT "Das Minimum befindet sich (etwa) bei (" _
        & Round(Xmin, 2) & " / " & Round(Ymin, 2) & ")"

 

Gehe zu Seite Gehe zu Seite  1  2  3  4  5  
Zusätzliche Informationen und Funktionen
  • Das Tutorial wurde am 06.11.2010 von Redakteurnemored angelegt.
  • Die aktuellste Version wurde am 12.11.2010 von Redakteurnemored gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen