第7章の3 数学関数

1. 代表的な数学関数

数値演算を行う関数で、様々な算術演算を行います。
#include <math.h> が必要です。「#include」については「18-2」 を参照してください。

【数学関数】
関数 説明 使用例
exp(x) 指数関数e の x乗の値を返す。
double y;

y = exp(1.0);
・・・ y は 2.718282
log(x) 自然対数(e を底とする対数)logex の値を返す。
double y;

y = log(2.718282);
・・・ y は 1
log10(x) 常用対数(10を底とする対数)log10x の値を返す。
double y;

y = log10(100);
・・・ y は 2
sqrt(x) x の平方根の値を返す。
double y;

y = sqrt(2.0);
・・・ y は 1.41421
pow(x, y) xy乗の値を返す。
double z;

z = pow(2.0, 3.0);
・・・ z は 8.0
sin(x) x(ラジアン)のサイン値を返す。
※ 角度をラジアン単位で指定する。
double y;

y = sin(90.0 * 3.14159 / 180.0);
・・・ 90°のサイン値 y は 1.0
cos(x) x(ラジアン)のコサイン値を返す。
※ 角度をラジアン単位で指定する。
double y;

y = cos(90.0 * 3.14159 / 180.0);
・・・ 90°のコサイン値 y は 0.0
tan(x) x(ラジアン)のタンジェント値を返す。
※ 角度をラジアン単位で指定する。
double y;

y = tan(45.0 * 3.14159 / 180.0);
・・・ 45°のタンジェント値 y は 1.0
abs(n)

int型データ n の絶対値を int型で返す。

#include <stdlib.h> が必要。

int a;

a = abs(-2);
・・・ -2 の絶対値は 2
fabs(x) double型データ x の絶対値を double型で返す。
double y;

y = fabs(-23.4);
・・・ -23.4 の絶対値は 23.4
ceil(x) データ x を切り上げた値を返す。
double y;

y = ceil(12.11); ・・・ y は 13
y = ceil(-5.68); ・・・ y は -5
floor(x) データ x を切り下げた値を返す。
double y;

y = floor(12.11);・・・ y は 12
y = floor(-5.68);・・・ y は -6
fmod(x) x / y の余りの値を返す。
double z;

z = fmod(10.5, 3.2);
・・・ z は 0.9

〇 演習問題

0°~180°まで15°おきにサイン値、コサイン値、タンジェント値を求なさい。

【実行結果例】
x sin( x ) cos( x ) tan( x )
0.00 0.00000 1.00000 0.00000
15.00 0.25882 0.96593 0.26795
30.00 0.50000 0.86603 0.57735
45.00 0.70711 0.70711 1.00000
60.00 0.86602 0.50000 1.73205
75.00 0.96593 0.25882 3.73203
90.00 1.00000 0.00000 753695.99514
105.00 0.96593 -0.25882 -3.73207
120.00 0.86603 -0.50000 -1.73206
135.00 0.70711 -0.70711 -1.00000
150.00 0.50000 -0.86602 -0.57735
165.00 0.25882 -0.96593 -0.26795
180.00 0.00000 -1.00000 -0.00000

※ π(パイ)は 3.14159 で計算しています。

解答例

#include <math.h>
#include <stdio.h>

int main(void)
{
    double x, r, y1, y2, y3;

    printf("   x        sin( x )     cos( x )     tan( x )\n");
    for (x = 0.0; x <= 180.0; x += 15.00) {
        r = x * 3.14159 / 180.0;
        y1 = sin(r);
        y2 = cos(r);
        y3 = tan(r);
        printf("%6.2f %12.5f %12.5f %12.5f\n", x, y1, y2, y3);
    }

    return 0;
}

コメント