【问题标题】:How do you program the Monte Carlo Integration method in Matlab?如何在 Matlab 中编写蒙特卡洛积分方法?
【发布时间】:2016-09-17 02:09:30
【问题描述】:

我试图弄清楚如何使用 Matlab 纠正基于数学的应用程序,尽管我似乎无法弄清楚如何让蒙特卡罗集成方法发挥作用。我觉得我也没有正确考虑算法。截至目前,我有类似的东西:

    // For the function {integral of cos(x^3)*exp(x^(1/2))+x dx
    // from x = 0 to x = 10
    ans = 0;
    for i = 1:100000000
        x = 10*rand;
        ans = ans + cos(x^3)*exp(x^(1/2))+x
    end

我觉得这是完全错误的,因为我的输出几乎没有达到预期。我应该如何正确地写这个?或者,设置它的算法应该如何?

【问题讨论】:

标签: matlab math montecarlo


【解决方案1】:

两个问题:

1) 如果你看看你在计算什么,“ans”会随着 i 的增加而增长。通过放置大量样本,您只是在增加您的输出值。无论样本数量如何,如何规范化该值以使其保持相对相同?

2) 考虑一下您要在此处计算的内容。您当前的“ans”为您提供了函数输出的 100000000 个独立随机测量值的总和。如果你除以你采集的样本数,这个数字代表什么?您如何将这些知识与积分范围相结合,以获得曲线下的预期面积?

【讨论】:

    【解决方案2】:

    我设法用我找到的公式here 解决了这个问题。我最终使用了:

       ans = 0;
       n = 0;
       for i:1:100000000
           x = 10*rand;
           n = n + cos(x^3)*exp(x^(1/2))+x;
       end
       ans = ((10-0)/100000000)*n
    

    【讨论】:

      猜你喜欢
      • 2014-03-26
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 2020-07-05
      • 2012-12-11
      • 1970-01-01
      • 2021-04-20
      相关资源
      最近更新 更多