package 计算π近似值;
import java.util.Scanner;
/**
* 割圆术:得到足够多的接近圆的多边形
*
* @author 朱珍珍
*
*/
public class geyuan {
static void cyc(int n) {
int i, s;
double k, len;
i = 0;
k = 3.0;
len = 1.0;
s = 6;
while (i <= n) {
System.out.printf("第%2d次的切割,为正%5d变形,PI=%.24f\n", i, s, k * Math.sqrt(len));
s *= 2;
len = 2 - Math.sqrt(4 - len);
i++;
k *= 2.0;
}
}
public static void main(String[] args) {
int n;
System.out.print("输入 切割的次数:");
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
cyc(n);
}
}
package 计算π近似值;
import java.util.Random;
import java.util.Scanner;
/**
* 蒙特卡罗算法 *均匀的撒点:在c语言中可以用随机方法来实现,产生0-1的随机坐标值 *区域判断
* :图中阴影部分的特点是距离坐标原点的距离小于1这样就可以通过计算来进判断
*
* @author 朱珍珍
*
*/
public class mengteka {
static double mote(int n) {
int i, sum;
double PI;
double x, y;
sum = 0;
Random rr = new Random();
for (i = 1; i < n; i++) {
x = rr.nextDouble();
y = rr.nextDouble();
if ((x * x + y * y) <= 1) {
sum++;
}
}
PI = 4.0 * sum / n;
return PI;
}
public static void main(String[] args) {
int n;
double PI;
System.out.print("输入点的数量:");
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
PI = mote(n);
System.out.println("输出结果 PI=" + PI);
}
}
package 计算π近似值;
/**
* 级数公式 马青公式:1706年,英国的天文学家约翰马青。的到100位的圆周率Π 拉马努金:1914年印度啊数学家,计算的到17500000位的圆周率
* 丘德诺夫斯基: 对上一个 的改进1989年得到4044000000位的圆周率 高斯-勒让德:效率非常搞,迭代20次得到100万倍的日本
* 数学家用这个公式得到206158430000位 BBP公式 :是一个全新的算法
*
* @author 朱珍珍
*
*/
public class jishu {
static double jj() {
double PI, temp;
int n, m;
n = 1;
m = 3;
temp = 2;
PI = 2;
while (temp > 1e-15) {
temp = temp * n / m;
PI += temp;
n++;
m += 2;
}
return PI;
}
public static void main() {
double PI;
PI = jj();
System.out.printf("PI=%f\n", PI);
}
}