當前位置:編程學習大全網 - 網站源碼 - 這題的c語言源代碼,還有解題思想,隨機化算法,麻煩手打,謝謝

這題的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;

}

  • 上一篇:flash3D與flash的3D效果有區別沒?(高手進~謝謝!)
  • 下一篇:文檔在線預覽源代碼
  • copyright 2024編程學習大全網