pi的两个近似公式

STEM版,合并数学,物理,化学,科学,工程,机械。不包括生物、医学相关,和计算机相关内容。

版主: verdeliteTheMatrix

回复
头像
(ツ)(污坛忍者)楼主
知名作家
知名作家
帖子互动: 54
帖子: 1091
注册时间: 2023年 6月 2日 12:38

pi的两个近似公式

帖子 (ツ)(污坛忍者)楼主 »

第一个
pi/4 = 1 - 1/3 + 1/5 - 1/7 + 1/9 - ...

第二个
pi/6 = w - 1/3 * w^3 + 1/5 * w^5 - 1/7 * w^7 +...., w = 1/sqrt(3)

第二个收敛速度要快很多啊,大约10~20项就差不多了,第一个要10000项才能跟第二个差不多的误差.

提供code懒人包

代码: 全选

N = 10000;

multiplier = 1;
sum = 0;
for i = 1 : N
    sum = sum + multiplier / (2 * i - 1);
    multiplier = -multiplier;
end

sum = sum * 4

代码: 全选

N = 20;

multiplier = 1;
w = 1/sqrt(3);
sum = 0;
for i = 1 : N
    order = 2 * i - 1
    sum = sum + multiplier * w^order / order;
    multiplier = -multiplier;
end

sum = sum * 6
头像
TheMatrix
论坛支柱
论坛支柱
2024年度优秀版主
TheMatrix 的博客
帖子互动: 276
帖子: 13597
注册时间: 2022年 7月 26日 00:35

Re: pi的两个近似公式

帖子 TheMatrix »

这好像不是python.
randomatrices
自助冻结自助冻结
帖子互动: 25
帖子: 1287
注册时间: 2022年 7月 25日 03:22

Re: pi的两个近似公式

帖子 randomatrices »

这俩个都不行吧. 最快的是用椭圆函数, AGM那些, 一步4位精度,俩步就到八位。现在pi 已经算到万亿位了吧, 谁会用这俩个初级的东西?
头像
verdelite(众傻之傻)
论坛元老
论坛元老
帖子互动: 1057
帖子: 24405
注册时间: 2022年 7月 21日 23:33

Re: pi的两个近似公式

帖子 verdelite(众傻之傻) »

中国共产党未命空间党小组 写了: 2023年 7月 6日 06:39 一看就是matlab啊
好久没用了,看第一眼竟然没想起来是哪个语言。
头像
TheMatrix
论坛支柱
论坛支柱
2024年度优秀版主
TheMatrix 的博客
帖子互动: 276
帖子: 13597
注册时间: 2022年 7月 26日 00:35

Re: pi的两个近似公式

帖子 TheMatrix »

中国共产党未命空间党小组 写了: 2023年 7月 6日 06:39 一看就是matlab啊
谢谢。我没用过matlab。
取诸怀抱
著名写手
著名写手
帖子互动: 9
帖子: 274
注册时间: 2022年 7月 23日 02:46

Re: pi的两个近似公式

帖子 取诸怀抱 »

顺手改成python。

代码: 全选

N = 10000;

multiplier = 1;
sum = 0;
for i in arange(1, N):
    sum = sum + multiplier / (2 * i - 1);
    multiplier = -1*multiplier;

sum = sum * 4
print(sum)

代码: 全选

N = 20;

multiplier = 1;
w = 1/sqrt(3);
sum = 0;
for i in arange(1, N):
    order = 2 * i - 1
    sum = sum + multiplier * w**order / order;
    multiplier = -multiplier;

sum = sum * 6
print(sum)
放浪形骸
SunnyA
见习点评
见习点评
帖子互动: 58
帖子: 2005
注册时间: 2022年 8月 3日 19:47

Re: pi的两个近似公式

帖子 SunnyA »

TheMatrix 写了: 2023年 7月 5日 23:07 这好像不是python.
matlab
头像
(ツ)(污坛忍者)楼主
知名作家
知名作家
帖子互动: 54
帖子: 1091
注册时间: 2023年 6月 2日 12:38

Re: pi的两个近似公式

帖子 (ツ)(污坛忍者)楼主 »

取诸怀抱 写了: 2023年 7月 6日 21:48 顺手改成python。

代码: 全选

N = 10000;

multiplier = 1;
sum = 0;
for i in arange(1, N):
    sum = sum + multiplier / (2 * i - 1);
    multiplier = -1*multiplier;

sum = sum * 4
print(sum)

代码: 全选

N = 20;

multiplier = 1;
w = 1/sqrt(3);
sum = 0;
for i in arange(1, N):
    order = 2 * i - 1
    sum = sum + multiplier * w**order / order;
    multiplier = -multiplier;

sum = sum * 6
print(sum)
帮你改改

代码: 全选

import math
N = 100
indices = list(range(N))

print(sum([1 / (i * 2 + 1) if i % 2 == 0 else -1 / (i * 2 + 1) for i in indices]) * 4)

w = 1 / math.sqrt(3)
print(sum([w**(i * 2 + 1) / (i * 2 + 1) if i % 2 == 0 else -w**(i * 2 + 1) / (i * 2 + 1) for i in indices]) * 6)
再补一个超简洁版

代码: 全选

sum [(-1) ** x / (x * 2 + 1) | x <- [0..100]] * 4

代码: 全选

sum [(-1) ** x / (x * 2 + 1) * ((1 / (sqrt 3)) ** (x * 2 + 1)) | x <- [0..10]] * 6
上次由 (ツ) 在 2023年 7月 7日 22:41 修改。
SunnyA
见习点评
见习点评
帖子互动: 58
帖子: 2005
注册时间: 2022年 8月 3日 19:47

Re: pi的两个近似公式

帖子 SunnyA »

(ツ) 写了: 2023年 7月 6日 23:09 帮你改改

代码: 全选

import math
N = 100
indices = list(range(N))

print(sum([1 / (i * 2 + 1) if i % 2 == 0 else -1 / (i * 2 + 1) for i in indices]) * 4)

w = 1 / math.sqrt(3)
print(sum([w**(i * 2 + 1) / (i * 2 + 1) if i % 2 == 0 else -w**(i * 2 + 1) / (i * 2 + 1) for i in indices]) * 6)
再给你改改:

sum((-1)**(n+1)/(2*n-1) for n in range(1,1000000))*4
x1 图片
回复

回到 “STEM”