0

我是物理学家。

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

我在运行这个模拟代码时遇到了一些错误。我想考虑模拟结果的正值。当我运行代码时,我得到一个错误。

我正在运行 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);
4

2 回答 2

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));

希望这可以帮助。

于 2013-05-10T00:36:16.443 回答
0
P1 =  Constant*Arand.*Brand.*Crand.*Drand./Erand;

目前尚不清楚声明P1之前是什么if

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

于 2013-05-09T22:25:16.953 回答