0042算法筆記——【隨機化算法】計算π值和計算定積分_第1頁
0042算法筆記——【隨機化算法】計算π值和計算定積分_第2頁
0042算法筆記——【隨機化算法】計算π值和計算定積分_第3頁
0042算法筆記——【隨機化算法】計算π值和計算定積分_第4頁
0042算法筆記——【隨機化算法】計算π值和計算定積分_第5頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1、計算冗值問題描述設有一半徑為r的圓及其外切四邊形。向該正方形隨機地投擲n個點。設落入圓內的點數為k。由于所投入的點在正方形上均勻分布,因獷:乳而所投入的點落入圓內的概率為44Jt7T而k與n之比就逼近這一概率。從而"c一。1(a)廣4。所以當n足夠大時,0)程序具體代碼如下:cppviewplaincopy1.隨機化算法用隨機投點法計算無值2.#include"stdafx.h"3.4.#include<iostream>5.usingnamespacestd;6.7.doubleDarts(intn);8.9.intmain()10.11.12.

2、13.14.15.intn1=100,n2=1000n3=1000,n4=10000,n5=cout<<"n1="<<n1<<"無1=<<Darts(n1)<<endl;cout<<"n2="<<n2<<"22=<<Darts(n2)<<endl;cout<<"n3="<<n3<<"無3=<<Darts(n3)<<endl;co

3、ut<<"n4="<<n4<<"無4=<<Darts(n4)<<endl;10000000;#include"RandomNumber.h"16. cout<<"n5="<<n5<<",無5=<<Darts(n5)<<endl;17. return0;18. 19.20. 用隨機投點法計算無值21. doubleDarts(intn)22. 23. staticRandomNumberdart;2

4、4. intk=0;25.26. for(inti=1;i<=n;i+)27. 28. doublex=dart.fRandom();29. doubley=dart.fRandom();30. if(x*x+y*y)<=1)31. 32. k+;33. 34. 35.36. return4*k/double(n);37. 程序運行結果如圖:1=2.9n2=1000F7r2=3.14n3=1碘血兀3口.1加ii4=10000,714=3.16087TE=3.14M7G請按任意鍵繼續.2、計算定積分例:設f(x)=xA2,求一解::H3231)隨機投點法計算定積分基本思想是在矩形區域

5、上隨機均勻的投點實現。本算法的基本思想是在積分區間上隨機均勻的產生點,即在a,b上隨機均勻的取點,求出由這些點產生的函數值的算術平均值,再乘以區間寬度,即可解出定積分得近似解算法具體代碼如下:cppviewplaincopy1.隨機化算法用隨機投點法計算定積分2.#include"stdafx.h"3.4.#include<iostream>5.usingnamespacestd;6.7.doubleDarts(intn,doublea,doubleb);8.doublef(doublex);9.10.intmain()#include"RandomN

6、umber.h"12.intn1=100,n2=1000,n3=1000,n4=10000,n5=10000000;13.doublea=2.0,b=3.0;14.cout<<"n1="<<n1<<",r1="<<Darts(n1,a,b)<<endl;15.cout<<"n2="<<n2<<",r2="<<Darts(n2,a,b)<<endl;16.cout<<"

7、;n3="<<n3<<",r3="<<Darts(n3,a,b)<<endl;17.cout<<"n4="<<n4<<",r4="<<Darts(n4,a,b)<<endl;18.19.cout<<"n5="<<n5<<",r5="<<Darts(n5,a,b)<<endl;return0;11.20. 21.22. /

8、*23. *基本思想是在矩形區域內隨機均勻投點,求出由這些點24. *產生的函數值的算術平均值,再乘以區間寬度,即可得25. *出定積分的近似解26. */27. doubleDarts(intn,doublea,doubleb)28. 29. staticRandomNumberdart;30. doublesum=0.0;31. for(inti=0;i<n;i+)32. 33. doublex=(b-a)*dart.fRandom()+a;/產生a,b)之間的隨機數34. sum=sum+f(x);35. 36. return(b-a)*sum/n;37. 38.39. doubl

9、ef(doublex)40. 41. returnx*x;42. 程序運行結果如圖:nl100.1*1_19073>*2=G-29242n3=1000,«4=10080,1»4=&-3389£=100000065=6.332?請按任意健繼續2)概率法法計算定積分設f:a,bc4續函數(如圖2所示),則由曲線y=f(x)以及x軸和Jb直線x=a,x=b圍成的面積由定積分給出。根據幾何概型可知N.4H事件區域A的面枳區域口的面銀。假設向矩形區域隨機均勻的投鏢n次,落入陰影為K次,又設M為乂=2、x=b、y=c、y=d所圍成的矩形面積,s為定積s_k分面積

10、,則而一丁,所以s=k/n利。cpp算法具體代碼如下:viewplaincopy1.隨機化算法用概率法計算定積分2.#include"stdafx.h"3.#include"RandomNumber.h"4.#include<iostream>5.6.usingnamespacestd;7.doubleDarts(intn,doublea,doubleb,doubled);8.9.doublef(doublex);10.intmain()11.12.intn1=100,n2=1000,n3=1000,n4=10000,n5=10000000;

11、13.doublea=2.0,b=3.0;14.doubled=f(b);15.cout<<"n1="<<n1<<",r1="<<Darts(n1,a,b,d)<<endl;16.cout<<"n2="<<n2<<",r2="<<Darts(n2,a,b,d)<<endl;17.cout<<"n3="<<n3<<",r3="

12、;<<Darts(n3,a,b,d)<<endl;18.cout<<"n4="<<n4<<",r4="<<Darts(n4,a,b,d)<<endl;19.cout<<"n5="<<n5<<",r5="<<Darts(n5,a,b,d)<<endl;20.return0;21.22.23./*24.*f為積分函數,n為投鏢25.*總數,a,b為積分區間,c,d為函26.*數f的值域的端點值27.*/28.doubleDarts(intn,doublea,doubleb,doubled)29. 30. staticRandomNumberdart;31. intk=0;32. for(inti=0;i<n;i+)/產生a,b)之間的隨機數33. 34. doublex=(b-a)*dart.fRandom()+a;35. doubl

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論