Funciones trigonométricas en C++

Jinku Hu 12 octubre 2023
  1. Utilice la función std::sin para calcular el seno en C++
  2. Utilice la función std::cos para calcular el coseno en C++
  3. Utilice la función std::tan para calcular la tangente para un valor en radianes dado
Funciones trigonométricas en C++

Este artículo explicará cómo utilizar funciones trigonométricas de STL en C++.

Utilice la función std::sin para calcular el seno en C++

Las funciones trigonométricas en C++ se proporcionan bajo el encabezado <cmath>. Generalmente, las funciones matemáticas comunes se han heredado del lenguaje C, pero la mayoría de ellas están sobrecargadas en C++ para ser interoperables con diferentes tipos de argumentos.

En este caso, representamos la función std::sin para calcular el seno del argumento dado. El argumento debe ser un valor en radianes, y si la función tiene éxito, el valor de retorno está en el rango de [-1 ; +1]. Tenga en cuenta que std::sin devuelve argumentos sin modificar si su valor es +-0.

El siguiente código de ejemplo calcula valores de seno para ángulos comunes.

#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

Utilice la función std::cos para calcular el coseno en C++

std::cos es otra función trigonométrica central, y tiene características similares a std::sin excepto por los valores devueltos para los mismos argumentos. Observe que todas las funciones trigonométricas pueden aceptar el valor de ángulo como un número entero de punto flotante, pero el resultado correspondiente siempre se devuelve como uno de punto flotante.

#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

Utilice la función std::tan para calcular la tangente para un valor en radianes dado

Por otro lado, tenemos la función std::tan para calcular los valores de la tangente para los argumentos dados. Dado que estas funciones devuelven valores de punto flotante, existe la posibilidad de que surjan algunas excepciones de errores matemáticos, que se describen en detalle aquí. Además, tenemos versiones de arco para cada función trigonométrica, y tienen el prefijo a agregado a los nombres de las funciones originales.

#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
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Artículo relacionado - C++ Math