C 言語で逆正弦 (arcsin) を計算する方法

CBeginner
オンラインで実践に進む

はじめに

この実験では、C プログラミングで逆正弦 (arcsin) 関数を計算する方法を学びます。この実験は、2 つの主要なステップで構成されています。-1 と 1 の間の有効な入力値を読み取り、math.h ライブラリから asin() 関数を使用して入力の逆正弦を計算することです。プログラムは入力範囲を検証し、計算された角度をラジアンで表示します。この実験は、C を使用した三角関数計算と asin() 関数の使用方法に関する実践的な理解を提供することを目的としています。

-1 から 1 の間の値を読み取る

このステップでは、C で逆正弦 (arcsin) 関数を計算するために、数値入力を読み取り、検証する方法を学びます。arcsin 関数は、入力値が厳密に -1 と 1 の間である必要があります。

まず、プログラム用の新しい C ファイルを作成します。

cd ~/project
nano arcsin_input.c

次に、入力を読み取り、検証する以下のコードを記述します。

#include <stdio.h>

int main() {
    double input;

    printf("arcsin 計算のために -1 から 1 の間の値を入力してください:");
    scanf("%lf", &input);

    // 入力範囲の検証
    if (input < -1 || input > 1) {
        printf("エラー: 入力は -1 と 1 の間でなければなりません。\n");
        return 1;
    }

    printf("有効な入力が受け付けられました:%f\n", input);

    return 0;
}

プログラムをコンパイルして実行します。

gcc arcsin_input.c -o arcsin_input
./arcsin_input

出力例:

arcsin 計算のために -1 から 1 の間の値を入力してください: 0.5
有効な入力が受け付けられました: 0.500000

このコードでは、以下のことを行っています。

  • scanf() を使用して倍精度浮動小数点数を読み取る
  • 入力が -1 から 1 の有効範囲内にあるかどうかをチェックする
  • 入力が有効範囲外の場合、エラーメッセージを出力する
  • 入力が条件を満たした場合、有効な入力を確認する

asin() 関数を使用する

このステップでは、math.h ライブラリから asin() 関数を使用して、有効な入力値の逆正弦 (arcsin) を計算する方法を学びます。

まず、前のプログラムを修正して asin() 関数を含めます。

cd ~/project
nano arcsin_calculation.c

逆正弦の結果を計算して表示する以下のコードを記述します。

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

int main() {
    double input;

    printf("arcsin 計算のために -1 から 1 の間の値を入力してください:");
    scanf("%lf", &input);

    // 入力範囲の検証
    if (input < -1 || input > 1) {
        printf("エラー: 入力は -1 と 1 の間でなければなりません。\n");
        return 1;
    }

    // asin() 関数を使用して逆正弦を計算
    double result = asin(input);

    printf("入力:%f\n", input);
    printf("逆正弦結果:%f ラジアン\n", result);

    return 0;
}

数学ライブラリを使用してプログラムをコンパイルします。

gcc arcsin_calculation.c -o arcsin_calculation -lm

プログラムを実行し、さまざまな入力でテストします。

./arcsin_calculation

出力例:

arcsin 計算のために -1 から 1 の間の値を入力してください: 0.5
入力: 0.500000
逆正弦結果: 0.523599 ラジアン

asin() 関数に関する重要な点:

  • math.h ライブラリで定義されています
  • -1 から 1 の間の値を入力として受け取ります
  • ラジアンで角度を返します
  • コンパイル時に -lm フラグを使用してリンクする必要があります

ラジアンでの角度表示

このステップでは、逆正弦 (arcsin) の結果を、ラジアンと度数の異なる角度表現に変換して表示する方法を学びます。

前のプログラムを修正して度数変換を含めます。

cd ~/project
nano arcsin_angle_conversion.c

ラジアンと度数の角度を表示する以下のコードを記述します。

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

#define PI 3.14159265358979323846

int main() {
    double input;

    printf("arcsin 計算のために -1 から 1 の間の値を入力してください:");
    scanf("%lf", &input);

    // 入力範囲の検証
    if (input < -1 || input > 1) {
        printf("エラー: 入力は -1 と 1 の間でなければなりません。\n");
        return 1;
    }

    // 逆正弦を計算
    double radian_result = asin(input);

    // ラジアンを度数に変換
    double degree_result = radian_result * (180.0 / PI);

    // 結果をフォーマットして表示
    printf("入力:%f\n", input);
    printf("逆正弦結果 (ラジアン): %f\n", radian_result);
    printf("逆正弦結果 (度数): %f\n", degree_result);

    return 0;
}

プログラムをコンパイルします。

gcc arcsin_angle_conversion.c -o arcsin_angle_conversion -lm

プログラムを実行してテストします。

./arcsin_angle_conversion

出力例:

arcsin 計算のために -1 から 1 の間の値を入力してください: 0.5
入力: 0.500000
逆正弦結果 (ラジアン): 0.523599
逆正弦結果 (度数): 30.000000

角度変換に関する重要な点:

  • asin() のデフォルトの戻り値はラジアンです
  • 度数への変換:(180/π) 倍します
  • 精度の高い変換のために #define PI を使用します
  • 結果の表示を分かりやすくするためにフォーマットを使用します

まとめ

この実験では、C 言語で逆正弦 (arcsin) 関数を計算するために必要な、-1 から 1 の間の数値入力値の読み込みと検証方法を学びました。その後、math.h ライブラリの asin() 関数を使用して、有効な入力値の逆正弦を計算し、ラジアン単位で結果を出力しました。

主な学習ポイントは、1) 入力が -1 から 1 の有効範囲内であることを確認するための入力範囲の検証、および 2) asin() 関数を使用して入力値の逆正弦を計算することです。