麻烦告诉我C++解这题的详细代码

自然之神_2022 |浏览1098次
收藏|2022/03/30 11:03

满意回答

2022/03/30 11:34

//随机化算法 用随机投点法计算定积分#include<stdio.h>#include<math.h>#include<time.h>//使用当前时钟做种子double Darts(int n,double a,double b);double f(double x);//积分函数 main(){ int i,n[5]={100,1000,1000,10000,10000000};//随机投点个数,个数越多结果越精确 double a=1.0,b=2.0;//积分上下界 srand((unsigned)time(NULL)); //初始化随机数for(i=0;i<5;i++)printf("%d:\tn=%d\tr=%lf\n",i+1,n[i],Darts(n[i],a,b));}/* 基本思想是在矩形区域内随机均匀投点,求出由这些点 * 产生的函数值的算术平均值,再乘以区间宽度,即可得 * 出定积分的近似解 */double Darts(int n,double a,double b) {int i;double sum = 0.0; for(i=0; i<n; i++){double x = (b-a)*rand() + a;//产生[a,b)之间的随机数sum = sum + f(x);}return (b-a)*sum/n;}double f(double x){return sin(x)/x;

小刀的好帮手

其他回答(0)
0人关注该问题
+1

 加载中...