问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

谁说π难求?盘点圆周率的各种操作

创作时间:
作者:
@小白创作中心

谁说π难求?盘点圆周率的各种操作

引用
CSDN
1.
https://blog.csdn.net/m0_74968460/article/details/143302494

圆周率π是数学界最著名的常数之一,自古以来就吸引着无数数学家和科学家去探索它的奥秘。从古代的阿基米德到现代的计算机科学家,人们发展出了各种各样的方法来计算π的值。本文将介绍六种不同的计算π的方法,从简单的随机模拟到复杂的迭代算法,每种方法都展现了数学的美妙和多样性。

蒙特卡洛方法 - "用随机点算圆周率"

蒙特卡洛方法是通过随机数来模拟实验的经典方法。在求π的过程中,这种方法利用了圆和正方形的面积比值来进行估算。基本思路如下:

  1. 假设有一个边长为1的正方形和一个内接的圆。
  2. 向正方形中随机撒点,计算这些点中落在圆内的比例。
  3. 利用比例关系来估算π值。

公式如下:

π ≈ 4 × 圆内点数 / 总点数

MATLAB代码示例:

% 参数设置
num_points = 1000000; % 随机点的数量
inside_circle = 0; % 圆内点数计数

% 随机点生成
x = rand(1, num_points);
y = rand(1, num_points);

% 圆内点数统计
for i = 1:num_points
    if x(i)^2 + y(i)^2 <= 1
        inside_circle = inside_circle + 1;
    end
end

% 计算π的近似值
pi_estimate = 4 * inside_circle / num_points;

% 数据可视化
figure;
plot(x, y, '.'); hold on;
theta = linspace(0, 2*pi, 100);
plot(cos(theta), sin(theta), 'r'); % 圆的边界
axis equal;
title(['Monte Carlo Approximation of \pi, Estimated \pi = ', num2str(pi_estimate)]);
xlabel('x');
ylabel('y');

结果分析:

使用蒙特卡洛方法得到的π值近似精度取决于随机点的数量。点数越多,估算的π值会越接近实际值,但精确度却受限于方法的随机性。

莱布尼茨公式 - "简单的无穷级数"

莱布尼茨公式是基于无穷级数来逼近π的一个简单方法:

π = 4 ∑ k = 0 ∞ ( − 1 ) k / (2k + 1)

MATLAB代码示例:

% 参数设置
terms = 10000; % 累加项数
pi_estimate = 0; % π的近似值

% 计算π的近似值
for k = 0:terms-1
    pi_estimate = pi_estimate + 4 * ((-1)^k) / (2 * k + 1);
end

% 显示结果
disp(['莱布尼茨公式估算的π值为:', num2str(pi_estimate)]);

% 数据可视化
n_values = 1:terms;
pi_values = 4 * cumsum((-1).^(n_values - 1) ./ (2 * n_values - 1));
plot(n_values, pi_values);
xlabel('Number of Terms');
ylabel('Estimated \pi');
title('Leibniz Series Approximation of \pi');
grid on;

结果分析:

莱布尼茨公式估算的π值为:3.1415

虽然莱布尼茨公式的计算方式简单,但其收敛速度极慢。需要大量项数才能获得较高的精度。这种方法更适合作为π计算的"入门级"示例。

高斯-勒让德算法 - "精准的迭代法"

高斯-勒让德算法是一种迭代方法,计算精度极高,非常适合用来计算π的高精度值。其迭代公式如下:

a0 = 1, b0 = 1/√2, t0 = 1/4, p0 = 1

迭代计算:

an+1 = (an + bn) / 2
bn+1 = √(an × bn)
tn+1 = tn - pn ⋅ (an - an+1)²
pn+1 = 2 ⋅ pn

最终π的近似值为:

π ≈ (an + bn)² / (4 ⋅ tn)

MATLAB代码示例:

% 初始值
a = 1;
b = 1 / sqrt(2);
t = 1 / 4;
p = 1;
num_iterations = 10; % 迭代次数

% 迭代计算
for n = 1:num_iterations
    a_next = (a + b) / 2;
    b = sqrt(a * b);
    t = t - p * (a - a_next)^2;
    p = 2 * p;
    a = a_next;
end

% 计算π的近似值
pi_estimate = (a + b)^2 / (4 * t);

% 显示结果
disp(['高斯-勒让德算法估算的π值为:', num2str(pi_estimate)]);

