蒙特 卡羅方法matlab,蒙特·卡羅方法中的數學之美,你一定不想錯過

原標題:蒙特·卡羅方法中的數學之美,你一定不想錯過

b1477cc684f5ea55522777953605ff7e.png

有方教育——我們致力于為中學生提供學界和業界前沿的學術科研教育內容,幫助學生參加海外科研項目,在提升申請競爭力的同時,獲得領跑優勢。

945dc7c8237c4c17345316c7170a116f.gif

一、概述

蒙特·卡羅方法(Monte Carlo method),也稱統計模擬方法,是二十世紀四十年代中期由于科學技術的發展和電子計算機的發明,而被提出的一種以概率統計理論為指導的一類非常重要的數值計算方法。是指使用隨機數(或更常見的偽隨機數)來解決很多計算問題的方法。與它對應的是確定性算法。蒙特·卡羅方法在金融工程學,宏觀經濟學,計算物理學(如粒子輸運計算、量子熱力學計算、空氣動力學計算)等領域應用廣泛。

它誕生于上個世紀40年代美國的”曼哈頓計劃”,名字來源于賭城蒙特卡羅,象征概率。

當所求解問題是某種隨機事件出現的概率,或者是某個隨機變量的期望值時,通過某種“實驗”的方法,以這種事件出現的頻率估計這一隨機事件的概率,或者得到這個隨機變量的某些數字特征,并將其作為問題的解。、

蒙特卡羅方法的解題過程可以歸結為三個主要步驟:構造或描述概率過程;實現從已知概率分布抽樣;建立各種估計量。

蒙特卡羅方法解題過程的三個主要步驟:

(1)構造或描述概率過程

對于本身就具有隨機性質的問題,如粒子輸運問題,主要是正確描述和模擬這個概率過 程,對于本來不是隨機性質的確定性問題,比如計算定積分,就必須事先構造一個人為的概率過程,它的某些參量正好是所要求問題的解。即要將不具有隨機性質的問題轉化為隨機性質的問題。

(2)實現從已知概率分布抽樣

構造了概率模型以后,由于各種概率模型都可以看作是由各種各樣的概率分布構成的,因此產生已知概率分布的隨機變量(或隨機向量),就成為實現蒙特卡羅方法模擬實驗的基本手段,這也是蒙特卡羅方法被稱為隨機抽樣的原因。最簡單、最基本、最重要的一個概率分布是(0,1)上的均勻分布(或稱矩形分布)。隨機數就是具有這種均勻分布的隨機變量。隨機數序列就是具有這種分布的總體的一個簡單子樣,也就是一個具有這種分布的相互獨立的隨機變數序列。產生隨機數的問題,就是從這個分布的抽樣問題。在計算機上,可以用物理方法產生隨機數,但價格昂貴,不能重復,使用不便。另一種方法是用數學遞推公式產生。這樣產生的序列,與真正的隨機數序列不同,所以稱為偽隨機數,或偽隨機數序列。不過,經過多種統計檢驗表明,它與真正的隨機數,或隨機數序列具有相近的性質,因此可把它作為真正的隨機數來使用。由已知分布隨機抽樣有各種方法,與從(0,1)上均勻分布抽樣不同,這些方法都是借助于隨機序列來實現的,也就是說,都是以產生隨機數為前提的。由此可見,隨機數是我們實現蒙特卡羅模擬的基本工具。

(3)建立各種估計量

一般說來,構造了概率模型并能從中抽樣后,即實現模擬實驗后,我們就要確定一個隨機變量,作為所要求的問題的解,我們稱它為無偏估計。建立各種估計量,相當于對模擬實驗的結果進行考察和登記,從中得到問題的解。

數學應用:

通常蒙特·卡羅方法通過構造符合一定規則的隨機數來解決數學上的各種問題。對于那些由于計算過于復雜而難以得到解析解或者根本沒有解析解的問題,蒙特·卡羅方法是一種有效的求出數值解的方法。一般蒙特·卡羅方法在數學中最常見的應用就是蒙特·卡羅積分。

從理論上來說,蒙特卡羅方法需要大量的實驗。實驗次數越多,所得到的結果才越精確。

計算機技術的發展,使得蒙特卡羅方法在最近10年得到快速的普及。現代的蒙特卡羅方法,已經不必親自動手做實驗,而是借助計算機的高速運轉能力,使得原本費時費力的實驗過程,變成了快速和輕而易舉的事情。它不但用于解決許多復雜的科學方面的問題,也被項目管理人員經常使用。

借助計算機技術,蒙特卡羅方法實現了兩大優點:

一是簡單,省卻了繁復的數學推導和演算過程,使得一般人也能夠理解和掌握

