李洪毅,賀 陵,周盛康
(吉首大學(xué)數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,湖南 吉首 416000)
當(dāng)前,在工程、系統(tǒng)科學(xué)、高新技術(shù)等諸多領(lǐng)域的數(shù)值計(jì)算都離不開統(tǒng)計(jì)軟件,常用的統(tǒng)計(jì)軟件有R、Matlab、SAS等。R軟件是一個(gè)開源、免費(fèi)的統(tǒng)計(jì)軟件,具有強(qiáng)大的統(tǒng)計(jì)分析和數(shù)值計(jì)算功能[1-3]。以圓周率的近似計(jì)算為例,詳細(xì)介紹了R軟件在數(shù)值計(jì)算中的廣泛應(yīng)用。
圖1 Buffon投針實(shí)驗(yàn)的幾何概型
基于R軟件在計(jì)算機(jī)上實(shí)現(xiàn)Buffon投針實(shí)驗(yàn)并近似計(jì)算圓周率π的步驟為:
第一,產(chǎn)生隨機(jī)數(shù)。首先產(chǎn)生n個(gè)相互獨(dú)立的隨機(jī)變量θ,x的抽樣序列θi,xi,i=1,2,…,n,其中θi~U(0,θ),xi~U(0,a/2)。
基于R軟件將上述步驟編寫模擬程序Buffon.r如下:
Buffon<-function(n, l=0.8, a=1){
k<-0; i<-1; pai=rep(0,n); set.seed(666)
while(i<=n){
theta_i<-runif(1, 0, pi); x_i<-runif(1, 0, a/2)
if(x_i<=l/2*sin(theta_i))
k<-k+1
pai[i]=2*l*i/(k*a); i=i+1}
return(pai)}
圖2 圓周率π的估計(jì)值隨實(shí)驗(yàn)次數(shù)n(≤10 000)變化的動(dòng)態(tài)圖
圖3 基于buffon.needle函數(shù)Buffon投針實(shí)驗(yàn)的動(dòng)態(tài)模擬結(jié)果(n=50)
圖4 基于概率分析計(jì)算圓周率的幾何概型
基于上述結(jié)果計(jì)算圓周率π的近似值,具體步驟為:
第一,產(chǎn)生隨機(jī)數(shù)。首先產(chǎn)生n個(gè)相互獨(dú)立的隨機(jī)變量X與Y,X與Y的抽樣序列xi,yi,i=1, 2,...,n,其中xi~U(0,1),yi~U(0,1)。
基于R軟件將上述步驟編寫模擬程序PA.r如下:
PA<-function(n){
k<-0; i<-1; pai=rep(0,n); set.seed(666)
while(i<=n){
x_i<-runif(1);y_i<-runif(1)
if(x_i^2+y_i^2<1)
k<-k+1
pai[i]=4*k/i; i=i+1}
return(pai)}
圖5 圓周率π的估計(jì)值隨實(shí)驗(yàn)次數(shù)n(≤10 000)變化的動(dòng)態(tài)圖
基于上述結(jié)果計(jì)算圓周率π的近似值,具體步驟為:
第一,產(chǎn)生隨機(jī)數(shù)。首先產(chǎn)生n個(gè)相互獨(dú)立的隨機(jī)變量X,X的抽樣序列xi,i=1,2,…,n,其中xi~U(0,1)。
基于R軟件將上述步驟編寫模擬程序MC.r如下:
MC <-function(n){
i <-1; pai=rep(0,n); set.seed(66)
x <-runif(n)
for(i in 1:n)
pai[i]=4*sum(sqrt(1-x[1:i]^2))/i
return(pai)}
圖6 圓周率π的估計(jì)值隨實(shí)驗(yàn)次數(shù)n(≤10 000)變化的動(dòng)態(tài)圖
以圓周率的近似計(jì)算為例,詳細(xì)介紹了R軟件在數(shù)值計(jì)算和數(shù)值模擬中的具體應(yīng)用,由文中實(shí)例可以發(fā)現(xiàn):R軟件能夠非常高效、便捷地解決數(shù)值計(jì)算和數(shù)值模擬中的近似計(jì)算問題。教學(xué)實(shí)踐和研究實(shí)踐證明,R軟件可以為統(tǒng)計(jì)學(xué)、數(shù)學(xué)專業(yè)課程教學(xué)和科學(xué)研究提供有力支撐,一方面可以加深學(xué)生對(duì)基本概念和算法的理解,更好地掌握數(shù)學(xué)理論方法,另一方面還可以通過R軟件優(yōu)秀的圖形功能加強(qiáng)計(jì)算結(jié)果的展示,使學(xué)生加深對(duì)數(shù)學(xué)理論方法的理解,更好地處理實(shí)際問題,激發(fā)學(xué)生學(xué)習(xí)興趣和動(dòng)力,為學(xué)生更好地應(yīng)用專業(yè)知識(shí)處理實(shí)際問題奠定堅(jiān)實(shí)基礎(chǔ),對(duì)其今后的工作和學(xué)習(xí)產(chǎn)生積極作用。