第16回 初等関数(math.h)
C言語のmath.hライブラリ。sqrt, sin, cos, powなど数学関数の使い方。
初等関数とは
C言語には、平方根・三角関数・指数関数・対数関数など、数学でおなじみの関数があらかじめ用意されています。これらを使うには #include<math.h> が必要です。
使い方の基本: ① #include<math.h> を先頭に書く → ② 関数名(引数) で呼び出す → ③ 戻り値は基本的に double 型
#include<stdio.h>
#include<math.h> // ← これが必要!
int main(void){
double x = 2.0;
printf("sqrt(%.1f) = %f\n", x, sqrt(x));
return 0;
}
⚠️ コンパイル時の注意: Linux/Mac で gcc を使う場合、gcc prog.c -lm のように -lm オプションが必要なことがあります(math library のリンク)。Visual Studio では不要です。
主な数学関数一覧
すべて #include<math.h> で使えます。引数・戻り値は基本的に double 型。
| 関数 |
機能 |
使用例 |
結果 |
| sqrt(x) | 平方根 √x | sqrt(9.0) | 3.0 |
| pow(x, y) | べき乗 xy | pow(2.0, 10.0) | 1024.0 |
| fabs(x) | 絶対値 |x| | fabs(-3.7) | 3.7 |
| sin(x) | 正弦(ラジアン) | sin(3.14159/2) | 1.0 |
| cos(x) | 余弦(ラジアン) | cos(0.0) | 1.0 |
| tan(x) | 正接(ラジアン) | tan(3.14159/4) | ≈ 1.0 |
| exp(x) | 指数関数 ex | exp(1.0) | ≈ 2.71828 |
| log(x) | 自然対数 ln(x) | log(2.71828) | ≈ 1.0 |
| log10(x) | 常用対数 log10(x) | log10(1000.0) | 3.0 |
| ceil(x) | 切り上げ | ceil(2.3) | 3.0 |
| floor(x) | 切り捨て | floor(2.7) | 2.0 |
sqrt ― 平方根を求める
スライドでも最初に登場した関数です。sqrt(x) は x の平方根(√x)を返します。
#include<stdio.h>
#include<math.h>
int main(void){
double a = 2.0;
printf("sqrt(%.1f) = %f\n", a, sqrt(a));
// → sqrt(2.0) = 1.414214
// 三平方の定理: c = sqrt(a^2 + b^2)
double b = 3.0, c = 4.0;
double hyp = sqrt(b*b + c*c);
printf("斜辺 = %f\n", hyp);
// → 斜辺 = 5.000000
return 0;
}
注意:sqrt に負の数を渡すと NaN(Not a Number)が返ります。引数が負でないことを事前にチェックするのが安全です。
三角関数 (sin / cos / tan)
C言語の三角関数は角度ではなくラジアンで指定します。度(°)をラジアンに変換するには rad = deg * M_PI / 180.0 を使います。
sin(θ)
sin(0) = 0
sin(π/2) = 1
sin(π) = 0
cos(θ)
cos(0) = 1
cos(π/2) = 0
cos(π) = -1
tan(θ)
tan(0) = 0
tan(π/4) ≈ 1
tan(π/2) = ∞
#include<math.h>
// 度 → ラジアン変換
double deg = 45.0;
double rad = deg * M_PI / 180.0;
printf("sin(45°) = %f\n", sin(rad)); // → 0.707107
printf("cos(45°) = %f\n", cos(rad)); // → 0.707107
printf("tan(45°) = %f\n", tan(rad)); // → 1.000000
M_PI は math.h で定義されている円周率(3.14159...)の定数です。#define PI 3.14159 のように自分で定義しても構いませんが、M_PI のほうが精度が高いです。
関数電卓 ― 試してみよう
数学関数をブラウザ上で試せます。関数を選んで値を入力すると結果が表示されます。
自分で書いてみよう ― 初等関数
三角関数と平方根を使ったプログラムです。直角三角形の斜辺と角度を計算します。
確認クイズ
この講座の理解度をチェックしましょう!
Q1. 数学関数を使うために必要なヘッダファイルは?
stdlib.h
math.h
string.h
sqrt, pow, sin, cos などの数学関数は math.h に定義されています。コンパイル時に -lm オプションが必要な場合もあります。
Q2. pow(2, 3) の結果は?
6
8
9
pow(2, 3) は 2の3乗 = 8 を返します。pow 関数は double 型の値を返します。
Q3. sqrt(16) の結果は?
4.0
8.0
256.0
sqrt は平方根を返す関数です。√16 = 4.0 です。
この講座の理解を深めるおすすめ書籍
サイトで動きを理解し、書籍で演習量を補うと効果的です
📘
苦しんで覚えるC言語
MMGames 著
初心者向けの定番入門書。丁寧な解説で基礎を固められます。
Amazonで見る
📗
新・明解C言語 入門編
柴田望洋 著
図解が豊富で、演習問題も充実。大学の教科書としても採用多数。
Amazonで見る
📙
プログラミング言語C 第2版
B.W.カーニハン, D.M.リッチー 著
通称K&R。C言語の原典。基礎を終えた後のステップアップに最適。
Amazonで見る
※ 上記リンクはアフィリエイトリンクです。購入によりサイト運営を支援いただけます。