MATLAB中带条件循环的Monte Carlo仿真

时间:2013-05-09 19:52:57

标签: matlab optimization montecarlo

我是一名物理学家。

我已经用条件循环编写了蒙特卡罗模拟的代码。

运行此模拟代码时遇到一些错误。我想考虑模拟结果的正值。当我运行代码时,我收到错误。

我正在运行10000次迭代,我有五个参数,如A,B,C,D和E.我通过在正态分布的帮助下使用每个参数的方差和均值为每个参数生成一个随机数。

代码如下:

    n = 10000;
    Constant = 5;
    Arand = (3*10^(12)*randn(1,n)) + 7*10^(6)*ones(1,n);
    Brand = (9*randn(1,n)) + 17*ones(1,n);
    Crand = (2*10^(-4)*randn(1,n)) + 0.2*ones(1,n);
    Drand = (0.0017*randn(1,n)) + 0.50*ones(1,n);
    Erand = (0.00004*randn(1,n)) + 1.5*ones(1,n);
    if P1 > 0
       P1 =  Constant*Arand.*Brand.*Crand.*Drand.*(1/Erand)
    end

    plot(P1);

2 个答案:

答案 0 :(得分:0)

P1 =  Constant*Arand.*Brand.*Crand.*Drand./Erand;

P1声明之前的if是什么并不清楚。

请注意,“if P1 > 0”表示“if all(P1 > 0)”。

答案 1 :(得分:0)

如果您只想绘制P1为正的那些点,您需要更改这些行:

if P1 > 0
   P1 =  Constant*Arand.*Brand.*Crand.*Drand.*(1/Erand)
end
plot(P1);

以下内容:

定义P1:

P1 =  Constant*Arand.*Brand.*Crand.*Drand./Erand;

然后选择仅绘制正值:

plot(P1(P1>0));

希望这有帮助。