什麼是蒙特卡洛模擬
蒙特卡洛(Monte Carlo)模擬是以機率統計原理為基礎,
模擬自變數的隨機變化,算出由這些自變數所導致的其它因變數的數值,
並對結果進行統計分析,研究其分佈規律,以達到認識事物特徵及其變化規律的方法。
在對一些複雜電子電路進行分析計算時,
我們通常很難根據電子、電路理論得到電壓、電流、功率等電氣引數的解析解。
即使得到了解析解,我們很難分析因變數與自變數的極值關係,
因而無法得到各電氣引數的最大、最小值,無法對其可靠性進行有效評估;
根據中心極限定理,一個由多個隨機變數組成的整體分佈為高斯分佈,與多個隨機變數的分佈形式無關。
蒙特卡洛採用隨機行走的方法,以某種機率分佈(一般以均勻分佈即可)的方式在一定範圍內隨機設定各元器件的效能引數,並計算出分析參量值。
儘可能多得重複該隨機過程,對得到的分析參量進行統計分析,得到參量的分佈情況,
以3倍的標準差所對應的分析參量值(相對為97.3%的機率分佈),並將此值當作最壞情況對應的參量值。
圓周率的計算如下圖所示,一個圓位於正方形內部,並與正方形相切;
圓與正方形相切
圓和正方形的面積之比是π/4。
在這個正方形內部,隨機產生n個點(這些點服從均勻分佈),
計算它們與中心點的距離是否大於圓的半徑,
以此判斷是否落在圓的內部。統計圓內的點數,
與n的比值乘以4,就是π的值。
理論上,n越大,計算的π值越準。
PS: 自幾年前起,matlab6.5不能在64位系統上安裝,matlab2010R需要license,
我就失去了matlab這一科研利器,對複雜計算就累覺不愛了。
沒有了matlab,我用excel採用蒙特卡洛來計算圓周率,步驟如下:
1) 採用rand函式產生兩組N個隨機數,分別放於A列單元格以及B列單元格,一組計為x,另一組計為y;
2) 在c列單元格中,以公式sqrt(power(a2-0.5,2)+power(b2-0.5,2)),計算每一個(x,y)與圓心(0.5,0.5)的距離;
3)在d列單元格中,以公式if(c2<=0.5,1,0)對位於圓內的點進行對映,位於圓內的對映為數值1,否則對映為0。
4)對d列進行求和,得到的值就是位於圓內的點的個數M,
5)圓內的點數/總的點數=圓的面積/正方形的面積=π/4,得到π=4*圓內的點數/總的點數。
利用excel進行蒙特卡洛模擬
當N取5000時,算出π=3.127826
5000個隨機點得到的x,y分佈
當N取100000時,算出出π=3.14248。
N=100000
隨機點數越多,計算得到的π越準確。
電路可靠性分析在上一篇文章中,我分析了一個用於數碼管LED驅動的電路,如下圖:
用於數碼管驅動的射極跟隨電路
分析得到三極體Q1的基極的電流計算公式:
Q1的基極電流公式
式中,VOH是5.0V供電的微控制器的輸出高電壓;
VBE是三極體Q1的B、E極導通電壓;
β三極體Q1的電流放大倍數;
透過一些簡化,算出流過LED的電流是一個恆定值,典型值大概為10mA。
但是並沒有算出一些極限引數,不知道在其它電引數變化時,是否還保持恆定。
另外,未能三極體最大功率,不知道其是否能穩定工作,等等。
進一步計算,我們還可以得到流過LED的電流為:
Ic=β*Ib;
Q1的功耗為:
P=(VBat-(β+1)*Ib*R1-VLed)*β*Ib。
其中,VBat為電池電壓,VLed為LED的導通電壓;
我們接下來在兩個方面對I和P進行可靠性分析:
1) 流過LED的電流最大值、最小值,確認其能保持恆定;
2) 三極體Q1在極限情況下的最大功耗,確保其不超過允許的最大功耗。
在上述分析時,根據規格書,我們知道與之相關的引數的取值範圍:
VOH:4.8V-5.2V;
VBE:0.3V-0.9V;
R1:351Ω-429Ω;
R2:0.9kΩ-1.1kΩ;
R3:4.23kΩ-5.15kΩ;
β:30-150;
VLED:1.8V-2.5V;
VBat:9V-16V;
假設,這些變數都是獨立不相關,而且其取值都在規格範圍內隨機分佈的。
採用excel生成N組各變數的隨機數,計算Ic和P:
採用excel進行電路monte carlo分析
取N=100000,得到流過LED的電流最大值為11.11mA,最小值為6.46mA。
三極體Q1的功耗最大值為112mW,最小值為24mW。
利用frequency函式對結果進行分割槽間統計,並繪製分佈圖,如下:
LED電流的機率密度曲線
三極體功率的機率密度曲線
從數值結果來看,
LED的平均電流為:8.70mA,標準差σ為0.73mA;
取+/-3σ為最小、最大值,得到最小電流為:6.51mA,最大電流為:10.89mA;
波動範圍比較小。
三極體功耗的平均值為:60.1mW,標準差σ為18.2mW,
取+/-3σ為最小、最大值,得到最小功率為:5.2mW,最大功率為:115mW。
在其允許最大功耗200mW範圍內,所以在最壞情況下,三極體的功耗仍能滿足規格要求;