啟動matlab,新建一個函數文件。
在彈出的編輯窗口中輸入如下代碼。該代碼的目的是創建蒙特卡洛主函數。
function s =monte_carlo(a,b,n)
t=rand(1,n);
x=a+(b-a)*t;
s=sum(monte_carlo_f(x));
s=s*(b-a)/n
end
保存該函數文件。
再建立一個函數文件,輸入代碼如下。該代碼的目的是構造積分函數。
function f =monte_carlo_f(x)
f=x.^2+cos(x);
end
保存上面的積分函數文件。
在命令行窗口中直接調用該函數,求得的結果如圖所示。
下面的命令主要是繪制出積分區域。
x=-0.5:0.01:1.5;
y=x.^2+cos(x);
plot(x,y)
axis([-0.5 1.5 0 2.5]);
hold on;
x1=0:0.01:1;
y1=x1.^2+cos(x1);
area(x1,y1)
grid on
可以從下圖中看到積分區域如圖所示。
由於蒙特卡洛是通過抽樣來解決問題,可以看到沒次求解,結果都不一樣,但是差別並不大,最后一次還將抽樣數提高了一個數量級,結果相差還是並不大。