蒙特卡罗算法求积分(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