C 言語で逆余弦 (arccos) を計算する

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

はじめに

この実験では、C 言語で逆余弦関数 (arccos) を計算する方法を学びます。この実験は、2 つの主要なステップから構成されています。一つは、-1 から 1 の間の有効な入力値を読み取ることであり、もう一つは、C 言語の数学ライブラリから acos() 関数を使用して入力の逆余弦を計算することです。段階的な手順は、入力値の検証と逆余弦計算の実施に関する包括的なガイドを提供し、C プログラミングにおけるこの三角関数操作をしっかりと理解できるようにします。

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

このステップでは、C 言語で逆余弦 (arccos) 関数を計算するための有効な入力値を読み取る方法を学びます。arccos 関数は、入力値が -1 から 1 の範囲である必要があります。

まず、入力値の検証を示す新しい C ファイルを作成します。

cd ~/project
nano arccos_input.c

次に、ファイルに以下のコードを追加します。

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

int main() {
    double input;

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

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

    printf("有効な入力:%f\n", input);
    return 0;
}

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

gcc arccos_input.c -o arccos_input -lm

実行例(出力):

有効な入力:

arccos 計算のための -1 から 1 の間の値を入力してください: 0.5
有効な入力: 0.500000

無効な入力:

arccos 計算のための -1 から 1 の間の値を入力してください: 2
エラー: 入力は -1 から 1 の間でなければなりません

このコードは次のことを示しています。

  • scanf() を使用して倍精度浮動小数点数を取得する
  • arccos の有効な範囲内であることを確認するために、入力を検証する
  • 無効な入力に対してユーザーフレンドリーなエラーメッセージを表示する

acos() 関数を使用する

このステップでは、C 言語の数学ライブラリから acos() 関数を使用して、与えられた入力値の逆余弦 (arccos) を計算する方法を学びます。

同じプロジェクトディレクトリで作業を続け、前のプログラムを修正します。

cd ~/project
nano arccos_calculation.c

arccos 計算を実装する以下のコードを追加します。

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

int main() {
    double input;

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

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

    // arccos を計算
    double angle_radians = acos(input);

    printf("入力値:%f\n", input);
    printf("逆余弦 (ラジアン): %f\n", angle_radians);

    return 0;
}

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

gcc arccos_calculation.c -o arccos_calculation -lm

実行例(出力):

arccos 計算のための -1 から 1 の間の値を入力してください: 0.5
入力値: 0.500000
逆余弦 (ラジアン): 1.047198
arccos 計算のための -1 から 1 の間の値を入力してください: -0.5
入力値: -0.500000
逆余弦 (ラジアン): 2.094395

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

  • <math.h> ライブラリの一部
  • -1 から 1 の間の値を受け取る
  • ラジアン単位の角度を返す
  • 数学ライブラリをリンクするためにコンパイル時に -lm フラグが必要

ラジアン単位の角度を表示する

このステップでは、arccos の角度をラジアン、度数、より読みやすい表現を含むさまざまな形式に変換して表示する方法を学びます。

同じプロジェクトディレクトリで作業を続けます。

cd ~/project
nano arccos_angle_print.c

角度表示を実証する以下のコードを追加します。

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

#define PI 3.14159265358979323846

int main() {
    double input;

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

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

    // arccos を計算
    double angle_radians = acos(input);

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

    // さまざまな形式で角度を表示
    printf("入力値:%f\n", input);
    printf("ラジアン単位の角度:%f\n", angle_radians);
    printf("度数単位の角度:%f\n", angle_degrees);

    // 説明的な表現を表示
    printf("角度の説明:%.2f ラジアン (%.2f 度)\n",
           angle_radians, angle_degrees);

    return 0;
}

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

gcc arccos_angle_print.c -o arccos_angle_print -lm

実行例(出力):

arccos 計算のための -1 から 1 の間の値を入力してください: 0.5
入力値: 0.500000
ラジアン単位の角度: 1.047198
度数単位の角度: 60.000000
角度の説明: 1.05 ラジアン (60.00 度)
arccos 計算のための -1 から 1 の間の値を入力してください: -0.5
入力値: -0.500000
ラジアン単位の角度: 2.094395
度数単位の角度: 120.000000
角度の説明: 2.09 ラジアン (120.00 度)

重要なポイント:

  • 度数変換に PI 定数を用いた
  • ラジアンから度数への変換に angle_radians * (180.0 / PI) を使用
  • 角度表現のさまざまなフォーマットオプションを示した
  • 小数点以下 2 桁の精度で %.2f を使用した

まとめ

この実験では、C 言語で逆余弦 (arccos) 関数を計算するために、-1 から 1 の間の有効な入力値を読み取る方法を学びました。また、C 言語の数学ライブラリから acos() 関数を使用して、arccos 計算を実行し、角度をラジアン単位で表示する方法も学びました。

この実験で得られた重要なポイントは、入力が有効範囲内であることを確認するための入力検証と、与えられた値の arccos を計算するための acos() 関数の使用です。