这题的c语言源代码,还有解题思想,随机化算法,麻烦手打,谢谢

如题所述

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

#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;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-23
具体要求要黄金矿工界面非难度追问

用随机算法

相似回答