欢迎来到天天文库
浏览记录
ID:47413937
大小:95.89 KB
页数:6页
时间:2020-01-10
《0042算法笔记——【随机化算法】计算π值和计算定积分》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1、计算π值 问题描述 设有一半径为r的圆及其外切四边形。向该正方形随机地投掷n个点。设落入圆内的点数为k。由于所投入的点在正方形上均匀分布,因而所投入的点落入圆内的概率为 。所以当n足够大时,k与n之比就逼近这一概率。从而。 程序具体代码如下:[cpp] viewplain copy1.//随机化算法 用随机投点法计算π值 2.#include "stdafx.h" 3.#include "RandomNumber.h" 4.#include 5.using namespace std; 6. 7.double Darts(int n
2、); 8. 9.int main() 10.{ 11. int n1 = 100,n2 = 1000,n3 = 1000,n4 = 10000,n5 = 10000000; 12. cout<<"n1="<3、. cout<<"n5="<4、 if((x*x + y*y)<=1) 15. { 16. k++; 17. } 18. } 19. 20. return 4*k/double(n); 21.} 程序运行结果如图: 2、计算定积分 例:设f(x)=x^2,求 解: 1)随机投点法计算定积分 基本思想是在矩形区域上随机均匀的投点实现。本算法的基本思想是在积分区间上随机均匀的产生点,即在[a,b]上随机均匀的取点,求出由这些点产生的函数值的算术平均值,再乘以区间宽度,即可解出定积分得近似解。 算法具体代码如下5、:[cpp] viewplain copy1.//随机化算法 用随机投点法计算定积分 2.#include "stdafx.h" 3.#include "RandomNumber.h" 4.#include 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 = 10006、0000; 13. double a = 2.0,b = 3.0; 14. cout<<"n1="<7、,b)<
3、. cout<<"n5="<4、 if((x*x + y*y)<=1) 15. { 16. k++; 17. } 18. } 19. 20. return 4*k/double(n); 21.} 程序运行结果如图: 2、计算定积分 例:设f(x)=x^2,求 解: 1)随机投点法计算定积分 基本思想是在矩形区域上随机均匀的投点实现。本算法的基本思想是在积分区间上随机均匀的产生点,即在[a,b]上随机均匀的取点,求出由这些点产生的函数值的算术平均值,再乘以区间宽度,即可解出定积分得近似解。 算法具体代码如下5、:[cpp] viewplain copy1.//随机化算法 用随机投点法计算定积分 2.#include "stdafx.h" 3.#include "RandomNumber.h" 4.#include 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 = 10006、0000; 13. double a = 2.0,b = 3.0; 14. cout<<"n1="<7、,b)<
4、 if((x*x + y*y)<=1) 15. { 16. k++; 17. } 18. } 19. 20. return 4*k/double(n); 21.} 程序运行结果如图: 2、计算定积分 例:设f(x)=x^2,求 解: 1)随机投点法计算定积分 基本思想是在矩形区域上随机均匀的投点实现。本算法的基本思想是在积分区间上随机均匀的产生点,即在[a,b]上随机均匀的取点,求出由这些点产生的函数值的算术平均值,再乘以区间宽度,即可解出定积分得近似解。 算法具体代码如下
5、:[cpp] viewplain copy1.//随机化算法 用随机投点法计算定积分 2.#include "stdafx.h" 3.#include "RandomNumber.h" 4.#include 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 = 1000
6、0000; 13. double a = 2.0,b = 3.0; 14. cout<<"n1="<7、,b)<
7、,b)<
此文档下载收益归作者所有