C++ の三角関数

胡金庫 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 と同様の特性を持っています。すべての三角関数は角度の値を整数の浮動小数点数として受け入れることができますが、対応する結果は常に浮動小数点 1 として返されることに注意してください。

#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
著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook

関連記事 - C++ Math