求圆周率

6.南北朝时,我国数学家祖冲之首先把圆周率值计算到小数点后六位,比欧洲早了1100年!他采用的是称为“割圆法”的算法,实际上已经蕴含着现代微积分的思想。

    如图所示,圆的内接正六边形周长与圆的周长近似多边形的边越多,接近的越好!我们从正六边形开始割圆吧。

    

如图所示,从圆心做弦的垂线,可把6边形分割为12边形。该12边形的边长a'的计算方法很容易利用勾股定理给出。之后,再分割为正24边形,....如此循环会越来越接近圆周。

之所以从正六边开始,是因为此时边长与半径相等,便于计算。取半径值为1,开始割圆吧!    

以下代码描述了割圆过程。       

程序先输出了标准圆周率值,紧接着输出了不断分割过程中多边形边数和所对应的圆周率逼近值。

public class B21

{

public static void main(String[] args)

{

System.out.println("标准 " + Math.PI);

double a = 1; 

int n = 6;

for(int i=0; i<10; i++)

{

double b= Math.sqrt( );

a = Math.sqrt((1-b)*(1-b) + (a/2)*(a/2));

n = _____n*2_________; //填空

System.out.println(n + "  " + _((a*_Math.sqrt(1-(a/2)*(a/2))_)/2)_*n___________);  // 填空

}

}

}请分析代码逻辑,并推测划线处的代码。



 

  1. public class test6 { 
  2.  
  3.      
  4.     public static void main(String[] args) { 
  5.         System.out.println("PI的标准:"+Math.PI); 
  6.         double a=1
  7.         int n=6
  8.         for (int i = 0; i < 10; i++) { 
  9.             double b=Math.sqrt(0); 
  10.             b=Math.sqrt(1-(a/2)*(a/2)); 
  11.             System.out.println(n+"边形 "+a*b/2*n); 
  12.             a=Math.sqrt(((a/2)*(a/2)+(1-b)*(1-b)));  //求次a 
  13.             n=n*2
  14.             //System.out.println(n+"边形 "+((a*Math.sqrt(1-(a/2)*(a/2)))/2)*n); 
  15.         } 
  16.     } 
  17.  

 

你可能感兴趣的:(圆周率)