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

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

円周率πを幾何学計算だけで計算するJavaサンプルソースです。これは、単位円の面積がπと同じであることを利用してπを計算するアルゴリズムで、単位円を小さな台形で分割して、その台形の面積の合計をπとするものです。、

このソースについての記事はこちら「円周率πを求める その1」です。

CalcPI1.javaをダウンロード

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

public class CalcPI1 {
	// πを計算するメソッド
	public static double getPI_1( int yn )
	{
		double upperbase;	// 台形の上底
		double lowerbase;	// 台形の下底
		double height;		// 台形の高さ
		double lowery;		// 台形の下底の座標
		double area;		// 円の面積
		double aread;		// 台形の面積

		// 台形の高さ(円の半径をynで割る)
		height = 1.0 / (double)yn;

		// 上底の初期値
		upperbase = 0.0;

		// 下底のy座標の初期値
		lowery = 1.0 - height;

		// 計算開始
		area = 0.0;
		for ( int i = 0; i < yn; ++ i ) {
			// 下底の計算
			lowerbase = Math.sqrt( 1.0 - lowery * lowery );

			// 台形の面積計算
			aread = ( upperbase + lowerbase ) * height / 2.0;

			// 円の面積に台形の面積を足す
			area += aread;

			// 下底を上底に代入
			upperbase = lowerbase;

			// 下底のy座標からheightを引く
			lowery -= height;
		}

		// 1/4円の面積を4倍
		area = area * 4.0;

		// 結果を戻す
		return area;
	}


	public static void main( String[] args ) {
		// yの分割数
		int yn;

		// 1000分割
		yn = 1000;
		System.out.println( "分割数:" + yn+ "     π=" + getPI_1( yn ) );

		// 10000分割
		yn = 10000;
		System.out.println( "分割数:" + yn+ "    π=" + getPI_1( yn ) );

		// 100000分割
		yn = 100000;
		System.out.println( "分割数:" + yn+ "   π=" + getPI_1( yn ) );

		// 1000000分割
		yn = 1000000;
		System.out.println( "分割数:" + yn+ "  π=" + getPI_1( yn ) );

		// 10000000分割
		yn = 10000000;
		System.out.println( "分割数:" + yn+ " π=" + getPI_1( yn ) );
	}
}

このソースについての記事はこちら「円周率πを求める その1」です。

 

■新着情報

2021.06.23 配列の初期値 配列の生成直後の値は?
2021.06.18 変数の初期値 変数に値を代入しないで計算

■広告

 

 

 

 

Topへ