批处理计算圆周率

批处理计算圆周率

上次给大家带来的是有个小游戏石头剪刀布,这次是用批处理计算圆周率。



前言

为什么要计算圆周率呢,因为圆周率是个无穷不循环小数,精确到每一位都是对计算机算力和内存的考验。计算圆周率也通常是对cpu加压的一种压力方式。随着圆周率pi的精度越来越高,计算的数值量级可达10^8,对cpu的计算精确度以及内存要求更大


提示:以下是本篇文章正文内容,下面案例可供参考

一、圆周率怎么计算?

本文是采用蒙特卡罗法计算的。正方形面积为S1,其内切圆面积为S2,S2/S1=pi/4,所以pi=4*S2/S1.

二、代码展示

代码如下:

@echo off
echo Computer Compute Capability!
echo push any key to start!
pause
echo start: %date:~0,20% %time:~0,10%
echo start: %date:~0,20% %time:~0,10%>record.txt
set counter=2
set n1=1
set n2=1
set ans
set num_all=0
set num_cir=0
set /a tim=0
set /a count=0
:restart
set /a count=count+1
set /a x=%random%%%1000
set /a y=%random%%%1000
set /a sum=x*x+y*y
if %sum% lss 1000000 (
set /a num_cir=num_cir+1
)
set /a num_all=num_all+1
if %count% equ 500 (
Set /a N1= num_cir+num_cir+num_cir+num_cir
set /a N2= num_all
Set /a Max= 30
set /a tim = tim+count
set /a count = 0
goto :begin
:over
Echo over: %date:~0,20% %time:~0,10%
Echo over: %date:~0,20% %time:~0,10% >>record.txt
Echo.The pi result:
Echo.The pi result: >>record.txt
Echo.%ans%
Echo.%ans% >>record.txt
echo count time:%tim%
echo count time:%tim% >>record.txt
)

goto :restart
####-----------------------------------
:begin
set /a TmpAns=%N1%/%N2%
set ans=%TmpAns%.
:: Echo.%ans%.>Answer.txt 
<nul set /p "=%Tmpans%."
set /a TmpSub=%N2%*%TmpAns%
set /a N1=%N1%-%TmpSub%
set N1=%N1%0
If NOT "%n1%" == "00" (
if %n1% LSS %N2% (
set N1=%N1%0
set ans=%ans%0
)
) else (
Goto :Finished
)
set count=0

:loop
If "%count%" == "%max%" (
Goto :Finished
)

set /a TmpAns=%N1%/%N2%
set ans=%ans%%TmpAns%
<nul set /p "=%Tmpans%"
set /a TmpSub=%N2%*%TmpAns%
set /a N1=%N1%-%TmpSub%
set N1=%N1%0
If NOT "%n1%" == "00" (
if %n1% LSS %N2% (
set N1=%N1%0
set ans=%ans%0
)
) else (
Goto :Finished
)
set /a count=%count%+1
goto :loop

:finished
cls
set n1=1
set n2=1
goto :over

2.结果

程序运行完会生成一个record.txt。记录了开始时间和每次计算的结束时间和计算次数。

在这里插入图片描述
在这里插入图片描述

总结

这里对文章进行总结:
首先是要对圆周率计算方式选择,成功将圆周率算出,再将S2/S1进行小数处理。本人使用的AMD RYZEN7 4800H,计算到3.14花费了半个小时,计算次数为13w次,来比比计算小数点后多少位能用时最短和次数最少吧。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算圆周率是一个经典的数学问题Python提供了多种方法来计算圆周率。以下是其中两种常见的方法: 1. 使用蒙特卡洛方法计算圆周率: 蒙特卡洛方法是一种基于随机采样的统计方法,可以用来估计圆周率。该方法的基本思想是,在一个正方形内部随机生成大量的点,然统计落在圆内的点的比例,最后通过比例来估计圆周率。 ```python import random def estimate_pi(n): count = 0 for _ in range(n): x = random.uniform(0, 1) y = random.uniform(0, 1) if x**2 + y**2 <= 1: count += 1 return 4 * count / n # 示例:估计圆周率,采样点数为1000000 print(estimate_pi(1000000)) ``` 2. 使用公式计算圆周率: 数学上已经有一些公式可以用来计算圆周率,其中最著名的是莱布尼茨级数和马青公式。 - 莱布尼茨级数: 莱布尼茨级数是一个无穷级数,可以用来计算圆周率的近似值。该级数的公式如下: π/4 = 1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + ... ```python def calculate_pi_leibniz(n): pi = 0 sign = 1 for i in range(1, n*2, 2): pi += sign * (1/i) sign *= -1 return pi * 4 # 示例:计算圆周率,级数项数为100000 print(calculate_pi_leibniz(100000)) ``` - 马青公式: 马青公式是另一种计算圆周率的公式,它基于无穷乘积的形式。该公式的公式如下: π/4 = (2/1) * (2/3) * (4/3) * (4/5) * (6/5) * (6/7) * ... ```python def calculate_pi_machin(n): pi = 1 for i in range(1, n+1): numerator = 2 * i denominator = 2 * i - 1 pi *= numerator / denominator return pi * 4 # 示例:计算圆周率,乘积项数为1000 print(calculate_pi_machin(1000)) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值