「C言語」の「数学関連関数」の使い方を学ぶ(苦手・・・)

今回は、自分が苦手な「数学関数」について勉強していきたいと思います。

「算数・数学」の理解は難しいけれど、使い方を勉強するのは何とか自分でもできるかもしれない。

「数学関数」の使い方

「C言語」に使われている「数学関数」を使うためには、「math.h」のヘッダーファイルを読み込む必要があります。

このヘッダーファイルの中には、たくさんの関数があり、中には自分には理解できないものもあるので、わかるものだけ学んでいきたいと思います。

「最大値」を求める関数

最大値を求める関数は、「引数」と「戻り値」の違いによって3つ用意されているのですが、「double型」の値の最大値を求める場合は、「fmax」関数を利用します。

「fmaxf」関数は「float型」を扱い、「fmaxl」関数は「long型」を扱うことができます。

例えば、「double型」の値の最大値を求める場合は、

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

int main(void) {

    double num1 = 1.5;
    double num2 = 2.3;

    double max = fmax(num1, num2);

    printf("max=%f\n", max);

    return 0;
}

のようになります。

実行してみると・・・

max=2.300000

のように表示されます。

「最小値」を求める関数

「最小値」を求める場合は、「double型の引数」の場合は、「fmin」関数、「float型の引数」の場合は、「fminf」関数、「long型の引数」の場合は、「fminl」関数を利用します。

「fmin」関数を利用した場合は、

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

int main(void) {

    double num1 = 2.3;
    double num2 = 5.5;

    double min = fmin(num1, num2);

    printf("min=%f\n", min);

    return 0;
}

のようになります。この関数の実行結果は、

min=2.300000

のようになります。

整数値の「切り上げ」

小数点の値を切り上げる関数が「ceil」関数です。

例えば、「1.5」という小数点を含む「double型の値」を「ceil」関数に渡すと、「2.0」が返ってきます。この関数をプログラムで書くと、

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

int main(void) {

    double num = 1.5;

    double ceil_num = ceil(num);

    printf("ceil=%f\n", ceil_num);

    return 0;
}

のようになり、このプログラムを実行すると、

ceil=2.000000

のように表示されます。

平方根を求める

ある値の「平方根」を求めるには、「sqrt」関数を使います。

引数が「double」型の場合は「sqrt」関数、「float」型の場合は「sqrtf」関数、を使います。

例えば、「2」の平方根を求めるプログラムは、

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

int main(void) {

    double num = 2.0;

    printf("sqrt=%f\n", sqrt(num));

    return 0;
}

となり、実行してみると、

sqrt=1.414214

のように平方根を計算することができます。

コサイン(余弦)を求める

「cos(余弦)」を求めることができる関数が、「cos」関数なのですが、そもそも「cos(コサイン)」が何なのかを忘れてしまっているので、そこも勉強しなおさないといけません。

「cos(コサイン)」は、

コサインイメージ図

のようになるのですが、「A」と「C」の線が「0度」となると、「コサインの値」は「1」になります。/p>

もし、「180度」となった場合は、「コサインの値」は「-1」になります。

ただ・・・「cos」関数に渡すの「ラジアン」と呼ばれる「国際単位系」の値を渡さないといけません。

もう何がなんだかわからなくなってきました。(^^;)

「ラジアン」は、「180度」が「円周率の値」なので、「180度が3.1415926535・・・・ラジアンの値」となるそうです。

この考え方も何か独特ですね。

プログラムを書いてみると、

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

int main(void) {

    double radian = 3.1415926535; // 180度

    printf("cos=%f\n", cos(radian));

    return 0;
}

のようになり、出力結果は、

cos=-1.000000

と表示されます。

サイン(正弦)の値を求める

「サイン(正弦)」の値を求めるために「sin」関数を利用します。

「サイン(正弦)」は、

サインイメージ図

のようになります。(難しいので、内容には踏み込みません・・・)

この関数の利用方法は、さきほどの「cos(余弦)」を求める時と同じですので、さっそくプログラムを書いてみると、

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

int main(void) {

    double radian = 3.1415926535/2.0; // 90度

    printf("sin=%f\n", sin(radian));

    return 0;
}

となります。これを実行すると、

sin=1.000000e  

のように出力されます。

タンジェント(正接)の値を求める

「タンジェント(正接)」の値を求めるために「tan」関数を利用します。

「タンジェント(正接)」は、

タンジェントイメージ図

のようになります。

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

int main(void) {

    double radian = 3.1415926535/4.0; // 45度

    printf("tan=%f\n", tan(radian));

    return 0;
}

となります。これを実行すると、

tan=1.000000

のようになります。

これらの「三角関数」には、ラジアン値を求めるための「acos(逆余弦)」「asin(逆正弦)」「atan(逆正接)」も用意されています。

「C言語」には他にもさまざまな数学関連の関数がありますので、苦手な数学も少しずつ勉強しながら、使える関数を増やしていきたいと思います。

→(前へ)「C言語」の「文字列操作関数」が難解だった・・・

→(次へ)「関数ポインタ・キャスト・コマンドライン引数」を学んでみる

→「Twitter:@satoru78888」

HOMEへ