算法-->级数

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();// 产生0-1直接按的随机数
            y = rr.nextDouble();
            if ((x * x + y * y) <= 1) {
                sum++;// 计数

            }
        }
        PI = 4.0 * sum / n;// 计算PI
        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;// 初始化PI
        while (temp > 1e-15) {// 列数大于指定的精度
            temp = temp * n / m;// 计算一个项的值
            PI += temp;// 添加都pi中
            n++;// 分子加一
            m += 2;// 分母家2

        }
        return PI;
    }

    public static void main() {
        double PI;// 计算
        PI = jj();
        System.out.printf("PI=%f\n", PI);

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值