C++の数学関数まとめ|sin・cos・tan・pow・sqrtなどの使い方を解説
C++では、mathまたはcmathヘッダーに含まれる数学関数を使うことで、複雑な数値計算を簡単に実行できます。これらの関数は標準ライブラリとして定義されており、三角関数・双曲線関数・べき乗・対数・丸め処理など、さまざまな数学的な処理を効率的に行えます。本記事では、C++でよく使われる代表的な数学関数をひとつずつ詳しく解説していきます。
sin(正弦)
sin関数は、引数として渡された角度(ラジアン単位)の正弦(サイン)を計算します。double型の値を1つ受け取り、sin(x) の計算結果をdouble型で返します。
double sin(double)
呼び出し構文
double x = sin(23.4);
サンプルコード
#include <iostream>
#include <math.h>
using namespace std;
int main() {
double x = 45.3;
cout << "sin( " << x << " ) = " << sin(x) << endl;
}
実行結果
sin( 45.3 ) = 0.968142
cos(余弦)
cos関数は、引数として渡された角度(ラジアン単位)の余弦(コサイン)を計算します。double型の値を1つ受け取り、cos(x) の計算結果をdouble型で返します。
double cos(double)
呼び出し構文
double x = cos(23.4);
サンプルコード
#include <iostream>
#include <math.h>
using namespace std;
int main() {
double x = 45.3;
cout << "cos( " << x << " ) = " << cos(x) << endl;
}
実行結果
cos( 45.3 ) = 0.2504
tan(正接)
tan関数は、引数として渡された角度(ラジアン単位)の正接(タンジェント)を計算します。tan(x) は sin(x) ÷ cos(x) として定義され、double型の値を1つ受け取り、その結果をdouble型で返します。
double tan(double)
呼び出し構文
double x = tan(23.4);
サンプルコード
#include <iostream>
#include <math.h>
using namespace std;
int main() {
double x = 45.3;
cout << "tan( " << x << " ) = " << tan(x) << endl;
}
実行結果
tan( 45.3 ) = 3.86638
asin(逆正弦)
asin関数は、引数として渡された値の逆正弦(アークサイン)を求めます。入力として指定できるのは -1 〜 1 の範囲内のdouble型の値だけで、範囲外の値を渡すとエラーになります。戻り値はラジアン単位のdouble型です。
double asin(double)
呼び出し構文
double x = asin(0.3232);
サンプルコード
#include <iostream>
#include <math.h>
using namespace std;
int main() {
double x = 0.3232;
cout << "asin( " << x << " ) = " << asin(x) << endl;
}
実行結果
asin( 0.3232 ) = 0.3291
acos(逆余弦)
acos関数は、引数として渡された値の逆余弦(アークコサイン)を求めます。asin関数と同様に、入力できるのは -1 〜 1 の範囲内のdouble型の値のみで、範囲外の値を指定するとエラーとなります。戻り値はラジアン単位のdouble型です。
double acos(double)
呼び出し構文
double x = acos(0.3232);
サンプルコード
#include <iostream>
#include <math.h>
using namespace std;
int main() {
double x = 0.3232;
cout << "acos( " << x << " ) = " << acos(x) << endl;
}
実行結果
acos( 0.3232 ) = 1.24169
atan(逆正接)
atan関数は、引数として渡された値の逆正接(アークタンジェント)を計算します。パラメータとして渡されたdouble型の値に対するatan値を、double型で返します。
double atan(double)
呼び出し構文
double x = atan(0.3232);
サンプルコード
#include <iostream>
#include <math.h>
using namespace std;
int main() {
double x = 0.3232;
cout << "atan( " << x << " ) = " << atan(x) << endl;
}
実行結果
atan( 0.3232 ) = 0.312603
cosh(双曲線余弦)
cosh関数は、引数として渡された値の双曲線余弦(ハイパーボリック・コサイン)を計算します。パラメータとして渡されたdouble型の値に対するcosh値を、double型で返します。
double cosh(double)
呼び出し構文
double x = cosh(0.342);
サンプルコード
#include <iostream>
#include <math.h>
using namespace std;
int main() {
double x = 0.342;
cout << "cosh( " << x << " ) = " << cosh(x) << endl;
}
実行結果
cosh( 0.342 ) = 1.05905
sinh(双曲線正弦)
sinh関数は、引数として渡された値の双曲線正弦(ハイパーボリック・サイン)を計算します。パラメータとして渡されたdouble型の値に対するsinh値を、double型で返します。
double sinh(double)
呼び出し構文
double x = sinh(0.342);
サンプルコード
#include <iostream>
#include <math.h>
using namespace std;
int main() {
double x = 0.342;
cout << "sinh( " << x << " ) = " << sinh(x) << endl;
}
実行結果
sinh( 0.342 ) = 0.348706
tanh(双曲線正接)
tanh関数は、引数として渡された値の双曲線正接(ハイパーボリック・タンジェント)を計算します。パラメータとして渡されたdouble型の値に対するtanh値を、double型で返します。
double tanh(double)
呼び出し構文
double x = tanh(0.342);
サンプルコード
#include <iostream>
#include <math.h>
using namespace std;
int main() {
double x = 0.342;
cout << "tanh( " << x << " ) = " << tanh(x) << endl;
}
実行結果
tanh( 0.342 ) = 0.329262
pow(べき乗)
pow関数は、底を指数乗した値(べき乗)を計算します。引数として底と指数の2つのdouble型の値を受け取り、「底^指数」の計算結果をdouble型で1つ返します。
double pow(double, double)
呼び出し構文
double x = pow(2, 4);
サンプルコード
#include <iostream>
#include <math.h>
using namespace std;
int main() {
double base = 2, power = 4;
cout << "pow( " << base << " , " << power << " ) = " << pow(base, power) << endl;
}
実行結果
pow( 2 , 4 ) = 16
sqrt(平方根)
sqrt関数は、パラメータとして渡されたdouble型の値の平方根を返します。double型の値を1つ受け取り、その平方根をdouble型で返します。負の値を渡すとエラー(NaN)になる点に注意してください。
double sqrt(double)
呼び出し構文
double x = sqrt(25.00);
サンプルコード
#include <iostream>
#include <math.h>
using namespace std;
int main() {
double a = 25;
cout << "sqrt( " << a << " ) = " << sqrt(a) << endl;
}
実行結果
sqrt( 25 ) = 5.00
log(自然対数)
log関数は、引数として渡された数値の自然対数(ネイピア数eを底とする対数)を求めます。double型の値を1つ受け取り、log() の計算結果をdouble型で返します。なお、常用対数(底が10の対数)を求めたい場合は log10() 関数を使用します。
double log(double)
呼び出し構文
double x = log(1.35);
サンプルコード
#include <iostream>
#include <math.h>
using namespace std;
int main() {
double a = 1.35;
cout << "log( " << a << " ) = " << log(a) << endl;
}
実行結果
log( 1.35 ) = 0.300105
floor(切り捨て)
floor関数は、引数として渡されたdouble型の値の「フロア値」(切り下げた整数値)を返します。double型の値を1つ受け取り、floor() によって計算されたdouble型の結果を返します。
double floor(double)
呼び出し構文
double x = floor(5.24);
サンプルコード
#include <iostream>
#include <math.h>
using namespace std;
int main() {
double a = 6.24;
cout << "floor( " << a << " ) = " << floor(a) << endl;
}
実行結果
floor( 6.24 ) = 6
ceil(切り上げ)
ceil関数は、引数として渡されたdouble型の値の「シーリング値」(切り上げた整数値)を返します。double型の値を1つ受け取り、ceil() によって計算されたdouble型の結果を返します。
double ceil(double)
呼び出し構文
double x = ceil(5.24);
サンプルコード
#include <iostream>
#include <math.h>
using namespace std;
int main() {
double a = 6.64;
cout << "ceil( " << a << " ) = " << ceil(a) << endl;
}
実行結果
ceil( 6.64 ) = 7
abs(絶対値)
abs関数は、整数値の絶対値を返します。引数として渡された値と同じ大きさで符号がプラスになった値を返します。浮動小数点数の場合は fabs() 関数を使用するとよいでしょう。
int abs(int)
呼び出し構文
double x = abs(-512);
サンプルコード
#include <iostream>
#include <math.h>
using namespace std;
int main() {
int a = -345;
cout << "abs( " << a << " ) = " << abs(a) << endl;
}
実行結果
abs( -345 ) = 345
-
C++で二重積分を計算するプログラム|シンプソン1/3則による数値積分の実装
変数xの下限・上限、変数yの下限・上限、そしてx・yそれぞれの刻み幅(ステップ幅)が与えられたとき、二重積分を数値的に計算し、その結果を表示するのが本記事のテーマです。 入出力の例 入力: xの刻み幅 = 1.2 yの刻み幅 = 0.54 xの下限 = 1.3 xの上限 = 2.1 yの下限 = 1.0 yの上限 = 2.1 出力: double integration is : 2.1 計算のアプローチ 本プログラムでは、以下の手順で二重積分を求めます。 xとyの上限・下限の値に加えて、x・yそれぞれの刻み幅を入力として受け取ります。 二重積分の計算にはシンプソン1/3則(Simpson
-
Pythonのmathモジュール徹底解説!定数・数値処理・対数・三角関数の使い方
Pythonで単純な計算から複雑な数学的演算(三角関数、対数計算など)まで行うには、mathモジュールを利用するのが便利です。mathモジュールはPythonに標準で組み込まれている数学関数集であり、さまざまな数値計算を簡単に実装できます。なお、mathモジュールのすべてのメソッドは整数型や浮動小数点型などの実数オブジェクトに対して使用でき、複素数には対応していません。複素数を扱いたい場合は別途 cmath モジュールを使用します。mathモジュールを使うには、コードの先頭でインポートを行います。import mathmathモジュールで使える主な定数mathモジュールには、計算でよく使われる