Tutorial
FBMath
von nemored | Seite 2 von 5 |
Zusätzlich bereitgestellte Funktionen
FBMath stellt einige zusätzliche mathematischen Funktionen zur Verfügung:
- Exp2(x) und Exp10(x) berechnen die Funktionen 2^x und 10^x.
- Log2(x) und Log10(x) liefern die Logarithmen log2(x) und log10(x). Für Logarithmen mit anderer Basis steht LogA(x, a) zur Verfügung, womit loga(x) berechnet wird.
- Pythag(x, y) bestimmt die Länge der Hypotenuse eines rechtwinkligen Dreiecks mit den Kathetenlängen x und y; also Pythag(x, y) = SQRT(x^2 + y^2)
- FixAngle(theta) gibt den Winkel zurück, der theta entspricht und im Intervall [-PI, PI] liegt. Befindet sich theta bereits in diesem Intervall, wird theta zurückgegeben; ansonsten wird ein Vielfaches von 2*PI addiert oder subtrahiert, um in den Bereich zu gelangen.
- Sinh(x), Cosh(x) und Tanh(x) berechnen den Sinus Hyperbolicus, Kosinus Hyperbolicus bzw. Tangens Hyperbolicus. ASinh(x), ACosh(x) und ATanh(x) liefern die entsprechenden Umkehrfunktionen.
Werden für die Funktionen ungültige Werte verwendet, dann bricht die Programmausführung nicht ab, sondern FBMath setzt eine Fehlervariable namens MathErr. Folgende Fehlermeldungen sind möglich:
Fehlercode | Wert | Bedeutung |
---|---|---|
FOk | 0 | kein Fehler |
FDomain | -1 | Das Argument befindet sich nicht im Definitionsbereich. |
FSing | -2 | Es wurde ein Singularitätsfehler erzeugt (siehe unten) |
FOverflow | -3 | Das Ergebnis ist betragsmäßig zu groß. |
FUnderflow | -4 | Das Ergebnis ist betragsmäßig zu klein. |
Ein 'Singularitätsfehler' entsteht, wenn die Funktion für das gewählte Argument nicht definiert ist, es aber möglich ist, einen Wert beliebig nahe am gewählten Argument einzusetzen. Beispielsweise ist der Logarithmus für negative Zahlen nicht definiert. Es würde der Fehler FDomain erzeugt werden. Auch der Wert 0 darf nicht eingesetzt werden, aber er befindet sich an der Grenze der einsetzbaren positiven Zahlen; daher wird hier der Fehler FSing erzeugt.
Beispiel
#INCLUDE "math.bi"
PRINT "Dieses Programm berechnet für eingegebene x die Werte von 10^x"
PRINT "sowie des Logarithmus von x zur Basis 10."
PRINT
PRINT "Um das Programm zu beenden, drücken Sie ENTER ohne Werteingabe."
DIM x AS DOUBLE, y AS DOUBLE, eingabe AS STRING
DO
PRINT
INPUT "Geben Sie x ein: x=", eingabe
IF eingabe = "" THEN EXIT DO ' Leereingabe -> Programmende
x = val(eingabe)
y = Exp10(x)
SELECT CASE MathErr
CASE FOk : PRINT "10^"; x ;" = "; y
CASE FOverflow : PRINT "Das Ergebnis von 10^"; x ;" ist leider zu groß!"
CASE FUnderflow : PRINT "Das Ergebnis von 10^"; x ;" ist leider zu nahe an 0!"
END SELECT
y = Log10(x)
SELECT CASE MathErr
CASE FOk : PRINT "Log10(x) = "; y
CASE FDomain : PRINT x; " liegt außerhalb des Definitionsbereichs von Log10!"
CASE FSing : PRINT x; " liegt am Rand des Definitionsbereichs von Log10!"
CASE FOverflow : PRINT "Das Ergebnis von Log10("; x ;") ist leider zu groß!"
CASE FUnderflow : PRINT "Das Ergebnis von Log10("; x ;") ist leider zu nahe an 0!"
END SELECT
LOOP
Zusätzliche Informationen und Funktionen | |||||||
---|---|---|---|---|---|---|---|
|