- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
.
1、计算 π值
问题描述
设有一半径为 r 的圆及其外切四边形。向该正方形随机地投掷 n 个
点。设落入圆内的点数为 k。由于所投入的点在正方形上均匀分布,因
而所投入的点落入圆内的概率为 。所以当 n 足够大时,
k 与 n 之比就逼近这一概率。从而 。
程序具体代码如下:
[cpp] view plain copy
1. // 随机化算法 用随机投点法计算 π值
2. #include stdafx.h
3. #include RandomNumber.h
4. #include iostream
5. using namespace std;
6.
7. double Darts( int n);
8.
9. int main()
10. {
11. int n1 = 100,n2 = 1000,n3 = 1000,n4 = 10000,n5 =
12. cout n1= n1 , π 1=Darts(n1)endl;
13. cout n2= n2 , π 2=Darts(n2)endl;
14. cout n3= n3 , π 3=Darts(n3)endl;
15. cout n4= n4 , π 4=Darts(n4)endl;
’.
.
16. cout n5= n5 , π 5=Darts(n5)endl;
17. return 0;
18. }
19.
20. // 用随机投点法计算 π值
21. double Darts( int n)
22. {
23.
24.
25.
26.
static RandomNumber dart;
int k = 0;
for ( int i=1; i=n; i++)
27. {
28. double x = dart.fRandom();
29. double y = dart.fRandom();
30. if ((x*x + y*y)=1)
31. {
32. k++;
33. }
34. }
35.
36. return 4*k/ double (n);
37. }
程序运行结果如图:
2、计算定积分
例:设 f(x)=x^2, 求
解:
1) 随机投点法计算定积分
’.
.
基本思想是在矩形区域上 随机均匀的投点实现 。本算法的基本思想是在
积分区间上随机均匀的产生点 , 即在[a,b]上随机均匀的取点 , 求出由这
些点产生的函数值的 算术平均值 , 再乘以区间宽度 , 即可解出定积分得近似解
。
算法具体代码如下:
[cpp] view plain copy
1. // 随机化算法 用随机投点法计算定积分
2. #include stdafx.h
3. #include RandomNumber.h
4. #include iostream
5. using namespace std;
6.
7. double Darts( int n, double a, double b);
8. double f( double x);
9.
10. int main()
11. {
12. int n1 = 100,n2 = 1000,n3 = 1000,n4 = 10000,n5 =
13. double a = 2.0,b = 3.0;
14. cout n1= n1 ,r1= Darts(n1,a,b)endl;
15. cout n2= n2 ,r2=
文档评论(0)