首先,我们知道三步概率转移矩阵包含答案 (0.6815)。
% MATLAB R2019a
P = [0.88 0.12;
0 1];
P3 = P*P*P
P(1,1) % 0.6815
方法 1:需要计量经济学工具箱
此方法使用dtmc() 和simulate() 函数。
首先,使用概率转移矩阵P 并使用dtmc() 创建Discrete Time Markov Chain (DTMC)。
mc = dtmc(P); % Create the DTMC
numSteps = 3; % Number of collisions
您可以使用simulate() 轻松获得一个示例路径。注意你如何指定初始条件。
% One Sample Path
rng(8675309) % for reproducibility
X = simulate(mc,numSteps,'X0',[1 0])
% Multiple Sample Paths
numSamplePaths = 3;
X = simulate(mc,numSteps,'X0',[numSamplePaths 0]) % returns a 4 x 3 matrix
第一行是 DTMC 的起始状态(初始条件)的 X0 行。第二行是 1 次转换 (X1) 后的状态。因此,第四行是 3 次转换(碰撞)后的状态。
% 50000 Sample Paths
rng(8675309) % for reproducibility
k = 50000;
X = simulate(mc,numSteps,'X0',[k 0]); % returns a 4 x 50000 matrix
prob_survive_3collisions = sum(X(end,:)==1)/k % 0.6800
我们可以在 3 次碰撞中幸存的平均概率上设置一个 95% 的置信区间,以获得包含结果的0.6814 ± 0.00069221,或者更确切地说是[0.6807 0.6821]。
numTrials = 40;
ProbSurvive_3collisions = zeros(numTrials,1);
for trial = 1:numTrials
Xtrial = simulate(mc,numSteps,'X0',[k 0]);
ProbSurvive_3collisions(trial) = sum(Xtrial(end,:)==1)/k;
end
% Mean +/- Halfwidth
alpha = 0.05;
mean_prob_survive_3collisions = mean(ProbSurvive_3collisions)
hw = tinv(1-(0.5*alpha), numTrials-1)*(std(ProbSurvive_3collisions)/sqrt(numTrials))
ci95 = [mean_prob_survive_3collisions-hw mean_prob_survive_3collisions+hw]
maxNumCollisions = 10;
numSamplePaths = 50000;
ProbSurvive = zeros(maxNumCollisions,1);
for numCollisions = 1:maxNumCollisions
Xc = simulate(mc,numCollisions,'X0',[numSamplePaths 0]);
ProbSurvive(numCollisions) = sum(Xc(end,:)==1)/numSamplePaths;
end