二是快速。簡單和快速,是蒙特卡羅方法在現代項目管理中獲得應用的技術基礎。

蒙特卡羅方法有很強的適應性,問題的幾何形狀的復雜性對它的影響不大。該方法的收斂性是指概率意義下的收斂,因此問題維數的增加不會影響它的收斂速度,而且存貯單元也很省,這些是用該方法處理大型復雜問題時的優勢。因此,隨著電子計算機的發展和科學技術問題的日趨復雜,蒙特卡羅方法的應用也越來越廣泛。它不僅較好地解決了多重積分計算、微分方程求解、積分方程求解、特征值計算和非線性方程組求解等高難度和復雜的數學計算問題,而且在統計物理、核物理、真空技術、系統科學 、信息科學、公用事業、地質、醫學,可靠性及計算機科學等廣泛的領域都得到成功的應用。

接下來列舉幾個蒙特·卡羅方法的應用實例。

二、π的計算

第一個例子是,如何用蒙特卡羅方法計算圓周率π。

正方形內部有一個相切的圓,它們的面積之比是π/4。

dadd87aba348afa5759d479acf12b55c.png

現在,在這個正方形內部,隨機產生10000個點(即10000個坐標對 (x, y)),計算它們與中心點的距離,從而判斷是否落在圓的內部。

ed950203fb611405840189c9fcd100f9.png

如果這些點均勻分布,那么圓內的點應該占到所有點的 π/4,因此將這個比值乘以4,就是π的值。通過R語言腳本隨機模擬30000個點,π的估算值與真實值相差0.07%。

一直到公元20世紀初期,盡管實驗次數數以千計,利用蒙特卡羅方法所得到的圓周率π值,還是達不到公元5世紀祖沖之的推算精度。這可能是傳統蒙特卡羅方法長期得不到推廣的主要原因。

三、積分的計算

上面的方法加以推廣,就可以計算任意一個積分的值。

63e42f31af1356914cd58a1bcf30a86d.png

比如,計算函數 y = x2 在 [0, 1] 區間的積分,就是求出下圖紅色部分的面積。

2ac2b43a77ef3dc957c078bec4926d04.png

這個函數在 (1,1) 點的取值為1,所以整個紅色區域在一個面積為1的正方形里面。在該正方形內部,產生大量隨機點,可以計算出有多少點落在紅色區域(判斷條件 y < x2)。這個比重就是所要求的積分值。

用Matlab模擬100萬個隨機點,結果為0.3328。

四、交通堵塞

蒙特卡羅方法不僅可以用于計算,還可以用于模擬系統內部的隨機運動。下面的例子模擬單車道的交通堵塞。

根據 Nagel-Schreckenberg 模型,車輛的運動滿足以下規則。

當前速度是 v 。

如果前面沒車,它在下一秒的速度會提高到 v + 1 ,直到達到規定的最高限速。

如果前面有車,距離為d,且 d < v,那么它在下一秒的速度會降低到 d – 1 。

此外,司機還會以概率 p 隨機減速, 將下一秒的速度降低到 v – 1 。

在一條直線上,隨機產生100個點,代表道路上的100輛車,另取概率 p 為 0.3 。

da2d438485da679b246a925890bc83ad.png

上圖中,橫軸代表距離(從左到右),縱軸代表時間(從上到下),因此每一行就表示下一秒的道路情況。

可以看到,該模型會隨機產生交通擁堵(圖形上黑色聚集的部分)。這就證明了,單車道即使沒有任何原因,也會產生交通堵塞。

五、產品厚度

某產品由八個零件堆疊組成。也就是說,這八個零件的厚度總和,等于該產品的厚度。

17221e7ee35e313c7df56195c957ad53.png

已知該產品的厚度,必須控制在27mm以內,但是每個零件有一定的概率,厚度會超出誤差。請問有多大的概率,產品的厚度會超出27mm?

a089c23e1f10a7aa2465abb6a5f411f1.png

取100000個隨機樣本,每個樣本有8個值,對應8個零件各自的厚度。計算發現,產品的合格率為99.9979%,即百萬分之21的概率,厚度會超出27mm。

六、證券市場

證券市場有時交易活躍,有時交易冷清。下面是你對市場的預測。

如果交易冷清,你會以平均價11元,賣出5萬股。

如果交易活躍,你會以平均價8元,賣出10萬股。

如果交易溫和,你會以平均價10元,賣出7.5萬股。

已知你的成本在每股5.5元到7.5元之間,平均是6.5元。請問接下來的交易,你的凈利潤會是多少?

