Python 实现一:莱布尼茨公式
首先,我们来看一个使用 Python 编写的简单示例,这个示例利用了著名的莱布尼茨公式来计算圆周率π。莱布尼茨公式是一种级数求和的方法,它将π表示为无穷级数的形式:
[ \pi = 4 \left( 1 - \frac{1}{3} + \frac{1}{5} - \frac{1}{7} + \frac{1}{9} - \ldots \right) ]
下面是这个方法的 Python 实现代码:
def calculate_pi_leibniz(num_terms):
pi = 0
for i in range(num_terms):
pi += ((-1) ** i) / (2 * i + 1)
pi *= 4
return pi
# 调用函数,传入一个较大的项数,例如1000000
approximated_pi_leibniz = calculate_pi_leibniz(1000000)
print(approximated_pi_leibniz)
Python 实现二:蒙特卡洛方法
蒙特卡洛方法是一种统计学方法,它通过随机抽样来近似求解数学问题。以下是一个使用 Python 实现的蒙特卡洛方法计算圆周率的示例:
import random
def calculate_pi_monte_carlo(num_samples):
inside_circle = 0
for _ in range(num_samples):
x, y = random.random(), random.random()
if x ** 2 + y ** 2 <= 1:
inside_circle += 1
return 4 * inside_circle / num_samples
# 调用函数,传入一个较大的样本数,例如1000000
approximated_pi_monte_carlo = calculate_pi_monte_carlo(1000000)
print(approximated_pi_monte_carlo)
Java 实现一:莱布尼茨公式
在 Java 中,我们可以用类似的方法实现莱布尼茨公式来计算圆周率:
public class PiCalculator {
public static double calculatePi(int numTerms) {
double pi = 0;
for (int i = 0; i < numTerms; i++) {
pi += Math.pow(-1, i) / (2 * i + 1);
}
return pi * 4;
}
public static void main(String[] args) {
int numTerms = 1000000;
double approximatedPi = calculatePi(numTerms);
System.out.println(approximatedPi);
}
}
Java 实现二:蒙特卡洛方法
同样地,我们可以用 Java 实现蒙特卡洛方法来计算圆周率:
import java.util.Random;
public class PiCalculator {
public static double calculatePi(int numSamples) {
int insideCircle = 0;
Random random = new Random();
for (int i = 0; i < numSamples; i++) {
double x = random.nextDouble();
double y = random.nextDouble();
if (x * x + y * y <= 1) {
insideCircle++;
}
}
return 4 * (double) insideCircle / numSamples;
}
public static void main(String[] args) {
int numSamples = 1000000;
double approximatedPi = calculatePi(numSamples);
System.out.println(approximatedPi);
}
}
以上展示了使用 Python 和 Java 语言实现圆周率计算的几种方法。你可以根据需要选择合适的方法和编程语言来进行计算。
