欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

蒙特卡羅模擬 - python實現(xiàn)

系統(tǒng) 1631 0

基本原理

蒙特卡羅方法通過抓住事物運動的幾何數(shù)量和幾何特征,利用數(shù)字方法來加以模擬,即進(jìn)行一種數(shù)字模擬實驗。它是以一個概率模型為基礎(chǔ),按照這個模型所描繪的過程,通過模擬實驗的結(jié)果,作為問題的近似解。

主要步驟如下:
1.構(gòu)造或描述概率過程
2.實現(xiàn)從已知概率分布抽樣
3.建立各種估計量

示例一:π值的計算

            
              
                import
              
               numpy 
              
                as
              
               np

              
                import
              
               pandas 
              
                as
              
               pd

              
                import
              
               matplotlib
              
                .
              
              pyplot 
              
                as
              
               plt

              
                %
              
               matplotlib inline


              
                # π的計算
              
              

n
              
                =
              
              
                30000
              
              

r
              
                =
              
              
                1.0
              
              
                #半徑
              
              
a
              
                ,
              
              b
              
                =
              
              
                (
              
              
                0.0
              
              
                ,
              
              
                0.0
              
              
                )
              
              
                #圓心
              
              
xmin
              
                ,
              
              xmax
              
                =
              
              a
              
                -
              
              r
              
                ,
              
              a
              
                +
              
              r
ymin
              
                ,
              
              ymax
              
                =
              
              b
              
                -
              
              r
              
                ,
              
              b
              
                +
              
              r

x
              
                =
              
              np
              
                .
              
              random
              
                .
              
              uniform
              
                (
              
              xmin
              
                ,
              
              xmax
              
                ,
              
              n
              
                )
              
              
y
              
                =
              
              np
              
                .
              
              random
              
                .
              
              uniform
              
                (
              
              ymin
              
                ,
              
              ymax
              
                ,
              
              n
              
                )
              
              

fig
              
                =
              
              plt
              
                .
              
              figure
              
                (
              
              figsize
              
                =
              
              
                (
              
              
                6
              
              
                ,
              
              
                6
              
              
                )
              
              
                )
              
              
axes
              
                =
              
              fig
              
                .
              
              add_subplot
              
                (
              
              
                1
              
              
                ,
              
              
                1
              
              
                ,
              
              
                1
              
              
                )
              
              
plt
              
                .
              
              plot
              
                (
              
              x
              
                ,
              
              y
              
                ,
              
              
                'ro'
              
              
                ,
              
              markersize
              
                =
              
              
                1
              
              
                )
              
              
plt
              
                .
              
              axis
              
                (
              
              
                'equal'
              
              
                )
              
              

d
              
                =
              
              np
              
                .
              
              sqrt
              
                (
              
              
                (
              
              x
              
                -
              
              a
              
                )
              
              
                **
              
              
                2
              
              
                +
              
              
                (
              
              y
              
                -
              
              b
              
                )
              
              
                **
              
              
                2
              
              
                )
              
              
res
              
                =
              
              
                sum
              
              
                (
              
              np
              
                .
              
              where
              
                (
              
              d
              
                <
              
              r
              
                ,
              
              
                1
              
              
                ,
              
              
                0
              
              
                )
              
              
                )
              
              
                print
              
              
                (
              
              
                '落在圓內(nèi)的點有%i個'
              
              
                %
              
               res
              
                )
              
              

pi 
              
                =
              
              
                4
              
              
                *
              
              res
              
                /
              
              n

              
                print
              
              
                (
              
              
                "π的近似值為:"
              
              
                ,
              
              pi
              
                )
              
              
                #繪制圓形
              
              
                from
              
               matplotlib
              
                .
              
              patches 
              
                import
              
               Circle
circle
              
                =
              
              Circle
              
                (
              
              xy
              
                =
              
              
                (
              
              a
              
                ,
              
              b
              
                )
              
              
                ,
              
              radius
              
                =
              
              r
              
                ,
              
              alpha
              
                =
              
              
                0.5
              
              
                ,
              
              color
              
                =
              
              
                'r'
              
              
                )
              
              
axes
              
                .
              
              add_patch
              
                (
              
              circle
              
                )
              
              
plt
              
                .
              
              grid
              
                (
              
              
                True
              
              
                ,
              
              linestyle
              
                =
              
              
                '--'
              
              
                ,
              
              linewidth
              
                =
              
              
                '0.5'
              
              
                )
              
              
plt
              
                .
              
              show
              
                (
              
              
                )
              
            
          

示例二:計算積分y=x^2

            
              n
              
                =
              
              
                10000
              
              
                #投點次數(shù)
              
              
                #矩形區(qū)域邊界
              
              
