この記事では、C言語でsqrt関数
を使わずに平方根を求める方法を学びます。
初心者の方でも理解しやすいように、サンプルコードと実行結果も示します。
目次から探す
sqrt関数を使わずに平方根を求める方法
ニュートン・ラフソン法による平方根の近似計算
平方根を求めるための代表的な方法の一つが、ニュートン・ラフソン法です。
この方法は、平方根の近似値を反復的に計算していく手法です。
以下に、ニュートン・ラフソン法を使った平方根の求め方を説明します。
アルゴリズムの概要
ニュートン・ラフソン法では、与えられた数値xの平方根を求めるために、以下の反復計算を行います。
- 初期値として、平方根の近似値をx/2とします。
- 反復計算を行い、近似値を更新します。
更新式は、新しい近似値 = (現在の近似値 + x / 現在の近似値) / 2 です。
- 収束条件を満たすまで、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の平方根を求めた結果です。
正しく計算された平方根の値が表示されています。