【C言語】ニュートン法のプログラム

スポンサーリンク

この記事では、C言語でニュートン法により方程式の解を解を求めるプログラムについてソースコード付きで解説します。

スポンサーリンク

ニュートン法

ニュートン法は、方程式を近似的に解くアルゴリズムの1つです。
このアルゴリズムでは、接線の性質を利用することで数値計算的に近似解を求めていきます。
【参考】ニュートン法のアルゴリズム

今回は、このアルゴリズムをC言語で実装してみました。

ソースコード

サンプルプログラムのソースコードです。

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

double f(double x)
{
return x*x – 4;
}

double df(double x)
{
return 2*x;
}

void newtonMethod(double a, double eps, double *result, double *num)
{
int i=0;
double ah;

while(i<1000) {
    i++;
    ah = a - f(a)/df(a);
    // 収束条件を満たせばループ終了
    if(abs(ah - a)<eps) break;
    a = ah;
}
*result = a;
*num = i; 

}

int main()
{
double result;
int num;

// ニュートン法(初期値, 収束条件)
newtonMethod(1.0, 1.0e-5, &result, &num);

// 結果表示
printf("解:%f(収束回数%d 回)\n", result, num); // 解:2.000000(収束回数0 回)

return 0;

}

newtonMethod(1.0, 1.0e-5, &result, &num);

初期値(1.0):出来るだけ解に近い値
終了条件(1.0e-5):
計算した近似解:result
計算回数:num

f(double x)

解を求めたい方程式の関数

df(double x)

解を求めたい方程式の導関数

【関連記事】
C言語で数値計算処理
C言語入門
数値計算プログラミング入門

スポンサーリンク

シェア&フォローお願いします!