用蒙特卡洛方法計算定積分

創新互聯專注于企業營銷型網站建設、網站重做改版、肇東網站定制設計、自適應品牌網站建設、H5建站、商城開發、集團公司官網建設、外貿網站建設、高端網站制作、響應式網頁設計等建站業務,價格優惠性價比高,為肇東等各大城市提供網站開發制作服務。
計算定積分
利用蒙特卡洛計算方法,核心步驟是求取隨機的 g(X1),………,g(Xn),n∈[a,b],由數學期望和大數定理可以近似計算定積分,公式為
原函數:
導函數:
計算導函數在[10,15]上的定積分;
Python
用蒙特卡洛方法計算的定積分:
直接用原函數計算的定積分:
偏差程度為:
需要加載一下math庫,math.pi是π,r是球半徑。
體積:
4/3?*?math.pi?*?r**3
表面積:
4?*?math.pi?*?r**2
1、print()函數:打印字符串;
2、raw_input()函數:從用戶鍵盤捕獲字符;
3、len()函數:計算字符長度;
4、format()函數:實現格式化輸出;
5、type()函數:查詢對象的類型;
6、int()函數、float()函數、str()函數等:類型的轉化函數;
7、id()函數:獲取對象的內存地址;
8、help()函數:Python的幫助函數;
9、s.islower()函數:判斷字符小寫;
10、s.sppace()函數:判斷是否為空格;
11、str.replace()函數:替換字符;
12、import()函數:引進庫;
13、math.sin()函數:sin()函數;
14、math.pow()函數:計算次方函數;
15、os.getcwd()函數:獲取當前工作目錄;
16、listdir()函數:顯示當前目錄下的文件;
17、time.sleep()函數:停止一段時間;
18、random.randint()函數:產生隨機數;
19、range()函數:返回一個列表,打印從1到100;
20、file.read()函數:讀取文件返回字符串;
21、file.readlines()函數:讀取文件返回列表;
22、file.readline()函數:讀取一行文件并返回字符串;
23、split()函數:用什么來間隔字符串;
24、isalnum()函數:判斷是否為有效數字或字符;
25、isalpha()函數:判斷是否全為字符;
26、isdigit()函數:判斷是否全為數字;
27、 lower()函數:將數據改成小寫;
28、upper()函數:將數據改成大寫;
29、startswith(s)函數:判斷字符串是否以s開始的;
30、endwith(s)函數:判斷字符串是否以s結尾的;
31、file.write()函數:寫入函數;
32、file.writeline()函數:寫入文件;
33、abs()函數:得到某數的絕對值;
34、file.sort()函數:對書數據排序;
35、tuple()函數:創建一個元組;
36、find()函數:查找 返回的是索引;
37、dict()函數:創建字典;
38、clear()函數:清楚字典中的所有項;
39、copy()函數:復制一個字典,會修改所有的字典;
40、 get()函數:查詢字典中的元素。
…………
對于氣象繪圖來講,第一步是對數據的處理,通過各類公式,或者統計方法將原始數據處理為目標數據。
按照氣象統計課程的內容,我給出了一些常用到的統計方法的對應函數:
在計算氣候態,區域平均時均要使用到求均值函數,對應NCL中的dim_average函數,在python中通常使用np.mean()函數
numpy.mean(a, axis, dtype)
假設a為[time,lat,lon]的數據,那么
需要特別注意的是,氣象數據中常有缺測,在NCL中,使用求均值函數會自動略過,而在python中,當任意一數與缺測(np.nan)計算的結果均為np.nan,比如求[1,2,3,4,np.nan]的平均值,結果為np.nan
因此,當數據存在缺測數據時,通常使用np.nanmean()函數,用法同上,此時[1,2,3,4,np.nan]的平均值為(1+2+3+4)/4 = 2.5
同樣的,求某數組最大最小值時也有np.nanmax(), np.nanmin()函數來補充np.max(), np.min()的不足。
其他很多np的計算函數也可以通過在前邊加‘nan’來使用。
另外,
也可以直接將a中缺失值全部填充為0。
np.std(a, axis, dtype)
用法同np.mean()
在NCL中有直接求數據標準化的函數dim_standardize()
其實也就是一行的事,根據需要指定維度即可。
皮爾遜相關系數:
相關可以說是氣象科研中最常用的方法之一了,numpy函數中的np.corrcoef(x, y)就可以實現相關計算。但是在這里我推薦scipy.stats中的函數來計算相關系數:
這個函數缺點和有點都很明顯,優點是可以直接返回相關系數R及其P值,這避免了我們進一步計算置信度。而缺點則是該函數只支持兩個一維數組的計算,也就是說當我們需要計算一個場和一個序列的相關時,我們需要循環來實現。
其中a[time,lat,lon],b[time]
(NCL中為regcoef()函數)
同樣推薦Scipy庫中的stats.linregress(x,y)函數:
slop: 回歸斜率
intercept:回歸截距
r_value: 相關系數
p_value: P值
std_err: 估計標準誤差
直接可以輸出P值,同樣省去了做置信度檢驗的過程,遺憾的是仍需同相關系數一樣循環計算。
球諧函數在圖形學光照計算等領域有著重要應用,因為目前在實際工作中接觸較少,所以對其的理解僅僅停留在表面,本著越是基礎的東西,其重要性越高的想法,特此開篇文章對其背后的數學理論進行拆解,拆解過程參考了大量其他同學的工作,相應鏈接在文末的參考文獻中有列出,引用過程中如有表述不清晰的內容,可以通過原文輔助閱讀。
調和函數指的是一種特殊的二階連續可導函數(簡稱C2,在某個定義域存在二階導數,且二階導數連續),數學符號用 表達,其中 是 (表示n維實數域)的一個開子集(相當于一維數據空間中的開區間),其特殊在于需要滿足拉普拉斯方程(下面有介紹),用(笛卡爾坐標系下)數學表達式來描述的話,就是對于任意 ,需要滿足如下的二階偏微分方程:
這里來回顧一下微分方程的相關知識,單個變量下,也就是一元變量情況下,函數與函數各階導數組成的微分方程叫做常微分方程:
多元函數而言,函數以及函數對各個自變量的各階偏導數組成的微分方程叫做偏微分方程:
這個公式也經常以如下的形式出現( 稱為拉普拉斯算子, 稱為向量微分算子,也就是nabla算子):
其中 叫做拉普拉斯算子,光看定義太抽象,我們來舉個例子吧,下面兩個函數都是二元的調和函數:
拉普拉斯方程也被稱為調和方程、位勢方程,這是一種偏微分方程,因為其可以用勢函數的形式來描述電磁場、引力場、流場(統稱為保守場或者有勢場)的性質而被廣泛應用。
笛卡爾坐標系下的表述形式前面已經寫過了,下面給出球面坐標系下的拉普拉斯方程表述形式:
這個方程也常用如下的簡化形式來代替:
或者
其中div指的是向量場(指的是空間中的每一點都有一個對應的帶長度的向量)的散度(divergence),grad表示的是標量場的梯度(gradient)。
散度是向量分析中常用的向量算子,用于實現向量場到標量場的轉換映射,也就是說,經過散度算子處理后,得到的是一個標量場(每一點有一個不帶方向的數值)。以靜電場為例,空間中的電場強度是一個向量場,電場線正出負歸,在正電荷附近,對應的散度為正值,且電荷帶電量越大,散度越大,負電荷附近則反之,其散度為負值,且電荷帶電量越大,散度絕對值越大。更為通用的概括是,散度可以看成是向量場在某一點的通量密度,當散度大于0的時候,就表示該點有流量留出,此時這一點可以被稱為源點,當散度小于0的時候,表示此點有流量流入,此時此點被稱為匯點,散度為0,表示該點無流入也無流出,如果整個向量場的散度都是0,那么這個向量場可以稱為無源場。
對于某個向量場 而言,其散度可以通過如下公式求得:
梯度是對多元函數的導數的一種描述,單元函數(只有一個自變量)的導數是標量值函數,而多元(多個自變量)函數的導數則是一個向量值函數,這里多元函數的導數,我們也稱為多元函數的梯度,多元函數f在點P處的梯度指的是以f在P處的偏微分作為分量的向量,如一個三維空間函數 ,其梯度函數可以用如下的形式來表述:
單元函數的導數對應的是函數在某一點切線的斜率,對應到梯度上,如果多元函數在某點P的梯度不為0的話,那么計算出來的梯度方向指的是這個函數在P點處增長最快的方向(超平面的切線),而梯度的長度則是函數在此點處的增長率(超平面的斜率)。
舉個例子,如果某個房間內的溫度用一個函數來表示,那么這個函數在三維空間中的梯度就對應于房間中某點處溫度上升最快的方向,而其長度則對應于溫度增長率。
可以看到,一個多元函數的標量場,經過梯度轉化后,得到的是一個向量場。
從調和函數的定義我們可以看到,所謂的調和函數,實際上就是拉普拉斯方程的解,而我們日常所說的球諧函數(Spherical Harmonics Function)實際上就是拉普拉斯方程在球坐標系空間下的解。
拉普拉斯方程是一個偏微分方程,而解偏微分方程常用的策略是分離變量法,即將偏微分方程分解成幾個常微分方程進行求解,下面我們通過將半徑跟角度進行分離來進行求解。
設 ,將之代入前面的拉普拉斯方程,可以得到:
上面公式乘上 之后可以得到:
對于上面公式中后面的等式,我們繼續使用分離變量法,令(這里是假設Y具有可以分離的形式,當然這個假設不是必然成立的,只是為了簡化計算而給出的,只有一些特殊的函數才具有這種假設的可分離的形式) ,代入前面公式可以得到:
簡化后,令左右兩邊均等于 ,可以得到:
一個先驗知識是m是一個復數常量(怎么得到的?),且由于 是一個周期函數,其周期可以整除 ,因此m就會是一個整數,而 則是復數指數 的線性組合,Y的常規解出現在極點,也就是 的時候,而在上面的第二個方程中求解 時的常規狀態出現在Sturm-Liouville problem的邊界點上,在這個邊界點中會將 ,其中l是非負整數,且 ,此外,將上面公式中的 用t來替代,就能夠得到勒讓德公式(Legendre equation),而勒讓德公式的解就是伴隨勒讓德多項式 的倍數。
對于滿足前面假設的Y,對于給定的 ,我們總共有 個獨立解,這些角度上的解可以表示為三角函數的乘積,這里可以用復數指數與伴隨勒讓德多項式來表示:
其中這個解需要滿足:
上述公式中的 就被稱為一個m階(order)l度(degree)的球諧函數, 就是一個伴隨勒讓德多項式,N是一個歸一化的常量, 則代表著球上的經緯度
所有的球諧函數組成了一組正交基,所謂的正交基指的是,兩兩基函數相乘的積分只有當兩個基函數是同一個基函數的情況下結果為1,否則為0。
上圖給出了不同的SH基函數的幾何形狀展示,這個圖是通過以方向為自變量,到球心的距離作為因變量繪制的。
而其他函數都可以通過使用不同系數來對SH基函數進行線性組合來實現近似模擬,這個過程有點像是周期函數的傅里葉展開。
未完待續……
[1] Rendering-球諧光照推導及應用
[2] 調和函數
[3] 拉普拉斯方程
[4] 散度
[5] 梯度
[6] Spherical harmonics
[7]. Laplace's equation
向量球諧函數(Vector spherical harmonics)是應用于球坐標系的拉普拉斯方程式的向量解,是球諧函數的向量衍伸形式。在必須計算向量場的電動力學等領域中被廣泛應用。
定義
在球坐標系下,拉普拉斯算符作用在一三維向量場上可以寫為
利用分離變數法可以將此一方程式的解分解為一系列本征函數的線性組合
其中的徑向解與標量球諧函數相同,而為一與角度相關的向量解,也就是向量球諧函數。
向量球諧函數依用途有很多定義方式。這邊我們依照 Barrera 等人的定義,以對球諧函數Y?m(θ, φ)為基礎,將三個向量球諧函數表示為
這邊是對應球座標 (r, θ, φ) 的向量,而則為其單位向量。
主要特性
依照上述 Barrera 的定義,向量球諧函數有以下特性:
對稱性
與球諧函數相同,向量球諧函數有對稱性
星號 * 代表共軛函數。
正交性
三種向量球諧函數彼此兩兩正交
另外同種類的球諧函數的內積為:
標量場的梯度
對一個標量場,若其多極展開可表示為:
則其梯度可以向量球諧函數表示為:
散度
三種向量球諧函數之散度分別為:
其中為球諧函數之徑向分布,為球諧函數。
分享文章:球諧函數計算python,球諧函數公式
當前網址:http://www.yijiale78.com/article28/dschdjp.html
成都網站建設公司_創新互聯,為您提供全網營銷推廣、、自適應網站、關鍵詞優化、網站策劃、云服務器
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