Trigonometrische Funktionen in C++
-
Verwenden Sie die Funktion
std::sin
, um den Sinus in C++ zu berechnen -
Verwenden Sie die Funktion
std::cos
, um den Kosinus in C++ zu berechnen -
Verwenden Sie die Funktion
std::tan
, um die Tangente für den gegebenen Bogenmaß zu berechnen
In diesem Artikel wird erläutert, wie Sie trigonometrische Funktionen von STL in C++ verwenden.
Verwenden Sie die Funktion std::sin
, um den Sinus in C++ zu berechnen
Trigonometrische Funktionen in C++ werden unter der Überschrift <cmath>
bereitgestellt. Im Allgemeinen wurden gängige mathematische Funktionen von der Sprache C geerbt, aber die meisten von ihnen sind in C++ überladen, um mit verschiedenen Argumenttypen interoperabel zu sein.
In diesem Fall stellen wir die Funktion std::sin
dar, um den Sinus für das angegebene Argument zu berechnen. Das Argument sollte ein Wert im Bogenmaß sein, und wenn die Funktion erfolgreich ist, liegt der Rückgabewert im Bereich von [-1 ; +1]
. Beachten Sie, dass std::sin
unveränderte Argumente zurückgibt, wenn ihr Wert +-0
ist.
Der folgende Beispielcode berechnet Sinuswerte für gemeinsame Winkel.
#include <cmath>
#include <iostream>
using std::cout;
using std::endl;
const double pi = std::acos(-1);
int main() {
cout << "sin(pi) = " << std::sin(pi) << '\n'
<< "sin(pi/6) = " << std::sin(pi / 6) << '\n'
<< "sin(pi/4) = " << std::sin(pi / 4) << '\n'
<< "sin(pi/3) = " << std::sin(pi / 3) << '\n'
<< "sin(pi/2) = " << std::sin(pi / 2) << '\n'
<< "sin(+0) = " << std::sin(0.0) << '\n'
<< "sin(-0) = " << std::sin(-0.0) << '\n';
return EXIT_SUCCESS;
}
sin(pi) = 1.22465e-16
sin(pi/6) = 0.5
sin(pi/4) = 0.707107
sin(pi/3) = 0.866025
sin(pi/2) = 1
sin(+0) = 0
sin(-0) = -0
Verwenden Sie die Funktion std::cos
, um den Kosinus in C++ zu berechnen
std::cos
ist eine weitere trigonometrische Kernfunktion und hat ähnliche Eigenschaften wie std::sin
, mit Ausnahme der zurückgegebenen Werte für die gleichen Argumente. Beachten Sie, dass alle trigonometrischen Funktionen den Wert von angle als Gleitkommazahl oder Ganzzahl akzeptieren können, aber das entsprechende Ergebnis wird immer als Gleitkommazahl zurückgegeben.
#include <iostream>
#include <cmath>
using std::cout; using std::endl;
const double pi = std::acos(-1);
int main() {
cout << "cos(pi) = " << std::cos(pi) << '\n'
<< "cos(pi/6) = " << std::cos(pi/6) << '\n'
<< "cos(pi/4) = " << std::cos(pi/4) << '\n'
<< "cos(pi/3) = " << std::cos(pi/3) << '\n'
<< "cos(pi/2) = " << std::cos(pi/2) << '\n'
<< "cos(+0) = " << std::cos(0.0) << '\n'
<< "cos(-0) = " << std::cos(-0.0) << '\n';
return EXIT_SUCCESS;
}
cos(pi) = -1
cos(pi/6) = 0.866025
cos(pi/4) = 0.707107
cos(pi/3) = 0.5
cos(pi/2) = 6.12323e-17
cos(+0) = 1
cos(-0) = 1
Verwenden Sie die Funktion std::tan
, um die Tangente für den gegebenen Bogenmaß zu berechnen
Auf der anderen Seite haben wir die Funktion std::tan
, um die Tangentenwerte für gegebene Argumente zu berechnen. Da diese Funktionen Gleitkommawerte zurückgeben, besteht die Möglichkeit, dass einige mathematische Fehlerausnahmen ausgelöst werden, die hier ausführlich beschrieben werden. Darüber hinaus haben wir Bogenversionen für jede trigonometrische Funktion, und sie haben das Präfix a
zu den ursprünglichen Funktionsnamen hinzugefügt.
#include <iostream>
#include <cmath>
using std::cout; using std::endl;
const double pi = std::acos(-1);
int main() {
cout << "tan(pi) = " << std::tan(pi) << '\n'
<< "tan(pi/6) = " << std::tan(pi/6) << '\n'
<< "tan(pi/4) = " << std::tan(pi/4) << '\n'
<< "tan(pi/3) = " << std::tan(pi/3) << '\n'
<< "tan(pi/2) = " << std::tan(pi/2) << '\n'
<< "tan(+0) = " << std::tan(0.0) << '\n'
<< "tan(-0) = " << std::tan(-0.0) << '\n';
return EXIT_SUCCESS;
}
tan(pi) = -1.22465e-16
tan(pi/6) = 0.57735
tan(pi/4) = 1
tan(pi/3) = 1.73205
tan(pi/2) = 1.63312e+16
tan(+0) = 0
tan(-0) = -0
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook