• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

MATLAB 学习历程之for循环计算圆周率​​​​​​​​​​

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

圆周率的各种计算方法,这里介绍以下三种,都是在MATLAB 上通过相关算法实现的。

(1)利用无穷级数展开式求π 的近似值。


这是求n个数之和的累加问题,可用以下递推式来描述:        

  可用以下赋值语句来实现。

其中累加项f的符号可用以下赋值语句来实现(每循环一次反号一次)。

累加项f就可用以下赋值语句来实现。 

最上面‘n=?’只是单纯表示n的值可以取无限大,值是在这个无穷级数取值无穷大的情况下实现的

其中语句  n=input('n=?');完全可以自己输入一个无穷大的值,当然若取值(n=1000),得到的π值可能不是很精确(3.1406)

若(n=100000)得到的π值可能相对精确一点儿(3.1416),对应牺牲的是在MATLAB中运行的时间可能相对长一点,毕竟for循环执行了100000次,耗时较久,占用一定内存。

累加项符号初值为1,输入n的值,每一次计算先求累加项符号,再将累加项累加到y中

 

 

用向量求和的方式实现程序

x值为分母,1,3,5,7,.......2*n-1,奇数项作为分母

输出y值中添加符号变换一选项,利用点乘.^和./点除方式表示他是正负相间的进行相关运算 ,确保运算不会出现相关错误,y值求得是π/4的值,故而将所求的y值乘以4 得到相关π值。

 

第二种方法:利用定积分的近似值球π的近似值。

左图是利用定积分求解π值的图像形象表示,起始点a=0,(默认设置),终点b=1

将其等效为n个小的梯形求其面积累加得到π/4的值

中间绿色图形程序解释如下

h为高,等效为b-a的长度除以n(因为分成n等份)

f是关于1-x*x的开方,是的某种形象表示,1/4单位圆的面积

s=[]空矩阵,用来 存放每次计算小梯形的面积s1,成为一个行矩阵

for循环n次 

s1是计算每个小梯形面积的公式,将每个s1 面积放到矩阵s中,

最右侧是根据此思想写的一个程序,但是我们可以看到

同样是循环1000,次,但是他的精度与此前无穷级数的精度不一样,这是因为选择的方法不一样。

前者是公式累计,后者是定积分近似

 

第三种方法:利用蒙特卡洛法求π 的近似值。 

这个主要利用了概率学,p=圆的面积/矩形的面积=π*r^2/2*2=π/4

只考虑在第一象限内的图像,随机点占的比例,

主要是点随机分布在1/4圆内和随机点在1/4正方形的比值。

            

注意是两个end,一个对应if 另外一个对应for语句

有上图可以看到,n的次数选取对最后估计值的精度有很大影响,虽然中间n=1000000,但是他的运行时间较n=100000长得多,类比有n值越大,他的及精确度越高。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap