蒙特卡羅算法求積分(matlab)


  • 下面以一個具體的例子來說明,所求積分如圖所示。

    如何用matlab實現蒙特卡洛法求定積分

  • 啟動matlab,新建一個函數文件。

    如何用matlab實現蒙特卡洛法求定積分

  • 在彈出的編輯窗口中輸入如下代碼。該代碼的目的是創建蒙特卡洛主函數。

    如何用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

     

  • 保存該函數文件。

    如何用matlab實現蒙特卡洛法求定積分

    如何用matlab實現蒙特卡洛法求定積分

  • 再建立一個函數文件,輸入代碼如下。該代碼的目的是構造積分函數。

    如何用matlab實現蒙特卡洛法求定積分

    function f =monte_carlo_f(x)
    f=x.^2+cos(x);
    end

     

  • 保存上面的積分函數文件。

    如何用matlab實現蒙特卡洛法求定積分

    如何用matlab實現蒙特卡洛法求定積分

  • 在命令行窗口中直接調用該函數,求得的結果如圖所示。

    如何用matlab實現蒙特卡洛法求定積分

  • 下面的命令主要是繪制出積分區域。

    如何用matlab實現蒙特卡洛法求定積分

    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

     

  • 可以從下圖中看到積分區域如圖所示。

    如何用matlab實現蒙特卡洛法求定積分

  • 由於蒙特卡洛是通過抽樣來解決問題,可以看到沒次求解,結果都不一樣,但是差別並不大,最后一次還將抽樣數提高了一個數量級,結果相差還是並不大。

     


  • 免責聲明!

    本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



     
    粵ICP備18138465號   © 2018-2025 CODEPRJ.COM