車流

引言

我在路上思考堵車原因,考慮圓上兩段不同速度的區域,由於流守恆,那麼速度將和密度成反比。但由於車有實際尺寸,密度不會無限增大而有一個上限,因此速度不會無限變小,而是越過一個臨界值後直接到零而產生相變,這就是堵車的原因。

我感到頗為奇怪為什麼沒有人考慮直接用歐拉方程來處理車流運動,我傾向認為這是一簡單的問題,但需要根據實際情況略作修改。

模型

第一個是連續性方程
$$
\partial_t \rho + \nabla \cdot (\rho \vec u) = 0
$$
另一個為動量方程,根據歐拉方程有
$$
\rho (\partial_t + \vec u \cdot \nabla) \vec u + \nabla p = 0
$$
類似聲波的推導過程假設$\rho = p / c^2$(根據物態方程$p \propto n / V$),$c$為待定參數。下面對這一組方程做一些解釋。

說明

我的猜想來自積分形式的連續性方程,考慮穩恆流$\partial_t \rho = 0$
$$
\int \rho \vec u \cdot d\vec S = \rho_r u_r - \rho_l u_l = 0
$$
因此兩側密度及流速之比為$\rho_r / \rho_l = u_l / u_r$,這一條正與實驗數據相符。因此速度越小,密度越大,但密度不會無限增大,將其上限記作$\rho_{max}$,這表示由於車輛不能當成連續的點而應考慮其實際尺寸時點臨界密度。現在把環境以及其他因素影響全部放在速度或密度的方差內,考慮某一點附近的瞬時速度可以因為波動而導致附近的車流密度達到臨界值,這時候會導致局部流速為零,類似不當操作而引起的堵車。

但實際數據暗示還存在另一個臨界密度。一般而言速度越大,車輛越稀疏,但實際上車距在越過一個臨界點後就不再隨著速度增大而保持一個定值,我猜這是因為前一輛車已經消失在人的視野範圍的緣故。因此把這個臨界密度定義為$\rho_{min}$,此後增加速度不會帶來密度變化。

此外,跟車模型用到車輛加速度與車距成反比這個假設,這個假設與實際符合很好。此外該模型還假設與前後車輛的速度差成正比,但這一條實驗顯示與加速度相關性很一般。為了簡化模型,我傾向速度差也是車距效應的間接後果,而車距的反比正是密度,這和聲波方程的推導過程相似。

計算

由於只需要考慮一維的情況,連續性方程為
$$
\partial_t \rho + \partial_x (\rho u) = 0
$$
動量方程為
$$
\partial_t u + u\partial_x u + c^2\partial_x \rho / \rho = 0
$$
現在將方程組寫為
$$
\begin{equation}
\partial_t \begin{pmatrix} \rho \\ u \end{pmatrix} + \begin{pmatrix} u & \rho \\ \frac{c^2}{\rho} & u \end{pmatrix} \partial_x \begin{pmatrix} \rho \\ u \end{pmatrix} = 0
\end{equation}
$$

$$
\begin{equation}
A = \begin{pmatrix} u & \rho \\ \frac{c^2}{\rho} & u \end{pmatrix}
\end{equation}
$$
現在計算$A$的特徵值為$\lambda = u \pm c^2$,這是為了計算Riemann Invariants,即
$$
\begin{equation}
\frac{d w_i}{dt} = \partial_t w_i + \lambda_i \partial_x w_i = 0 \quad \text{along} \quad \frac{dx}{dt} = \lambda_i
\end{equation}
$$
記$\nabla w_i = (\partial_\rho w_i, \partial_u w_i)$,假設左矢滿足$\nabla w_i A = \lambda_i \nabla w_i$,計算出$\nabla w = (\pm \frac{c}{\rho}, 1)$,因此
$$
w = u \pm c\ln \rho
$$
略去常數得到隱式解。

穩恆流

現在考慮穩恆流的情況,考量$\partial_t \rho = 0$以及$\partial_t v = 0$,即
$$
\begin{pmatrix} u & \rho \\ \frac{c^2}{\rho} & u \end{pmatrix} \partial_x \begin{pmatrix} \rho \\ u \end{pmatrix} = 0
$$
第一個方程為流守恆,即
$$
\rho u = j
$$
帶入第二個方程得到
$$
u\partial_x u + c^2\partial_x \ln\rho = u\partial_x u + c^2\partial_x \ln\frac{j}{u} = 0
$$
得到$u = const$,密度也是一個常數,這也解釋了開頭的觀察。

密度波

由連續性方程得到
$$
\partial_{tt}\rho = -\partial_{tx}(\rho u)
$$
以及動量方程
$$
c^2\partial_{xx}\rho = -\partial_x(\rho\partial_t u + \rho u\partial_x u)
$$
因此
$$
(\partial_{tt} - c^2\partial_{xx})\rho = \partial_x[\rho\partial_t u + \rho u\partial_x u - \partial_t(\rho u)]
$$
若$\partial_t \rho$和$\partial_x u$均為小量,那麼將得到波動方程
$$
(\partial_{tt} - c^2\partial_{xx})\rho = 0
$$
該場景描述擁堵緩慢前進的車流中,當某一輛車挪動一小段距離,後面一輛車將跟進,從宏觀上產生疏密交替的波,這個波的速度正是$c$,也暗示方程存在行波解,就不做展開了。

後記

後續會補充其他算例。