MATLAB中带条件环的montecarlo仿真
我是物理学家 我已经写了一个关于蒙特卡罗模拟和条件循环的代码 我在运行此模拟代码时遇到一些错误。我想考虑仿真结果的积极价值。当我运行代码时,我得到一个错误 我正在运行10000次迭代,我有五个参数,如A、B、C、D和E。我通过使用每个参数的方差和均值,借助正态分布,为每个参数生成一个随机数 代码如下: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
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));