この記事では、C言語でsqrt関数
を自作する方法について解説します。
初心者の方でもわかりやすく解説していますので、ぜひ参考にしてください。
目次から探す
sqrt関数の自作方法
1. sqrt関数の概要
* sqrt関数
は、与えられた数の平方根を計算するための関数です。
- C言語の
math.hヘッダーファイル
には、sqrt関数
が定義されていますが、今回はそれを自作してみましょう。
2. ニュートン・ラフソン法による平方根の近似
- ニュートン・ラフソン法は、方程式の解を近似的に求めるための手法です。
- 平方根の近似値を求めるために、この手法を利用します。
- ニュートン・ラフソン法のアルゴリズムを以下に示します。
- 初期値として、与えられた数の半分を設定する。
- 次の近似値を計算するために、以下の式を繰り返し適用する。
- 近似値 = (近似値 + (与えられた数 / 近似値)) / 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