x_min
              
                ,
              
              x_max
              
                =
              
              
                0.0
              
              
                ,
              
              
                1.0
              
              
y_min
              
                ,
              
              y_max
              
                =
              
              
                0.0
              
              
                ,
              
              
                1.0
              
              
                #在矩形區(qū)域內(nèi)隨機投點
              
              
x
              
                =
              
              np
              
                .
              
              random
              
                .
              
              uniform
              
                (
              
              x_min
              
                ,
              
              x_max
              
                ,
              
              n
              
                )
              
              
y
              
                =
              
              np
              
                .
              
              random
              
                .
              
              uniform
              
                (
              
              y_min
              
                ,
              
              y_max
              
                ,
              
              n
              
                )
              
              
                #創(chuàng)建函數(shù)y=x**2
              
              
                def
              
              
                f
              
              
                (
              
              x
              
                )
              
              
                :
              
              
                return
              
               x
              
                **
              
              
                2
              
              
                #統(tǒng)計落在函數(shù)y=x^2圖像下方的點的數(shù)目
              
              
res
              
                =
              
              
                sum
              
              
                (
              
              np
              
                .
              
              where
              
                (
              
              y
              
                <
              
              f
              
                (
              
              x
              
                )
              
              
                ,
              
              
                1
              
              
                ,
              
              
                0
              
              
                )
              
              
                )
              
              
                #計算定積分的近似值
              
              
integral
              
                =
              
              res
              
                /
              
              n

              
                print
              
              
                (
              
              
                'integral:'
              
              
                ,
              
              integral
              
                )
              
              
                #繪制散點圖
              
              
fig
              
                =
              
              plt
              
                .
              
              figure
              
                (
              
              figsize
              
                =
              
              
                (
              
              
                6
              
              
                ,
              
              
                6
              
              
                )
              
              
                )
              
              
axes
              
                =
              
              fig
              
                .
              
              add_subplot
              
                (
              
              
                1
              
              
                ,
              
              
                1
              
              
                ,
              
              
                1
              
              
                )
              
              
axes
              
                .
              
              plot
              
                (
              
              x
              
                ,
              
              y
              
                ,
              
              
                'ro'
              
              
                ,
              
              markersize
              
                =
              
              
                1
              
              
                )
              
              
plt
              
                .
              
              axis
              
                (
              
              
                'equal'
              
              
                )
              
              
                #繪制y=x^2面積圖
              
              
xi
              
                =
              
              np
              
                .
              
              linspace
              
                (
              
              
                0
              
              
                ,
              
              
                1
              
              
                ,
              
              
                100
              
              
                )
              
              
yi
              
                =
              
              xi
              
                **
              
              
                2
              
              
plt
              
                .
              
              plot
              
                (
              
              xi
              
                ,
              
              yi
              
                ,
              
              
                '--k'
              
              
                )
              
              
plt
              
                .
              
              fill_between
              
                (
              
              xi
              
                ,
              
              yi
              
                ,
              
              
                0
              
              
                ,
              
              color
              
                =
              
              
                'r'
              
              
                ,
              
              alpha
              
                =
              
              
                0.5
              
              
                ,
              
              label
              
                =
              
              
                'area'
              
              
                )
              
              
plt
              
                .
              
              grid
              
                (
              
              
                )
              
            
          

蒙特卡羅模擬 - python實現(xiàn)_第1張圖片


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 粉色视频高清大全免费观看1 | 亚洲国产成人久久综合碰 | 极品白嫩无套视频在线播放张悠雨 | 欧美精品一区二区三区久久 | 欧美午夜在线 | 亚洲国产精品久久久久久网站 | 毛片性生活 | 男女生性毛片免费观看 | 精品乱码 | 黄色在线观看 | 国产精品免费看久久久 | 蜜桃视频在线免费播放 | 欧美精品福利 | 高清一区二区 | 色综合视频在线观看 | 国产在线观看www鲁啊鲁免费 | 一级香蕉免费毛片 | 国产AV亚洲精品久久久久 | 久久中文字幕久久久久91 | 国产亚洲精品日韩香蕉网 | 亚洲精品免费在线视频 | 欧美精品色| 国产精品嫩草影视在线观看 | 欧美线人一区二区三区 | 免费在线成人 | 中文字幕国产精品 | 五月婷婷爱 | 一呦二呦三呦国产精品 | 国产成人手机在线好好热 | 天堂在线网 | 美国av在线免费观看 | 欧美日韩中文字幕 | 久久综合亚洲色综合 | 8090色| 拍拍拍无遮挡高清视频在线网站 | 婷婷精品| 国产一区二区三区在线电影 | 青草视频在线免费观看 | 亚洲v日韩v综合v精品v | 日韩精品不卡 | 男女真实有遮挡xx00动态图 |