取1000個隨機樣本,每個樣本有兩個數值:一個是證券的成本(5.5元到7.5元之間的均勻分布),另一個是當前市場狀態(冷清、活躍、溫和,各有三分之一可能)。

e94d23779dbd1008c98d679e83e6e6a7.png

模擬計算得到,平均凈利潤為92, 427美元。

資料來源:妙思數學、百度百科

42a53a3a76f803b5fc16f5336b343a34.png

有方教育——我們的導師來自耶魯大學、麻省理工學院、斯坦福大學等世界頂尖名校,致力為讓中學生提供來自學界業界前沿的學術科研教育內容,旨在讓學生在親身實踐的過程中深入淺出地理解前沿科技。

項目主題——我們聚集頂尖學府導師資源,補足中美教育差距,力求為中國學生搭建連接世界科技的平臺。我們引領學生在世界前沿課題研究中參與科研教育,全面提升學生的自主思考、觀察分析、邏輯思維能力。我們為學生提供參加海外科研項目,幫助學生斬獲國際知名學術驚呆大獎、發表英語敘述論文,讓學生在提升申請競爭力的同事,獲得領跑優勢

責任編輯:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453416.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453416.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453416.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【 CDN 最佳實踐】CDN 命中率優化思路

CDN 在靜態資源的加速場景中是將靜態資源緩存在距離客戶端較近的CDN 節點上&#xff0c;然后客戶端訪問該資源即可通過較短的鏈路直接從緩存中獲取資源&#xff0c;而避免再通過較長的鏈路回源獲取靜態資源。因此 CDN的緩存命中率的高低直接影響客戶體驗&#xff0c;而保證較高…

職場新人的入門法則:少想、多做、立即執行!

對于剛進入職場的新人來說&#xff0c;要想在工作中快速獲得成長&#xff0c;唯一辦法就是&#xff1a;“少想&#xff0c;多做&#xff0c;立即執行&#xff01;”。 少想不等于盲目&#xff0c;在保證工作思路絕對清晰的同時&#xff0c;執行力越高&#xff0c;執行速度越快…

Python基礎-time and datetime

一、在Python中&#xff0c;通常有這幾種方式來表示時間&#xff1a; 時間戳格式化的時間字符串元組&#xff08;struct_time&#xff09;共九個元素。由于Python的time模塊實現主要調用C庫&#xff0c;所以各個平臺可能有所不同。1.時間戳&#xff08;timestamp&#xff09;的…

實際應用中帶頭節點的線性鏈表

/*帶頭節點的線性鏈表類型*/ typedef char ElemType//結點類型 typedef struct LNode {char data;struct LNode *next; }*Link,*Position;//鏈表類型 typedef struct {Link head,tail;int len; }LinkList;/**/ /*一些在其他函數定義中會調用的函數*/ /**//*---compare---比較兩…

matlab中歐姆如何表示,在excel中歐姆符號怎么打

在excel中歐姆符號怎么打&#xff0c;相信對于好多熟練用excel的朋友來說&#xff0c;是很簡單不過的&#xff0c;但是對于有些初學者來說&#xff0c;就是菜鳥啦&#xff0c;就有點懵懵懂懂的感覺了&#xff0c;畢竟剛接觸的東西還沒用過嘛。但是&#xff0c;沒關系今天筆者就…

原生js系列之DOM工廠模式

寫在前面 如今&#xff0c;在項目中使用React、Vue等框架作為技術棧已成為一種常態&#xff0c;在享受帶來便利性的同時&#xff0c;也許我們漸漸地遺忘原生js的寫法。 現在&#xff0c;是時候回歸本源&#xff0c;響應原始的召喚了。本文將一步一步帶領大家封裝一套屬于自己的…

武術與軟件設計 - 簡單即是最好

偶然間在公車上看見一個講中國功夫的特輯&#xff0c;說道香港武打片的發展歷程&#xff0c;當然就不得不提起李小龍先生&#xff0c;我們知道他截拳道的威力&#xff0c;這時候我記得在看李小龍傳奇時他所說的一些話&#xff0c;當他和美國一個高手比武后他輸了&#xff0c;最…

matlab的概述,Matlab概述

MATLAB(矩陣實驗室)是數字計算&#xff0c;可視化和編程的第四代高級編程語言和交互式環境。MATLAB是由MathWorks開發的。它允許矩陣操縱&#xff0c;繪制功能和數據; 實現算法; 創建用戶界面; 與其他語言編寫的程序(包括C語言&#xff0c;C&#xff0c;Java和FORTRAN)進行交互…

形參和實參

形參&#xff1a;全稱為“形式參數”是在定義函數名和函數體的時候使用的參數&#xff0c;目的是用來接收調用該函數時傳遞的參數。形參的作用是實現主調函數與被調函數之間的聯系&#xff0c;通常將函數所處理的數據&#xff0c;影響函數功能的因素或者函數處理的結果作為形參…

