我正在学习bash脚本.在探索数学函数时,我遇到了一个计算pi值的命令.
seq -f '4/%g' 1 2 99999 | paste -sd-+ | bc -l
虽然我了解基本seq命令的工作原理,但我无法理解上述命令的工作原理.有谁能澄清一下它是如何工作的?
这使用Gregory-Leibniz系列计算π的值:
原文链接:https://www.f2er.com/bash/386430.htmlseq -f’4 /%g’1 2 99999生成分数:
4/1 4/3 4/5 4/7 4/9 4/11 4/13 4/15 4/17 4/19
糊管道糊料-sd-结合了具有替代分隔符的浆料 – 和.
最后,bc -l执行算术给出结果.
编辑:如the comment所述,这个序列收敛很慢. Machin’s formula具有明显的收敛速度:
对于tan-1(x)使用相同的扩展:
为了计算π,我们可以看到它使用系列的前50个项产生正确的值到50位数1:
${ echo -n "scale=50;"; seq 1 2 100 | xargs -n1 -I{} echo '(16*(1/5)^{}/{}-4*(1/239)^{}/{})';} | paste -sd-+ | bc -l 3.14159265358979323846264338327950288419716939937510
只需100个术语,π的值就精确计算到100位以上:
${ echo -n "scale=100;"; seq 1 2 200 | xargs -n1 -I{} echo '(16*(1/5)^{}/{}-4*(1/239)^{}/{})';} | paste -sd-+ | bc -l 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
1 Pi