【C言語】sqrt関数を使わずに平方根を求める方法

この記事では、C言語でsqrt関数を使わずに平方根を求める方法を学びます。

初心者の方でも理解しやすいように、サンプルコードと実行結果も示します。

目次から探す

sqrt関数を使わずに平方根を求める方法

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

平方根を求めるための代表的な方法の一つが、ニュートン・ラフソン法です。

この方法は、平方根の近似値を反復的に計算していく手法です。

以下に、ニュートン・ラフソン法を使った平方根の求め方を説明します。

アルゴリズムの概要

ニュートン・ラフソン法では、与えられた数値xの平方根を求めるために、以下の反復計算を行います。

  1. 初期値として、平方根の近似値をx/2とします。
  2. 反復計算を行い、近似値を更新します。

更新式は、新しい近似値 = (現在の近似値 + x / 現在の近似値) / 2 です。

  1. 収束条件を満たすまで、2の手順を繰り返します。

収束条件は、新しい近似値と現在の近似値の差が十分に小さくなることです。

サンプルコード

#include <stdio.h>
double squareRoot(double x) {
    double approx = x / 2; // 初期値の設定
    while (1) {
        double newApprox = (approx + x / approx) / 2; // 近似値の更新
        if (fabs(newApprox - approx) < 0.0001) { // 収束条件の判定
            break;
        }
        approx = newApprox;
    }
    return approx;
}
int main() {
    double num = 16; // 平方根を求める数値
    double result = squareRoot(num);
    printf("平方根: %f\n", result);
    return 0;
}

上記のサンプルコードでは、squareRoot関数を定義しています。

この関数は、与えられた数値の平方根を求めるためにニュートン・ラフソン法を使用しています。

main関数では、squareRoot関数を呼び出して平方根を求め、結果を表示しています。

実行結果

平方根: 4.000000

上記の実行結果は、数値16の平方根を求めた結果です。

正しく計算された平方根の値が表示されています。

目次から探す