【C言語】sqrt関数を自作する方法

この記事では、C言語でsqrt関数を自作する方法について解説します。

初心者の方でもわかりやすく解説していますので、ぜひ参考にしてください。

目次から探す

sqrt関数の自作方法

1. sqrt関数の概要

* sqrt関数は、与えられた数の平方根を計算するための関数です。

  • C言語のmath.hヘッダーファイルには、sqrt関数が定義されていますが、今回はそれを自作してみましょう。

2. ニュートン・ラフソン法による平方根の近似

  • ニュートン・ラフソン法は、方程式の解を近似的に求めるための手法です。
  • 平方根の近似値を求めるために、この手法を利用します。
  • ニュートン・ラフソン法のアルゴリズムを以下に示します。
  1. 初期値として、与えられた数の半分を設定する。
  2. 次の近似値を計算するために、以下の式を繰り返し適用する。
  • 近似値 = (近似値 + (与えられた数 / 近似値)) / 2
  1. 繰り返し計算を行い、近似値が収束するまで続ける。
  2. 収束した近似値が、与えられた数の平方根の近似値となります。

3. sqrt関数の自作コード

#include <stdio.h>
double my_sqrt(double x) {
    double approx = x / 2; // 初期値として与えられた数の半分を設定
    double prev_approx; // 前回の近似値を保持する変数
    do {
        prev_approx = approx;
        approx = (approx + (x / approx)) / 2; // 近似値を更新
    } while (approx != prev_approx); // 近似値が収束するまで繰り返し
    return approx; // 収束した近似値を返す
}
int main() {
    double num = 16; // 平方根を求める数
    double result = my_sqrt(num); // 自作のsqrt関数を呼び出し、結果を取得
    printf("sqrt(%lf) = %lf\n", num, result); // 結果を出力
    return 0;
}

4. sqrt関数の自作コードの説明

  • 上記のコードは、自作のsqrt関数を実装したものです。

my_sqrt関数は、与えられた数の平方根の近似値を求めるための関数です。

  • ニュートン・ラフソン法のアルゴリズムを利用して、近似値を計算しています。

main関数では、自作のsqrt関数を呼び出し、結果を出力しています。

5. 実行結果

sqrt(16.000000) = 4.000000

目次から探す