结果分析:

高斯-勒让德算法估算的π值为:3.1416

高斯-勒让德算法以其快速的收敛性闻名,几次迭代即可得到极高精度的π值。适合需要精确π值的计算场景,但计算过程相对复杂。

蒲丰投针法古老的"针"与圆周率π的邂逅

谁把针丢了?——用蒲丰投针法愉快地算ππ

连分数展开 - "π的分数之美"

连分数是一种用分数嵌套来表示数的方法。圆周率π的连分数展开近似公式如下:

π = 3 + 1² / (6 + 3² / (6 + 5² / (6 + ...)))

MATLAB代码示例:

% 参数设置
terms = 10; % 连分数的项数
pi_estimate = 3;

% 计算π的近似值
for k = terms:-1:1
    pi_estimate = 3 + (2 * k - 1)^2 / (6 + pi_estimate);
end

% 显示结果
disp(['连分数展开法估算的π值为:', num2str(pi_estimate)]);

% 可视化
n_values = 1:terms;
pi_values = zeros(1, terms);
temp_estimate = 3;
for k = 1:terms
    temp_estimate = 3 + (2 * k - 1)^2 / (6 + temp_estimate);
    pi_values(k) = temp_estimate;
end
plot(1:terms, pi_values, '-o');
xlabel('Number of Terms');
ylabel('Estimated \pi');
title('Continued Fraction Approximation of \pi');
grid on;

结果分析:

连分数展开法估算的π值为:3.1018

连分数方法提供了一种独特的角度来逼近π。虽然它的收敛速度较慢,但连分数展开展示了π的数学结构之美。

拉马努金公式 - "近似π的巅峰之作"

印度数学家拉马努金提出了一个以无穷级数形式逼近π的公式,其精度和收敛速度非常惊人,广泛应用于高精度计算中。拉马努金的π公式如下:

1/π = 2√2 ∑ k = 0 ∞ (4k)! (1103 + 26390k) / ((k!)^4 396^(4k))

这与马青公式有些相似,但通过特殊的处理得到了更快的收敛速度。

MATLAB代码示例:

% 参数设置
terms = 5; % 累加项数
pi_inverse = 0;

% 计算π的倒数
for k = 0:terms-1
    num = factorial(4 * k) * (1103 + 26390 * k);
    den = (factorial(k)^4) * 396^(4 * k);
    pi_inverse = pi_inverse + num / den;
end

% 计算π的近似值
pi_estimate = 1 / (pi_inverse * (2 * sqrt(2) / 9801));

% 显示结果
disp(['拉马努金公式估算的π值为:', num2str(pi_estimate)]);

% 可视化
n_values = 1:terms;
pi_values = arrayfun(@(x) 1 / (sum(arrayfun(@(k) factorial(4 * k) * (1103 + 26390 * k) / ((factorial(k)^4) * 396^(4 * k)), 0:x-1)) * (2 * sqrt(2) / 9801)), n_values);
plot(n_values, pi_values, '-o');
xlabel('Number of Terms');
ylabel('Estimated \pi');
title('Ramanujan Series Approximation of \pi');
grid on;

结果分析:

拉马努金公式估算的π值为:3.1416

拉马努金公式是π计算领域的一个巅峰作品,其收敛速度快得惊人,甚至被用于现代计算机π的精确计算中。

总结与反思:π的求值方法之旅

以上我们探索了六种不同方法来逼近圆周率π,从随机模拟的蒙特卡洛法到收敛神速的拉马努金公式。每种方法展现了数学的不同领域,体现了从几何到级数、从概率到连分数的多样性。

这些方法可以总结为以下几点:

  1. 简单性与复杂性:例如,蒙特卡洛方法和莱布尼茨公式以其简单的计算方式适合初学者,但精度较低;而高斯-勒让德算法和拉马努金公式虽复杂,但收敛迅速,适合高精度计算。

  2. 收敛速度:不同方法收敛速度差异巨大。简单的级数求法收敛较慢,而拉马努金公式和马青公式的收敛速度极快。

  3. 计算成本:一些方法需要大量的计算步骤和迭代(如连分数和莱布尼茨),而另一些方法在相对少的计算量下就能达到高精度(如高斯-勒让德)。

未来展望:

π的探索仍然没有尽头,未来的数学家可能会发现更多奇妙的计算π的方法,也可能会进一步揭示圆周率和宇宙其他恒量之间的关系。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号