C++ 中的三角函式

Jinku Hu 2023年10月12日
  1. 在 C++ 中使用 std::sin 函式計算正弦
  2. 在 C++ 中使用 std::cos 函式計算餘弦
  3. 使用 std::tan 函式計算給定弧度值的正切值
C++ 中的三角函式

本文將講解如何在 C++ 中使用 STL 的三角函式。

在 C++ 中使用 std::sin 函式計算正弦

C++ 中的三角函式在標題 <cmath> 下提供。通常,常見的數學函式是從 C 語言繼承而來的,但其中大部分在 C++ 中被過載以與不同的引數型別互操作。

在這種情況下,我們表示 std::sin 函式來計算給定引數的正弦值。引數應該是一個以弧度為單位的值,如果函式成功,返回值在 [-1 ; +1]。請注意,如果 std::sin 的值為 +-0,則返回未修改的引數。

以下示例程式碼計算了常見角度的正弦值。

#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

在 C++ 中使用 std::cos 函式計算餘弦

std::cos 是另一個核心三角函式,它與 std::sin 具有相似的特性,除了相同引數的返回值不同。請注意,所有三角函式都可以接受 angle 的值作為整數的浮點數,但相應的結果總是以浮點數返回。

#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

使用 std::tan 函式計算給定弧度值的正切值

另一方面,我們有 std::tan 函式來計算給定引數的正切值。由於這些函式返回浮點值,因此可能會引發一些數學錯誤異常,這些異常在這裡有詳細描述。此外,我們還為每個三角函式提供了弧形版本,它們在原函式名稱中加入了 a 字首。

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

DelftStack.com 創辦人。Jinku 在機器人和汽車行業工作了8多年。他在自動測試、遠端測試及從耐久性測試中創建報告時磨練了自己的程式設計技能。他擁有電氣/ 電子工程背景,但他也擴展了自己的興趣到嵌入式電子、嵌入式程式設計以及前端和後端程式設計。

LinkedIn Facebook

相關文章 - C++ Math