MATLAB中带条件环的montecarlo仿真

MATLAB中带条件环的montecarlo仿真,matlab,optimization,montecarlo,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); Bran

我是物理学家

我已经写了一个关于蒙特卡罗模拟和条件循环的代码

我在运行此模拟代码时遇到一些错误。我想考虑仿真结果的积极价值。当我运行代码时,我得到一个错误

我正在运行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);
if
语句之前,不清楚什么是
P1


请注意,“
如果P1>0
”表示“
如果全部(P1>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));

希望这有帮助。

1)此代码有什么问题?2) 最初定义的
P1
在哪里?这里有三个错误:
Erand=(
缺少括号,第二:P1在
if
之前没有定义,将
1/Erand
更改为
1/Erand
请注意,matlab理解科学数字格式。您可以编写
2e-4
而不是
2*10^(-4)
plot(P1(P1>0));