本周的Riddler经典是关于流体的稳态混合。这是解释过的问题。
你的旧货车能装12夸脱变速箱油。目前,所有12夸脱都是“旧的”。但一次更换所有12夸特都有变速器故障的风险。相反,您决定一次更换一点液体。每个月,你要取出一夸脱旧油液,添加一夸脱新鲜油液,然后驾驶面包车将油液彻底混合。不幸的是,使用整整一年后,曾经新鲜的变速器油正式变为“旧油”。你将这个过程持续多年。一天,在更换了一夸脱油液后,您决定立即检查变速器。液体中有百分之几是旧的?
这是我的解决方案:
[显示解决方案]
为了完整地描述流体的状态,我们需要跟踪$k=0,1,\dots.$时$k$月龄的流体量。一旦一包液体达到12个月大,我们可以简单地认为它是“老的”,我们可以停止数月。所以我们总共需要13个数字来完成这项工作。假设$x_t\in\mathbb{R}^{13}$是$t$月份的流体状态。最初,所有12夸脱的液体都是旧的,因此我们可以写下:
\[
x_0=\开始{bmatrix}0\\0\\vdots\\0\\12\end{bmatrix}
\]在这个月的过程中,流体会老化,所以我们将矢量的所有分量都向下移动一个。我们可以将其表示为矩阵乘法:
\[
x_{t}^{\text{shift}}={\brace}开始{bmatrix}0&0&0&\cdots&0&0\\
1&0&0&\cdots&0&0\\
0&1&0&\cdots&0&0&0\\
\vdots&\ddots&\ ddots&\ ddots&\ vdots&\vdots&\vdots\\[-3mm]
0&0&\ddots&\ddotes&0&0\\[-3mm]
0&0&0\\ddots&1&0&0\\
0&0&0&\cdots&0&1&1\end{bmatrix}}_S x_t。
\]在下个月初,我们取出一夸脱液体,并添加一夸脱新液体。这里的关键是,因为当我们去掉一夸脱时,液体是均匀混合的,所以我们去掉同样的夸脱比例每种不同类型的流体。换句话说,我们损失了所有流体类型的$\tfrac{11}{12}$。然后,我们添加一夸脱液体,所有这些都是新的。我们可以将其表示为线性组合:
\[
x{t+1}=\frac{11}{12}x_t^{\text{shift}}+\下大括号{\begin{bmatrix}1\\0\\vdots\\0结束{bmatrix}}_{e_0}
\]最后,通过提取最后一个分量(同样可通过矩阵乘法表示),并将其除以12(流体总量),得出时间$t$时的旧流体分数:
\[
y_t=\下大括号{\开始{bmatrix}0&0&\cdots&0&1\end{bmatrix}}_{e_{12}^\textsf{T}}x_T
\]将所有这些事实放在一起并删除$x_t^\text{shift}$,我们得到以下结果(状态空间)动力学表示:
\开始{align}
x{t+1}&=\tfrac{11}{12} S公司x_t+e_0\\
y_t&=\tfrac{1}{12} e(电子)_{12} ^\textsf{T}x_T
\结束{对齐}到找到稳态分布(作为$t\to\infty$),我们可以通过设置$xt=x{t+1}$来求解不动点$x\star$。由此得出以下方程式:
\开始{align}
x_\star&=\tfrac{11}{12} S公司x_\星+e_0\\
y_star&=\tfrac{1}{12} 电子_{12} ^\textsf{T}x_\star
\结束{align}消除$x_\star$将带来:
$\显示样式
y_star=\tfrac{1}{12} e(电子)_{12} ^\textsf{T}\左(I-\tfrac{11}{12} S公司\右)^{-1}e_0
=\压裂{3138428376721}{8916100448256}\约0.352
$
因此,几个月过去后,大约35.2%的液体将变旧。我们也可以通过$x\star=left(I-\tfrac{11})直接计算稳态分布$x_star${12} S公司\right)^{-1}e_0$,我们得到以下分布:
正如预期的那样,应该始终有一夸脱的新液体。在我们到达旧液体之前,每个后续容器中的液体量都会减少,旧液体占液体总量的35.2%(约4.22夸脱)。
使用终值定理
有很多方法可以解决这个问题(马尔可夫链回想起来)。由于这是一个关于动力系统稳态响应的问题,我想我会用控制理论的语言来解释这个问题。
我们可以写传递函数这个系统的结果是:
\[
Y(z)=\tfrac{1}{12} e(电子)_{12} ^\textsf{T}\左(zI-\tfrac{11}{12} S公司\右)^{-1}e_0=
\裂缝{3138428376721}{8916100448256z^{12}(12z-11)}
\]我们被问及恒定输入1的稳态输出是多少。这相当于要求对单位步长做出稳态响应。为此,我们可以应用终值定理,它告诉我们答案必须是:
\[
\lim_{t\to\infty}\,y(t)=\lim__{z\to1}\,(z-1)\cdot\frac{1}{z-1}\cdotY(z)=y(1)=\frac}{3138428376721}{89161004256}
\]这与使用另一种方法得到的答案相同。
但等等,还有更多…
这个问题表现出一种特别有趣的行为。与大多数达到稳态的线性系统不同渐近地,此系统在有限时间! 具体来说,我们在整整12个月后达到稳定状态。没有必要再等了!
要了解为什么会出现这种情况,请返回动力学:
\开始{align}
x_\star&=\tfrac{11}{12} S公司x_\星+e_0\\
y_star&=\tfrac{1}{12} e(电子)_{12} ^\textsf{T}x_\star
\结束{对齐}我们现在对$S$进行观察:
\[
S^{12}=\开始{bmatrix}0&0&\cdots&0&0\\
0&0&\cdots&0&0\\
\vdots&\vdots&\cdots&\ vdots&\vdots\\
0&0&\cdots&0&0\\
1&1&\cdots&1&1\end{bmatrix}=e_{12}1^\mathsf{T}
\]这很有道理;12个月后,所有液体都变老了。事实上,对于所有$k\geq12$,$S^k=e_{12}1^\mathsf{T}$。现在考虑一下错误,这是与稳态$x\star$的偏差。误差动态为:
\[
(x{t+1}-x\\star)=\tfrac{11}{12} S公司(x_0-x_\星)
\]经过$k$步,其中$k\geq 12$,因此错误为:
\开始{align}
x_k-x_\star&=\左(\tfrac{11}{12} S公司\右)^k(x_0-x_\星)\\
&=\左(\tfrac{11}{12}\right)^ke_{12}\下大括号{1^{\textsf{T}}(x_0-x_\star)}_{=0}
\结束{align}最后一个学期取消的原因是因为所有年龄段的液体总量总是12。因此$x_0$的组件之和等于$x{\star}$的组件总和。因此,流体实际上在确切地12个月!我们可以使用以下Matlab代码进行验证:
S=诊断(个(12,1),-1);S(13,13)=1;e0=[1;零(12,1)];e12=[零(12,1);1];Y=更改时间单位(ss(11/12*S,e0,e12',0,-1),'月');lsim(Y,个(16,1),0:15,12*e12)伊拉贝尔(“旧液体(夸脱)”)xticks(0:2:15)yticks(0:12)栅格
这将生成以下绘图:
正如我们所看到的,在第12次补充之后,我们已经精确地达到了稳定状态,并且从那时起,旧液体的量保持不变。