欧美三区_成人在线免费观看视频_欧美极品少妇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條評論
主站蜘蛛池模板: 欧美精品www | 久久精品国产一区 | 国产成人91精品 | 麻豆精品视频在线 | 国产色在线 | 成人日韩 | 日本高清视频在线播放 | 欧美高清成人 | 草草免费观看视频在线 | 美女国内精品自产拍在线播放 | 亚洲一区二区三区免费在线观看 | 天天操天天擦 | 亚洲视频免费在线看 | 伊人久久国产 | 欧美经典剧情系列h版在线观看 | 欧美一区二区视频 | 国产国产精品人在线观看 | 久草2| 久久亚洲精品国产精品黑人 | 奇米网色| 天天操天天射天天插 | 啪啪在线看| 国产四区 | 国产人成午夜免视频网站 | 精品成人免费 | 日韩av不卡在线 | 不用播放器的av | 成人毛片在线观看 | 天天影视综合网色综合国产 | 成人午夜大片免费视频77777 | 两性欧美 | 奇米影视88888 | 国产一级毛片在线看 | 久久精品av麻豆的观看方式 | 日日摸狠狠的摸夜夜摸 | 国产高清亚洲 | 久久综合九色综合桃花 | 啪啪激情综合 | 99在线看 | 欧美福利| 97精品国产 |