【C言語】三角関数・逆三角関数の計算とグラフ表示

【C言語】三角関数・逆三角関数の計算とグラフ表示

三角関数の計算

C言語では、標準ライブラリ math.h を使用して三角関数を計算できます。代表的な三角関数には以下のものがあります。

  • sin(x): 正弦 (サイン)
  • cos(x): 余弦 (コサイン)
  • tan(x): 正接 (タンジェント)

これらの関数は、ラジアン (radian) を単位として角度を受け取ります。角度 (度数) をラジアンに変換するには、πを用います。

例: 45度の正弦、余弦、正接を計算

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

#define PI 3.14159265358979323846

int main() {
    double degree = 45.0;
    double radian = degree * (PI / 180.0);

    printf("sin(45°) = %f\n", sin(radian));
    printf("cos(45°) = %f\n", cos(radian));
    printf("tan(45°) = %f\n", tan(radian));

    return 0;
}

出力結果:

sin(45°) = 0.707107
cos(45°) = 0.707107
tan(45°) = 1.000000

逆三角関数の計算

逆三角関数 (アーク関数) は、三角関数の逆操作を行う関数です。C言語では以下の関数が利用できます。

  • asin(x): 逆正弦 (アークサイン)
  • acos(x): 逆余弦 (アークコサイン)
  • atan(x): 逆正接 (アークタンジェント)

これらの関数は、-1 から 1 の範囲の値を受け取り、ラジアン単位の角度を返します。度数に変換するには 180/π を掛けます。

例: 逆三角関数の計算

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

#define PI 3.14159265358979323846

int main() {
    double x = 0.5;

    printf("asin(0.5) = %f°\n", asin(x) * (180.0 / PI));
    printf("acos(0.5) = %f°\n", acos(x) * (180.0 / PI));
    printf("atan(1.0) = %f°\n", atan(1.0) * (180.0 / PI));

    return 0;
}

出力結果:

asin(0.5) = 30.000000°
acos(0.5) = 60.000000°
atan(1.0) = 45.000000°

グラフの表示

C言語では標準ライブラリにグラフ描画機能は含まれていませんが、外部ライブラリを使うことで三角関数のグラフを描くことができます。

例えば、gnuplot を使用すると、Cプログラムからグラフを表示できます。

例: sin(x) のグラフを描画

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

#define PI 3.14159265358979323846

int main() {
    FILE *fp = fopen("sin_data.txt", "w");

    for (double x = 0; x <= 2 * PI; x += 0.1) {
        fprintf(fp, "%f %f\n", x, sin(x));
    }

    fclose(fp);
    system("gnuplot -e \"plot 'sin_data.txt' with lines\"");

    return 0;
}

このプログラムは、0 から 2π までの sin(x) のデータを sin_data.txt に出力し、gnuplot で描画します。

実践コード例

最後に、三角関数と逆三角関数を組み合わせて計算する総合的な例を示します。

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

#define PI 3.14159265358979323846

int main() {
    double degree = 30.0;
    double radian = degree * (PI / 180.0);
    
    double sin_val = sin(radian);
    double recovered_angle = asin(sin_val) * (180.0 / PI);

    printf("sin(30°) = %f\n", sin_val);
    printf("asin(sin(30°)) = %f°\n", recovered_angle);

    return 0;
}

このコードは、sin(30°) の値を計算し、それを逆三角関数を使って元の角度に戻します。

以上、C言語での三角関数・逆三角関数の計算方法とグラフ表示方法について解説しました。

コメントは受け付けていません。