FirstPassageTimeDistribution[mproc,f]
表示马尔可夫过程 mproc 第一次从初始状态到最终状态 f 的时间分布.
FirstPassageTimeDistribution
FirstPassageTimeDistribution[mproc,f]
表示马尔可夫过程 mproc 第一次从初始状态到最终状态 f 的时间分布.
更多信息
- FirstPassageTimeDistribution 也称为第一次击中时间.
- 马尔可夫过程 mproc 可以是 DiscreteMarkovProcess 或者 ContinuousMarkovProcess.
- FirstPassageTimeDistribution 中时间 t 的概率等价于 Probability[x[t]∈f∧∀τ,0<τ<tx[τ]∉fx[0]i,xmproc],其中 i 是初始状态.
- 如果 mproc 已经在目标状态中,FirstPassageTimeDistribution 给出平均递归时间的分布.
- 如果该链是吸收的,并且目标状态是非吸收的,那么 FirstPassageTimeDistribution 给出达到基于目标状态的条件的分布.
- FirstPassageTimeDistribution 表示对离散时间马尔可夫过程的离散相位类型分别,和对于连续时间马尔可夫过程的连续相位类型分布.
- FirstPassageTimeDistribution 可以用于诸如 Mean、Quantile、PDF 和 RandomVariate 等函数.
范例
打开所有单元 关闭所有单元基本范例 (1)
𝒫 = DiscreteMarkovProcess[{1, 0, 0}, (| | | |
| ----- | ----- | ----- |
| 0 | 1 / 2 | 1 / 2 |
| 1 / 2 | 0 | 1 / 2 |
| 1 / 2 | 1 / 2 | 0 |)];𝒟 = FirstPassageTimeDistribution[𝒫, 3];PDF[𝒟, k]DiscretePlot[%, {k, 0, 5}, ExtentSize -> 1 / 2]CDF[𝒟, k]DiscretePlot[%, {k, 0, 5}, ExtentSize -> Right]Mean[𝒟]Variance[𝒟]范围 (3)
𝒫 = ContinuousMarkovProcess[1, {{-2, 1, 1, 0}, {2, -6, 2, 2}, {3, 3, -9, 3}, {0, 0, 0, 0}}];𝒟 = FirstPassageTimeDistribution[𝒫, 4];PDF[𝒟, t]Plot[PDF[𝒟, t], {t, 0, 10}]Mean[𝒟]N[%]paths = Select[RandomFunction[𝒫, {0, 10 ^ 5}, 4 * 10 ^ 4]["Paths"], #[[-1, 1]] == 10 ^ 5&];Mean[paths[[All, -2, 1]]]CharacteristicFunction[𝒟, s]//TogetherProbability[time < 1, time𝒟]N[%]𝒫 = DiscreteMarkovProcess[3, {{1 / 2, 1 / 2, 0, 0}, {1 / 2, 1 / 2, 0, 0}, {1 / 3, 1 / 4, 13 / 60, 1 / 5}, {0, 0, 0, 1}}];MarkovProcessProperties[𝒫, "Absorbing"]𝒟 = FirstPassageTimeDistribution[𝒫, {1, 2}];{Mean[𝒟], Variance[𝒟]}//Nsample = RandomFunction[𝒫, {0, 128}, 10 ^ 5, Method -> {Automatic, "StoppingFunction" -> Function[{len, pos}, pos == 3]}];
times = Cases[sample["Paths"], {__, {t_, 1 | 2}} :> t];{Mean[times], Variance[times]}//Ndist = FirstPassageTimeDistribution[ContinuousMarkovProcess[{0.1, 0.9, 0, 0}, {{-6.2, 2, 0, 4.2}, {2, -9, 1, 6}, {1, 0, -3, 2}, {0, 0, 0, 0}}], 4];data = RandomVariate[dist, 10 ^ 4];hist = Histogram[data, Automatic, "PDF"];pdf = Plot[PDF[dist, x], {x, 0, 10}, PlotRange -> All, PlotStyle -> Thick];Show[hist, pdf, ImageSize -> Medium]应用 (7)
出租车停靠在机场或者城市里. 从城市出发,下一站是机场的概率是 1/4,去城市里其它地方的概率是 3/4. 从机场出发,下一站总是城市. 使用离散马尔可夫过程,对出租车建模,其中状态1表示城市,状态2表示机场,从机场出发:
taxi = DiscreteMarkovProcess[2, {{3 / 4, 1 / 4}, {1, 0}}];Mean[FirstPassageTimeDistribution[taxi, 2]]一个赌徒,从3个单位开始,每个步骤投掷1个单位,赢的概率是 0.4,目标是在停止之前赢7个单位. 直至赌徒达到目标或者破产的期望游玩次数. 赌博过程可以使用离散马尔可夫过程建模,其中状态
表示赌徒有
个单位:
m = (| | | | | | | | |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0.6 | 0 | 0.4 | 0 | 0 | 0 | 0 | 0 |
| 0 | 0.6 | 0 | 0.4 | 0 | 0 | 0 | 0 |
| 0 | 0 | 0.6 | 0 | 0.4 | 0 | 0 | 0 |
| 0 | 0 | 0 | 0.6 | 0 | 0.4 | 0 | 0 |
| 0 | 0 | 0 | 0 | 0.6 | 0 | 0.4 | 0 |
| 0 | 0 | 0 | 0 | 0 | 0.6 | 0 | 0.4 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |);gambler = DiscreteMarkovProcess[4, m];ListLinePlot[RandomFunction[gambler, {0, 20}, 5]["ValueList"] - 1]𝒟 = FirstPassageTimeDistribution[gambler, {1, 8}];Mean[𝒟]DiscretePlot[PDF[𝒟, k], {k, 0, 15}, ExtentSize -> 1 / 2]NProbability[k ≤ 10, k𝒟]dierolls = DiscreteMarkovProcess[1, With[{numfaces = 6}, SparseArray[{{i_, i_} -> (i - 1) / numfaces, {i_, j_} /; (j - i - 1 == 0) -> (numfaces - (i - 1)) / numfaces}, {numfaces + 1, numfaces + 1}]]];Mean[FirstPassageTimeDistribution[dierolls, 7]]//N当投掷一个无偏骰子时,平均而言 HHT 出现比 HTT 出现需要更长时间:
proc = DiscreteMarkovProcess[1, {{1 / 2, 1 / 2, 0, 0, 0, 0}, {0, 0, 1 / 2, 1 / 2, 0, 0}, {0, 0, 1 / 2, 0, 1 / 2, 0}, {0, 1 / 2, 0, 0, 0, 1 / 2}, {0, 0, 0, 0, 1, 0}, {0, 0, 0, 0, 0, 1}}];Graph[{"Start", "H", "HH", "HT", "HHT", "HTT"}, proc, ImageSize -> Medium]Mean[FirstPassageTimeDistribution[proc, 5]]//NMean[FirstPassageTimeDistribution[proc, 6]]//N一个粒子在立方体的八个顶点之间通过对称随机游走移动. 设
为初始顶点,而
为相反顶点. 计算:
proc = DiscreteMarkovProcess[1, HypercubeGraph[3]];Graph[proc]Mean[FirstPassageTimeDistribution[proc, 1]]Mean[FirstPassageTimeDistribution[proc, 8]]sm = With[{n = 7}, AdjacencyMatrix[CompleteGraph[n]] / (n - 1)];irredproc = DiscreteMarkovProcess[i, sm];MarkovProcessProperties[irredproc, "Irreducible"]With[{numstates = Length[sm]}, With[{maxhittingtime = Max[Outer[Mean[FirstPassageTimeDistribution[DiscreteMarkovProcess[#1, sm], #2]]&, Range[numstates], Range[numstates]]]}, maxhittingtime ≤ Subscript[t, cov] ≤ maxhittingtime * HarmonicNumber[numstates]]]哈勃太空望远镜携带了六个陀螺仪,至少有三个完全满足准确度要求. 陀螺仪的运行时间是独立的,并且服从故障率为
的指数分布. 如果第四个陀螺仪出现故障,则望远镜进入睡眠模式,在这种模式下暂停进一步观察. 它需要一个均值为
的指数分布的时间来把望远镜进入睡眠模式,在此之后地球上的基站接受到一个睡眠信号,并且进入飞行器发射准备阶段. 在望远镜的维修人员到达前,它需要均值为
的指数分布时间,并修复陀螺仪稳定单元. 与此同时,其他两个陀螺仪可能出现故障. 如果最后一个陀螺仪出现故障时,该望远镜可能崩溃. 假设
、
和
,所有这些都有逆年的单位:
qm = {{-6λ, 6λ, 0, 0, 0, 0, 0, 0, 0}, {0, -5λ, 5λ, 0, 0, 0, 0, 0, 0}, {0, 0, -4λ, 4λ, 0, 0, 0, 0, 0}, {0, 0, 0, -3λ, 3λ, 0, 0, 0, 0}, {0, 0, 0, 0, -2λ - μ, 2λ, μ, 0, 0}, {0, 0, 0, 0, 0, -λ - μ, 0, μ, λ}, {η, 0, 0, 0, 0, 0, -2λ - η, 2λ, 0}, {η, 0, 0, 0, 0, 0, 0, -λ - η, λ}, {ν, 0, 0, 0, 0, 0, 0, 0, -ν}};With[{vert = {"6", "5", "4", "3", "2", "1", "Sleep2", "Sleep1", "Crash"}}, Graph[vert, ContinuousMarkovProcess[1, qm] /. {ν -> 0}, VertexSize -> {"Scaled", 0.08}, VertexStyle -> Thread[vert -> {StandardGreen, StandardGreen, StandardGreen, StandardGreen, StandardOrange, StandardOrange, StandardBlue, StandardBlue, StandardRed}], GraphLayout -> {"SpringElectricalEmbedding", "Rotation" -> Pi}, ImageSize -> Medium]]proc = ContinuousMarkovProcess[1, qm] /. {λ -> 1 / 10, μ -> 100, η -> 5};CDF[FirstPassageTimeDistribution[proc, 9], 10]//N1 - CDF[FirstPassageTimeDistribution[proc, {7, 8}], 10] /. ν -> 1.属性和关系 (4)
proc = DiscreteMarkovProcess[1, {{0, 1, 0}, {0, 0, 1}, {1, 0, 0}}];Graph[proc]Mean[FirstPassageTimeDistribution[proc, 3]]Variance[FirstPassageTimeDistribution[proc, 3]]dist = FirstPassageTimeDistribution[ContinuousMarkovProcess[1, {{-λ1, λ1, 0}, {0, -λ2, λ2}, {0, 0, 0}}], 3];Mean[dist]Variance[dist]proc = DiscreteMarkovProcess[2, {{1, 0, 0, 0}, {0.45, 0, 0.55, 0}, {0, 0.2, 0, 0.8}, {0, 0, 0, 1}}];Graph[proc]Mean[FirstPassageTimeDistribution[proc, 4]]ExponentialDistribution 或者其他相位类型分别的自动简化:
FirstPassageTimeDistribution[ContinuousMarkovProcess[1, {{-3, 3}, {0, 0}}], 2]qm = With[{k = 3, la = 5}, Join[RotateRight[PadRight[{-la, la}, k + 1], #]& /@ Range[0, k - 1], {ConstantArray[0, k + 1]}]]FirstPassageTimeDistribution[ContinuousMarkovProcess[1, qm], 4]qm = With[{muvec = {7, 4, 5}}, SparseArray[Flatten@MapThread[{{#1, #1} -> -#2, {#1, Length[muvec] + 1} -> #2}&, {Range[Length[muvec]], muvec}], {Length[muvec] + 1, Length[muvec] + 1}]]FirstPassageTimeDistribution[ContinuousMarkovProcess[{1 / 3, 2 / 3, 0, 0}, qm], 4]qm = With[{alvec = {2 / 3, 1 / 3}, muvec = {5, 1, 3}}, Join[Transpose[Join[Transpose[DiagonalMatrix[-muvec] + ArrayFlatten[{{0, DiagonalMatrix[alvec * Most[muvec]]}, {{{0}}, 0}}]], {muvec PadRight[1 - alvec, Length[muvec], 1]}]], {ConstantArray[0, Length[muvec] + 1]}]]FirstPassageTimeDistribution[ContinuousMarkovProcess[1, qm], 4]文本
Wolfram Research (2012),FirstPassageTimeDistribution,Wolfram 语言函数,https://reference.wolfram.com/language/ref/FirstPassageTimeDistribution.html.
CMS
Wolfram 语言. 2012. "FirstPassageTimeDistribution." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/FirstPassageTimeDistribution.html.
APA
Wolfram 语言. (2012). FirstPassageTimeDistribution. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/FirstPassageTimeDistribution.html 年
BibTeX
@misc{reference.wolfram_2026_firstpassagetimedistribution, author="Wolfram Research", title="{FirstPassageTimeDistribution}", year="2012", howpublished="\url{https://reference.wolfram.com/language/ref/FirstPassageTimeDistribution.html}", note=[Accessed: 09-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_firstpassagetimedistribution, organization={Wolfram Research}, title={FirstPassageTimeDistribution}, year={2012}, url={https://reference.wolfram.com/language/ref/FirstPassageTimeDistribution.html}, note=[Accessed: 09-August-2026]}