算法笔记—随机化算法计算π值和计算定积分

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、计算n值

问题描述

设有一半径为r的圆及其外切四边形。向该正方形随机地投掷n个点。设落入圆内的点数为k。由于所投入的点在正方形上均匀分布,因

而所投入的点落入圆内的概率为。所以当n足够大时,

4jt

/T址---

k与n之比就逼近这一概率。从而。

程序具体代码如下:

[cpp] view pla in copy

1. //随机化算法用随机投点法计算n值

2. #include "stdafx.h"

3. #include "RandomNumber.h"

4. #include

5. using namespace std;

6.

6. double Darts( int n);

8.

9. int main()

10. {

11. int n1 = 100,n2 = 1000,n3 = 1000,n4 = 10000,n5 =

12. coutvv "n1=" <

13. coutvv "n2=" v

15. coutvv "n4=" vvn4vv", n 4='vvDarts(n4)vvendl;

10000000;

(a)

16. coutvv

"n5=" vvn5

17. return 0;

18. } 19.

20. //用随机投点法计算 n 值 21. double Darts( int n) 22. { 23. static RandomNumber dart; 24.

int k = 0;

25.

26. for ( int i=1; iv=n; i++) 27. {

28. double x = dart.fRandom(); 29. double y = dart.fRandom(); 30. if ((x*x + y*y)v=1) 31. { 32. k++; 33. } 34.

}

35.

36.

return 4*k/ double (n);

37. }

程序运行结果如图:

n1_=10U J _ n 1=2 . Q □2=1000,712=3.14 03=1000>7^3=3.128 n4=10O00,X4=3-l€08

n& =18000000v TTS=3.14B7&

请按任意镇继缰.・・・

2、计算定积分

1)随机投点法计算定积分

例:设 f(x)=x A 2,求

解:

Jz

fxXfc=、■s z (fc 叶 空

基本思想是在矩形区域上随机均匀的投点实现。本算法的基本思想是在积分区间上随机均匀的产生点,即在[a,b]上随机均匀的取点,求出由这些点产生的函数值的算术平均值,再乘以区间宽度,即可解出定积分得近似解Qk)dXr=(T> 3>—X 尊修玉玛W:tl)

算法具体代码如下:

[cpp] view pla in copy

1. //随机化算法用随机投点法计算定积分

2. #include "stdafx.h"

3. #include "RandomNumber.h"

4. #include

5. using namespace std;

6.

7.

8. 9 double Darts( int n, double a, double b); double f( double x);

10. int main()

11. {

12. int n1 =100,n2 = 1000,n3 = 1000,n4 = 10000,n5 = 10000000;

13. double a = 2.0,b = 3.0;

14. cout<< "n1=" <

相关文档
最新文档