sizeof和strlen的區別

strlen——get the length of a string.size_t strlen(const char *string);Each ofthese functions returns the number of characters instring, notincluding the terminating null character.//函數返回string里的字符數&#xff0c;不包括終止字符\0sizeofThe sizeof keyw…

位置參數及操作符號

特殊字符對應的處理參數&#xff1a; 參數說明$0當前執行的腳本文件名&#xff0c;若全路徑執行&#xff0c;則顯示腳本路徑$n當前執行腳本的第n個參數值&#xff0c;若n>9&#xff0c;則需寫成${10}$#當前傳參總個數$$腳本運行的當前進程ID號,用例&#xff1a;當一個進程重…

python變量命名可以有特殊符號嗎,和孩子一起學習python之變量命名規則

下面是關于變量名(也稱為標識符)的一些規則必須以一個字母或一個下劃線字符開頭。后面可以使用一個字母、數字或下劃線字符的序列&#xff0c;長度不限。字母可以是大寫或小寫&#xff0c;大小寫是不同的。也就是說&#xff0c;Ax不同于aX。數字可以是從0到9(包括0到9)的任意數…

C語言中*和

(一) 在定義時&#xff0c;* 是一個標識符&#xff0c;聲明該變量是一個指針&#xff0c;比如說int *p; 那p就是一個指向int型的指針&#xff1b; 在調用時&#xff0c; &#xff08;1&#xff09;*p是指指針p指向的那個變量&#xff0c;比如說之前有int a5&#xff1b;int …

IT人的好習慣和不良習慣總結

好習慣&#xff1a; 細節一&#xff1a;在電腦旁放上幾盆植物&#xff0c;傳說仙人掌可以有效地吸收輻射&#xff0c;但是會扎到人&#xff0c;而且有沒效果也沒科學根據&#xff0c;不推薦&#xff1b;其實只要是綠色植物就可以&#xff0c;植物可以讓你多點氧氣&#xff0c;保…

【BZOJ 3326】[Scoi2013]數數 數位dp+矩陣乘法優化

挺好的數位dp……先說一下我個人的做法:經過觀察,發現這題按照以往的思路從后往前遞增,不怎么好推,然后我就大膽猜想,從前往后推,發現很好推啊,維護四個變量,從開始位置到現在有了i個數 f[i]:所有數的所有未包含最后一位的子串的和 s[i]:所有數的所有后綴子串的和 c[i]:所有數的…

zookeeper偽集群(在一臺機器上集群)

2019獨角獸企業重金招聘Python工程師標準>>> 創建一下的目錄結構zookeeper-3.4.10是你下載的zookeeper的解壓包 /zookeeper_cluster----/server_one|---/data|myid(文件)|---/datalog|---/zookeeper-3.4.10|---/bin|---/conf|---zoo.cfg|---..... |---/....----/ser…

mongo的php查詢,使用PHP進行簡單查詢的mongo查詢速度慢

我有一個非常簡單的使用PHP執行的Mongo Query。我相信查詢執行得非常快&#xff0c;因為當我在終端上運行它時&#xff0c;它幾乎可以立即完成&#xff0c;并且當我解釋()時&#xff0c;它表明它正在1-2ms內執行。但是&#xff0c;當我去迭代游標并將內容放入數組時&#xff0c…

順序存儲結構和鏈式存儲結構的優缺點

&#xff08;一&#xff09;順序存儲結構和鏈式存儲結構的優缺點比較&#xff0c;以及使用情況。 1 優缺點 ① 順序存儲時&#xff0c;相鄰數據元素的存放地址也相鄰&#xff08;邏輯與物理統一&#xff09;&#xff1b;要求內存中可用存儲單元的地址必須是連續的。 優點&…

大話軟件開發與開車的共同點

昨天路上開車&#xff0c;突然有了這個想法&#xff0c;做軟件開發與開車&#xff0c;竟然有這么多的相似之處&#xff0c;大致整理了一下思路&#xff0c;和大家分享一下。 一、目的 開車的目的有3個&#xff0c;第一是為了讓自己到底目的地(上班族)&#xff0c;第二是為了兜…

Spring核心接口之Ordered

一、Ordered接口介紹Spring中提供了一個Ordered接口。從單詞意思就知道Ordered接口的作用就是用來排序的。Spring框架是一個大量使用策略設計模式的框架&#xff0c;這意味著有很多相同接口的實現類&#xff0c;那么必定會有優先級的問題。于是Spring就提供了Ordered這個接口&a…