pi六轴算法_蒙特卡罗算法计算Pi

本文介绍了如何运用蒙特卡罗算法计算π值。通过在单位正方形内随机投点,统计落在单位圆内的点的比例来估算π。以Mathematica为例,展示了具体的编程实现过程,包括随机数生成和多次投点求平均值以提高精度。蒙特卡罗算法是一种基于概率统计的计算方法,常用于复杂问题的近似求解。
摘要由CSDN通过智能技术生成

呵呵,刚好大二下学期学的,给你讲讲吧。

根据我的理解简单的说就是以部分估计整体,

利用随机数来解决问题的方法称为

蒙特卡罗算法,记得课本上讲了个例题:

在数值积分法中,我们利用求单位圆的

1/4

的面积来求得

Pi/4

从而得到

Pi

。单

位圆的

1/4

面积是一个扇形,

它是边长为

1

单位正方形的一部分

(若能画图就好

了!

)

只要能求出扇行面积

S1

在正方形面积

S

中占的比例

K=S1/S

就立即能得到

S1

,从而得到

Pi

的值

.

怎样求出扇形面积在正方形面积中占的比例

K

呢?一个办法是在正方形中随机

投入很多点,

使所投的点落在正方形中每一个位置的机会相等看其中有多少个点

落在扇形内。

将落在扇形内的点数

m

与所投点的总数

n

的比

m/n

作为

k

的近似值。

怎样实现这样的随机投点呢?任何一款计算机语言都有这种功能,

能够产生在区

[0

1]

内均匀分布的随机数,在

mathematica

中,产生区间

[0

1]

内均匀分布

随机数的语句是

Random[  ]

产生两个这样的随机数

x,y,

则以

(x,y)

为坐标的点就是单位正方形内的一点

P

它落在正方形内每个位置的机会均等,

P

落在扇形内的充要条件是

x^2+y^2<=1.

蒙特卡罗算法计算

Pi

n=10000;p=();

Do[m=0;Do[x=Random[];y=Random[];If[x^2+y^2<=1,m++],{k,1,n}];

AppendTo[p,N[4m/n]],{t,1,10}];

Print[p];

Sum[p[[t]],{t,1,10}]/10

注:以上语句的功能是:

n=10000,

每次投

10000

个点得出

Pi

的近似值存放到数

p

中;一共做

10

次得到

10

个近似值,通过语句

Print[p]

将这

10

个近似值全

部显示出来观察。最后再求这

10

个近似值的平均值,相当于随机投点

100000

次得到的近似值。

以上是用

Mathenatica

编写的程序,方法就是这样,具体只能你自己体会了。

蒙特卡罗算法

以概率和统计理论方法为基础的一种计算方法。

将所求解的问题同一定的概率模

型相联系,

用电子计算机实现统计模拟或抽样,

以获得问题的近似解。

为象征性

地表明这一方法的概率统计特征,故借用赌城蒙特卡罗命名。又称统计模拟法、

随机抽样技术。由

S.M.

乌拉姆和

J.

冯·诺伊曼在

20

世纪

40

年代为研制核武器

而首先提出

。它的基本思想是,为了求解数学、物理、工程技术以及管理等方

圆周率&pi;的计算历程可以追溯到公元前20世纪,当时古埃及人就已经开始研究圆周率的值。随着时间的推移,人们不断尝试各种方法来计算&pi;的值,包括使用几何方法、概率方法、级数方法和积分方法等。下面列举一些主要的计算&pi;的方法: 1. 几何方法:最早期的计算&pi;的方法就是几何方法,即通过将圆的周长与直径相除来计算&pi;的值。这个方法的精度不高,但是很简单易行。 2. 概率方法:蒙特卡罗方法是一种概率方法,可以用来估计&pi;的值。这个方法的原理是,将一个正方形内切一个圆,然后随机产生大量的点,统计落在圆内的点的数量,以此来估算&pi;的值。 3. 级数方法:利用级数公式可以计算&pi;的值,比如莱布尼兹级数、欧拉级数和马刁尔级数等。这些级数公式的精度较高,但是计算量较大。 4. 积分方法:用积分公式来计算&pi;的值,比如阿贝尔-普朗克公式和矩形公式等。这些方法精度较高,但是计算量也比较大。 此外,还有一些脑洞大开的估计方法,比如: 1. 用切片面积估计&pi;的值:将一个圆形的切片放在一个正方形内,然后统计切片内部的面积占正方形面积的比例,以此来估算&pi;的值。 2. 用抛物线估计&pi;的值:将一个抛物线放在一个正方形内,然后统计抛物线内部的面积占正方形面积的比例,以此来估算&pi;的值。 3. 用牛顿迭代法估计&pi;的值:利用牛顿迭代法可以求出&pi;的值,但是迭代的次数较多,计算量很大。 总的来说,计算&pi;的方法有很多种,每种方法都有其优缺点和适用范围,选择何种方法取决于计算的精度要求和计算的时间限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值