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

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

格子座標を使って円周率πを計算するJavaソースコードです。計算精度が悪く、実用ではありません。計算方法を参考にしてください。

このソースについての記事はこちら「格子座標から円周率πを計算」です。

GridPI.javaをダウンロード

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

public class GridPI {
	public static void main( String[] args ) {
		// 変数の宣言
		int    cellnum;
		int    x, y;
		double in_num;
		double left, right;
		double top, bottom;
		double celllen;
		double cellx, celly;
		double l2;

		// 単位円に外接する正方形の左上と右下の座標を代入
		// 左上の座標
		left = -1.0;
		top = 1.0;

		// 右下の座標
		right = 1.0;
		bottom = -1.0;

		// 1辺の格子の数
		cellnum = 20000;

		// セルの幅を計算(x軸だけで計算)
		celllen = ( right - left ) / (double)( cellnum - 1 );

		// 円周率πの計算のメイン
		// 円内の座標の個数を初期化
		in_num = 0.0;

		// 格子のy座標の初期値
		celly = top;
		for ( y = 0; y < cellnum; y++ ) {
			// 格子のx座標の初期値
			cellx = left;
			for ( x = 0; x < cellnum; x++ ) {
				// 単位円の中心座標(0,0)と
				//セルの直線距離の2乗を計算
				l2 = cellx * cellx + celly * celly;

				// 単位円の中かを判定
				if ( 1.0 >= l2 ) {
					// 単位円の中と判定
					// 単位円の線上も中と判定
					++ in_num;
				}
				// 格子のx座標にセルの幅を足す
				cellx += celllen;
			}
			// 格子のy座標からセルの幅を引く
			celly -= celllen;
		}

		// 外接正方形の面積を計算(計算結果は4.0)
		double sq_area = ( right - left ) * ( top - bottom ); 		

		// 格子全体の座標数
		double all_num = (double)cellnum * (double)cellnum;

		// 円周率πを計算
		double pi = sq_area * in_num / all_num;

		// 結果を出力
		System.out.println( pi );
	}
}

このソースについての記事はこちら「格子座標から円周率πを計算」です。

 

■新着情報

2021.03.31 神経衰弱 1人で神経衰弱
2021.03.10 最も近い座標を探す 1番近い座標は?
2021.03.09 フィボナッチ数列(配列) フィボナッチ数列(配列)

■広告

 

 

 

 

Topへ