黄金矿工c语言代码
发布时间: 2023-06-05 05:45:43
⑴ 这题的c语言源代码,还有解题思想,随机化算法,麻烦手打,谢谢
//随机化算法用随机投点法计算定积分
#include<stdio.h>
#include<math.h>
#include<time.h>//使用当前时钟做种子
doubleDarts(intn,doublea,doubleb);
doublef(doublex);//积分函数
main(){
inti,n[5]={100,1000,1000,10000,10000000};//随机投点个数,个数越多结果越精确
doublea=1.0,b=2.0;//积分上下界
srand((unsigned)time(NULL));//初始化随机数
for(i=0;i<5;i++)
printf("%d: n=%d r=%lf ",i+1,n[i],Darts(n[i],a,b));
}
/*基本思想是在矩形区域内随机均匀投点,求出由这些点
*产生的函数值的算术平均值,再乘以区间宽度,即可得
*出定积分的近似解
*/
doubleDarts(intn,doublea,doubleb)
{
inti;
doublesum=0.0;
for(i=0;i<n;i++){
doublex=(b-a)*rand()+a;//产生[a,b)之间的随机数
sum=sum+f(x);
}
return(b-a)*sum/n;
}
doublef(doublex){
returnsin(x)/x;
}
热点内容