Die mathematische Standardbibliothek
math.h
Um die Funktionen der mathematischen Bibliotheken verwenden zu können, muss zu Anfang des Programms die Datei math.h eingebunden werden:#include <math.h>
Trigonometrische Funktionen
Die Prototypen der Winkelfunktionen sind in Tabelle (tabwinkelfkt) zusammengestellt.(tabwinkelfkt) [Trigonometrische Funktionen]
Deklaration | Funktion |
---|---|
double acos(double); | Arcus Cosinus |
double asin(double); | Arcus Sinus |
double atan(double); | Arcus Tangens |
double atan2(double, double); | Arcus Tangens zweier Variablen |
double cos(double); | Cosinus |
double cosh(double); | Cosinus Hyperbolicus |
double sin(double); | Sinus |
double sinh(double); | Sinus Hyperbolicus |
double tan(double); | Tangens |
double tanh(double); | Tangens Hyperbolicus |
Bogenmaß
Alle Parameter werden in Bogenmaß übergeben. Wird das Gradmaß benötigt, müssen Sie es selbst umrechnen. Zum Glück ist das nicht schwer. Die Umrechnung vom Gradmaß α ins Bogenmaß x erfolgt nach der Formel:
x = α/180 · π
Damit sich der Compiler daran nicht verschluckt, sollten Sie es vielleicht auf folgende Weise formulieren:
bogenmass = gradmass/180*3.1415926535;
Die Umrechnung vom Bogenmaß x ins Gradmaß α ist dementsprechend:
α = (x · 180)/π
Das sieht im Programm dann so aus:
gradmass = bogenmass*180/3.1415926535;
Exponenten, Wurzeln und Logarithmen
exp()
Die Funktion exp(a) liefert den Wert von ea, wobei e die eulersche Zahl ist:double exp(double a);
Soll ein beliebiger Exponent ab berechnet werden, verwendet man die Funktion pow():
double pow(double a, double b);
Wurzel
Die Funktion sqrt() ermittelt die Quadratwurzel eines Fließkommawertes. Die Abkürzung steht für den englischen Ausdruck sqare root.double sqrt(double a);
Logarithmus
Die Funktion log() berechnet den natürlichen Logarithmus von a, also den Logarithmus der Zahl a zur Basis der eulerschen Zahl e:double log(double a);
Zur Berechnung des Logarithmus zur Basis 10 gibt es eine eigene Funktion namens log10():
double log10(double a);
frexp() und ldexp()
Die Funktion frexp() zerlegt den Fließkommawert a derart, dass a = f · 2b gilt. Dabei ist f der Rückgabewert der Funktion, der zwischen 1/2 und 1 liegt.double frexp(double a, int *b);
Der Wert von b wird der aufrufenden Parametervariablen per Adresse übergeben. Ein Aufruf der Funktion sieht also etwa so aus:
int b; f = frexp(a, &b);
Die Funktion ldexp() ist die Umkehrfunktion zu frexp():
double ldexp(double ai, int b);
Sonstige Funktionen
Absolutbetrag
Die Betragsfunktion liefert den Wert des übergebenen Wertes, wenn er positiv ist, und multipliziert ihn mit -1, wenn er negativ ist. Damit liefert die Funktion also immer einen positiven Wert. Es gibt eine Funktion namens abs() für ganzzahlige Werte aus der Bibliothek stdlib und eine Funktion fabs() für Fließkommazahlen aus der math-Bibliothek.#include <stdlib.h> int abs(int j); long labs(long k);
Die Funktion fabs() unterscheidet sich im Typ des Parameters und des Rückgabewertes von abs() und darin, dass die Datei math.h eingebunden werden muss.
#include <math.h> double fabs(double a);
Modulo
Die Modulo-Berechnung erfolgt bei ganzzahligen Werten durch den Operator %. Sie ermittelt den Rest bei einer ganzzahligen Division. Diese Berechnung wird bei Fließkommawerten durch die Funktion fmod() durchgeführt:double fmod(double a, double b);
Der Fließkommawert a wird durch die Funktion modf() in seinen ganzzahligen Anteil und die Nachkommastellen aufgespalten. Der ganzzahlige Anteil liegt im Parameter b, und die Nachkommastellen sind der Rückgabewert der Funktion:
double modf(double a, int* b);
Die Funktion ceil() liefert die nächsthöhere ganze Zahl zurück:
double ceil(double);
Die Funktion floor() liefert die nächstniedrige ganze Zahl zurück:
double floor(double);
Komplexe Zahlen
Komplexe Zahlen bestehen aus einem Real- und einem Imaginärteil. Eine Klasse muss beide Bestandteile enthalten, um komplexe Zahlen abbilden zu können. Die Standardbibliothek von C++ bietet eine Template-Klasse an, die mit den drei verschiedenen Fließkommatypen float, double und long double verwendet wird. Der Fließkommatyp wird in spitzen Klammern hinter den Template-Namen complex gesetzt:#include <complex> using namespace std; complex<double> meinKomplex(-1, 3);
Die komplexe Zahl meinKomplex wurde durch den Konstruktor mit dem Realteil -1 und dem Imaginärteil 3 initialisiert. Die Elementfunktion real() liefert den Realteil und die Funktion imag() den Imaginärteil der komplexen Zahl.
Operatoren
Für komplexe Zahlen sind die typischen mathematischen Operatoren wie +, -, / und * definiert. Auch die Operatoren für Gleichheit oder Ungleichheit können verwendet werden. Allerdings ist das Kleiner-Verhältnis für komplexe Zahlen nicht definiert, natürlich auch nicht in C++. [Spezielle komplexe Funktionen]Funktion | Wirkung |
---|---|
norm() | Liefert das Quadrat des Betrages |
abs() | Betrag, die Wurzel aus norm() |
conj() | Der konjugierte Wert |
arg() | Winkel in Polarkoordinaten |
polar() | Komplexe Zahl zu Polarkoordinaten |