Javaプログラミング学習サイト ゆるゆるプログラミング

・Javaソースダウンロード(NewtonsMethod2.java)

ニュートン法を使って、平方根を求めるJavaのソースコードです。このソースでは、f(x)のxで微分式が不明であっても微分の近似値計算を行い、平方根の結果を求めています。

このソースについての記事はこちら「ニュートン法で平方根 その2」です。

NewtonsMethod2.javaをダウンロード

ダウンロードしたファイルはzip形式です。解凍して使ってください。Windowsの場合、ダウンロードしたzipファイルをマウスの右ボタンでクリックして表示されるポップアップメニューから「すべて展開(T)」で解凍できます。

public class NewtonsMethod2 {
	// f(x)=x^2-a
	static double f( double x, double a )
	{
		return x * x - a;
	}


	// f(x)の微分f'(x) - 接線の傾き
	// 微分の式が分からない場合、微分の近似値を計算
	static double df_ex( double x, double a )
	{
		double h = 0.0000001;

		return ( f( x + h, a ) - f( x, a ) ) / h;
	}


	// ニュートン法 漸化式
	static double newtons( double x, double a )
	{
		return x - f( x, a ) / df_ex( x, a );
	}


	// メイン
	public static void main(String[] args) {
		// 変数の宣言
		double e = 0.000001;	// 収束の判定値
		double x;		// 計算値を格納
		double x_ans;		// 1つ前の計算値
		double a;		// 平行根を求める値

		// 平行根を求める値
		a = 169.0;	// 13×13

		// 初期値を代入
		x_ans = 10000.0;

		// 無限ループ
		for ( int i = 1; ; ++ i ) {
			// ニュートン法で計算
			x = newtons( x_ans, a );

			// 収束の判定
			if ( e > Math.abs( x - x_ans ) ) break;

			// 最新の計算結果を次の計算結果に代入
			x_ans = x;

			// 途中経過の表示
			System.out.println( "回数:" + i + "  計算結果: " + x_ans );
		}

		// 改行
		System.out.println();

		// 結果の表示
		System.out.println( "計算結果: " + x_ans );

		// 結果の絶対値
		x_ans = Math.abs( x_ans );
		System.out.println( a + "の絶対値: " + x_ans );

		// f(x)=0になるかを確認
		System.out.println( "f(" + x_ans + ")=" + f( x_ans, a ) );
	}
}

このソースについての記事はこちら「ニュートン法で平方根 その2」です。

 

■新着情報

2022.07.07 外部プログラムの実行 exeファイル実行
2022.07.06 完全数 6=1+2+3

■広告

 

 

 

 

Topへ