用Java实现 Borwein 算法
Borwein 算法是 Jonathan 和 Peter Borwein 设计的一种计算,用于计算 1/π 的估计。他们构思了几种不同的算法。下面在Java中用四次汇编实现 Borwein 算法实际上确定了 Pi,但是,收敛速度过快。原则上,a 将四次盟友合并为 1/π。在每次强调时,正确数字的数量都以这种方式增加了四倍。
Java的数学库用于实现 Borwein 算法,它是Math pow()库的幂和根函数。 Java.lang.Math .pow()用于计算一个数字的某个其他数字的幂。此函数接受两个参数并将第一个参数的值返回给第二个参数。
在一个实现中,Math 模块使用了两个内置函数,如下所示:
- 幂函数: pow()
- 平方根函数: sqrt()
1. pow()函数
语法:
public static double pow(double a, double b) ;
参数:
- a:要返回幂根的基值。
- b:要返回的指数值。
返回:此方法返回 a b 。
2. sqrt()函数
数学 sqrt() Java.lang.Math.sqrt() 返回作为参数传递给它的 double 类型值的平方根。
语法:
public static double sqrt(double a) ;
参数:要返回其平方根的值。
返回:此方法返回传递给它的参数的正平方根值。
Java
// Java program to implement Borwein Algorithm
// Importing generic java classes
import java.io.*;
class GFG {
// Main driver method
public double Borwein(int noOfIter)
{
// Calculating initial value of 1/pi
double oneByPi = 6.0 - 4 * Math.sqrt(2);
// Calculating the constant value y
// used in Borwein Algorithm
double y = Math.sqrt(2) - 1.0;
double oneByPiAfterIter;
double yAfterIter;
// It calculates an estimation
// of 1/pi that increases in accurary
// the more iterations you use
for (int i = 0; i < noOfIter; i++) {
// Based on Algorithm formulas are used
yAfterIter= (1 - Math.pow((1 - y * y * y * y), (0.25))) /
(1+ Math.pow((1 - y * y * y * y), (0.25)));
oneByPiAfterIter = oneByPi * Math.pow((1 + yAfterIter), 4) -
Math.pow(2, 2 * i + 3) * yAfterIter * (1 + yAfterIter +
yAfterIter * yAfterIter);
y = yAfterIter;
oneByPi = oneByPiAfterIter;
}
return oneByPi;
}
// Main driver method
public static void main(String[] args)
{
// Object of above class in main
GFG ob = new GFG();
// Number of Iteration
int noOfIter = 10;
// Printing value of 1/pi
System.out.println("Value of 1/pi : "
+ ob.Borwein(noOfIter));
}
}
输出:
Value of 1/pi : 0.31830988618379075