一. 车流模型
考虑在单车道的高速公路(笔直,无进出口)上的车流问题。设高速公路为x轴,车辆朝着x轴的正向行驶。 在t时刻,x点处的车流密度为 ρ ( x , t ) \rho(x,t) ρ(x,t)。这里为了简化问题,假设每辆车的长度是相同的,车流密度定义为一个车辆长度内的车辆数,所有的长度都用车辆长度为单位,那么显然 0 ≤ ρ ≤ 1 0\leq \rho \leq 1 0≤ρ≤1。 ρ = 0 \rho=0 ρ=0对应着没有车辆的情况,而 ρ = 1 \rho=1 ρ=1则对应着车头挨着车尾的拥堵路况。
t
1
t_1
t1时刻,
t
2
t_2
t2时刻区间
[
x
1
,
x
2
]
[x_1, x_2]
[x1,x2]内的车辆数分别为
n
(
t
1
)
=
∫
x
1
x
2
ρ
(
x
,
t
1
)
d
x
,
n
(
t
2
)
=
∫
x
1
x
2
ρ
(
x
,
t
2
)
d
x
,
n(t_1)=\int^{x_2}_{x_1}\rho(x,t_1)dx,n(t_2)=\int^{x_2}_{x_1}\rho(x,t_2)dx,
n(t1)=∫x1x2ρ(x,t1)dx,n(t2)=∫x1x2ρ(x,t2)dx,
在
t
1
t_1
t1到
t
2
t_2
t2的时间里,从
x
1
x_1
x1处进入的车辆减去从
x
2
x_2
x2处驶出的车辆数为
Δ
n
=
∫
t
1
t
2
(
ρ
u
)
(
x
1
,
t
)
−
(
ρ
u
)
(
x
2
,
t
)
d
t
\Delta n=\int^{t_2}_{t_1} (\rho u)(x_1,t)-(\rho u)(x_2,t)dt
Δn=∫t1t2(ρu)(x1,t)−(ρu)(x2,t)dt
根据车辆守恒,应有
∫
x
1
x
2
ρ
(
x
,
t
2
)
d
x
−
ρ
(
x
,
t
1
)
d
x
=
∫
t
1
t
2
(
ρ
u
)
(
x
1
,
t
)
−
(
ρ
u
)
(
x
2
,
t
)
d
t
\int^{x_2}_{x_1}\rho(x,t_2)dx-\rho(x,t_1)dx=\int^{t_2}_{t_1} (\rho u)(x_1,t)-(\rho u)(x_2,t)dt
∫x1x2ρ(x,t2)dx−ρ(x,t1)dx=∫t1t2(ρu)(x1,t)−(ρu)(x2,t)dt
令
x
2
−
x
1
=
Δ
x
→
0
x_2-x_1=\Delta x\rightarrow 0
x2−x1=Δx→0,
t
2
−
t
1
=
Δ
t
→
0
t_2-t_1=\Delta t\rightarrow 0
t2−t1=Δt→0,可以得到微分形式的守恒律方程
ρ
t
+
(
ρ
u
)
x
=
0
(0.1)
\rho_t+(\rho u)_x=0\tag{0.1}
ρt+(ρu)x=0(0.1)
称
ρ
u
\rho u
ρu为通量函数。
1. 线性问题
当交通不太繁忙的时候,每辆车可以按照该路段的最大行驶速度行驶,我们假设所有的车都按限速行驶,那么车辆的行驶速度只与
x
x
x有关,即
u
=
u
(
x
)
u=u(x)
u=u(x)。给定初始条件,此时方程(0.1)化简为一个线性问题
{
ρ
t
+
(
u
(
x
)
ρ
)
x
=
0
ρ
(
x
,
0
)
=
ρ
0
(
x
)
\left\{ \begin{aligned} &\rho_t+\left(u(x)\rho\right)_x=0\\ &\rho(x,0)=\rho_0(x) \end{aligned} \right.
{ρt+(u(x)ρ)x=0ρ(x,0)=ρ0(x)
1.1 常系数线性问题
如果在所考虑的路段,限速保持不变,即
u
u
u是常数的情况。这时我们的问题就变为最简单的常系数线性问题
{
ρ
t
+
u
ρ
x
=
0
ρ
(
x
,
0
)
=
ρ
0
(
x
)
\left\{ \begin{aligned} &\rho_t+u\rho_x=0\\ &\rho(x,0)=\rho_0(x) \end{aligned} \right.
{ρt+uρx=0ρ(x,0)=ρ0(x)
考虑特征线
X
(
t
)
X(t)
X(t),满足
X
′
(
t
)
=
u
X'(t)=u
X′(t)=u,则可得特征线为一条直线
X
(
t
)
=
u
t
+
X
(
0
)
=
u
t
+
x
0
X(t)=ut+X(0)=ut+x0
X(t)=ut+X(0)=ut+x0
事实上,对于线性问题,特征线即为车辆在
x
−
t
x-t
x−t平面上的行驶轨迹。
沿着特征线,
ρ
(
x
,
t
)
=
ρ
(
X
(
t
)
,
t
)
\rho(x,t)=\rho(X(t),t)
ρ(x,t)=ρ(X(t),t)
∂
ρ
(
X
(
t
)
,
t
)
∂
t
=
ρ
x
⋅
d
X
(
t
)
d
t
+
ρ
t
=
u
ρ
x
+
ρ
t
=
0
\frac{\partial \rho(X(t),t)}{\partial t}=\rho_x\cdot\frac{dX(t)}{dt}+\rho_t=u\rho_x+\rho_t=0
∂t∂ρ(X(t),t)=ρx⋅dtdX(t)+ρt=uρx+ρt=0
可以看到沿着特征线,
ρ
(
x
,
t
)
\rho(x,t)
ρ(x,t)是常数,即
ρ
(
x
,
t
)
=
ρ
(
x
0
,
0
)
=
ρ
0
(
x
−
u
t
)
\rho(x,t)=\rho(x_0, 0)=\rho_0(x-ut)
ρ(x,t)=ρ(x0,0)=ρ0(x−ut)
算例:取
u
=
1
u=1
u=1, 初始车辆密度如图1所示
ρ
0
(
x
)
=
{
0.37
,
x
<
0
0.1
,
x
>
0
(1.1)
\rho_0(x)=\left\{ \begin{aligned} &0.37, &x<0\\ &0.1, &x>0 \end{aligned} \right.\tag{1.1}
ρ0(x)={0.37,0.1,x<0x>0(1.1)
车辆的行驶轨迹是一条直线,如图2所示。在
t
=
20
t=20
t=20的时候,根据常系数方程解的形式,函数
ρ
(
x
,
20
)
\rho(x,20)
ρ(x,20)是
ρ
0
(
x
)
\rho_0(x)
ρ0(x)做了一个平移,正如图3所示。
1.2 变系数的线性问题
在现实中,不同的路段有不同的限速,所以
u
=
u
(
x
)
u=u(x)
u=u(x),此时
{
ρ
t
+
(
u
(
x
)
ρ
)
x
=
0
ρ
(
x
,
0
)
=
ρ
0
(
x
)
\left\{ \begin{aligned} &\rho_t+\left(u(x)\rho\right)_x=0\\ &\rho(x,0)=\rho_0(x) \end{aligned} \right.
{ρt+(u(x)ρ)x=0ρ(x,0)=ρ0(x)
由于
d
ρ
(
X
(
t
)
,
t
)
d
t
=
ρ
x
⋅
u
+
ρ
t
=
−
ρ
u
x
\frac{d \rho(X(t),t)}{dt}=\rho_x\cdot u+\rho_t=-\rho u_x
dtdρ(X(t),t)=ρx⋅u+ρt=−ρux
所以沿着特征线,
ρ
(
x
,
t
)
\rho(x,t)
ρ(x,t)不再一定是个常数。这使得解的情况变得复杂。我们来看一个例子。取初始时刻的车辆密度为(1,1)式,速度
u
u
u为一个简单的分片常数(间断函数)
u
(
x
)
=
{
2
,
x
<
0
1
,
x
>
0
u(x)=\left\{ \begin{aligned} 2,x<0\\ 1,x>0 \end{aligned} \right.
u(x)={2,x<01,x>0
可以求得到
t
=
20
t=20
t=20时刻车辆的行驶轨迹,以及解
ρ
(
x
,
20
)
\rho(x,20)
ρ(x,20)
2. 非线性问题
现在我们考虑更接近现实的问题。在实际生活中,我们的常识是,当车流量较大的时候,我们会适当地减慢行驶速度,所以实际上,车速是跟当前的车辆密度相关的,即可以假设
u
=
u
(
ρ
)
u=u(\rho)
u=u(ρ),不显式的依赖
x
x
x。此时的守恒律方程为
ρ
t
+
f
(
ρ
)
x
=
0
(2.1)
\rho_t+f(\rho)_x=0\tag{2.1}
ρt+f(ρ)x=0(2.1)
其中通量函数
f
(
ρ
)
=
ρ
u
(
ρ
)
f(\rho)=\rho u(\rho)
f(ρ)=ρu(ρ)。更进一步,可以给出
u
(
ρ
)
u(\rho)
u(ρ)的简单模型
u
(
ρ
)
=
u
m
a
x
(
1
−
ρ
)
u(\rho)=u_{max}(1-\rho)
u(ρ)=umax(1−ρ)
这个简单模型符合我们现实生活中的直观感受:当
ρ
=
0
\rho=0
ρ=0,即在没有车辆的路段,我们就以限速的速度行驶。当
ρ
=
1
\rho=1
ρ=1,即拥堵路段我们就只能停车等待。
对于非线性问题,我们依然可以通过特征线来研究解。当然,此时的特征线并不再是车辆在
x
−
t
x-t
x−t平面的行驶轨迹。下面我们来分析一下,现在假设
ρ
\rho
ρ,
f
(
ρ
)
f(\rho)
f(ρ)都是光滑函数,将(2.1)式化为拟线性的形式
ρ
t
+
f
′
(
ρ
)
ρ
x
=
0
\rho_t+f'(\rho)\rho_x=0
ρt+f′(ρ)ρx=0
考虑特征线
X
(
t
)
X(t)
X(t)满足
X
′
(
t
)
=
f
′
(
ρ
)
(2.2)
X'(t)=f'(\rho)\tag{2.2}
X′(t)=f′(ρ)(2.2)
则
X
(
t
)
=
f
′
(
ρ
)
t
+
x
0
X(t)=f'(\rho)t+x_0
X(t)=f′(ρ)t+x0. 沿着特征线
ρ
(
x
,
t
)
=
ρ
(
X
(
t
)
,
t
)
\rho(x,t)=\rho(X(t),t)
ρ(x,t)=ρ(X(t),t),且
d
ρ
(
X
(
t
)
,
t
)
d
t
=
ρ
x
⋅
X
′
(
t
)
+
ρ
t
=
ρ
x
f
′
(
ρ
)
+
ρ
t
=
0
\frac{d\rho(X(t),t)}{dt}=\rho_x\cdot X'(t)+\rho_t=\rho_xf'(\rho)+\rho_t=0
dtdρ(X(t),t)=ρx⋅X′(t)+ρt=ρxf′(ρ)+ρt=0
这说明,沿着特征线
ρ
\rho
ρ是常数。从而由(2.2)可以看到,在解
ρ
(
x
,
t
)
\rho(x,t)
ρ(x,t)还是光滑的前提下,非线性问题的特征线依然是一条直线。理论上我们可以根据特征线以及初值计算解:
ρ
(
x
,
t
)
=
ρ
0
(
x
0
)
\rho(x,t)=\rho_0(x_0)
ρ(x,t)=ρ0(x0)
其中
x
0
x_0
x0是方程
x
=
x
0
+
f
′
(
ρ
0
(
x
0
)
)
t
x=x_0+f'(\rho_0(x_0))t
x=x0+f′(ρ0(x0))t的解。可以要得到
x
0
x_0
x0需要求解一个非线性方程。这个非线性方程,在
t
t
t满足一定的时间内,即
0
≤
t
≤
T
b
0\leq t\leq T_b
0≤t≤Tb的情况下,解是唯一的。这个
T
b
T_b
Tb是“breaking time”,就是两条特征"相撞"的时间点,在这之后就会出现激波。我们还是通过例子来直观感受一下。
2.1 稀疏波例子
第一个例子是车辆在等红灯变成绿灯之后一小段时间内车辆密度的变化。给定初始值如下图所示。像这种初始值是分片常数的问题,被称作是Riemann问题。
通过计算可以得到
t
=
0
t=0
t=0到
t
=
18
t=18
t=18的车辆的行驶轨迹(下图)。
t
=
18
t=18
t=18时刻车辆密度如图。
这个问题的特征线如下图。可以看到,对于非线性问题,特征线与车辆在
x
−
t
x-t
x−t平面的行驶轨迹是不一样的。特征线具有下图这样结构的,我们称问题的解是一个稀疏波。正如我们所看到的,车辆密度沿着x正方向越来越稀疏。
2.2 激波例子
第二个例子是车辆在行驶过程中,前方交通灯变红,或者是前方是非常拥堵的路段。这个时候,可以给定初始值如下图所示。这里还需要假设车辆可以从限速瞬时减速到
0
0
0(当然这是不现实的,这里为了简化问题)。
通过计算可以得到
t
=
0
t=0
t=0到
t
=
36
t=36
t=36的车辆的行驶轨迹(下图)。
t
=
36
t=36
t=36时刻车辆密度如图。
通过分析特征线(下图所示),会发现在这个问题中,一定时间后两条特征线会相交。如果依照之前说过解沿着特征线是常数的结论,在特征线相交的交点处往回回溯,则该交点处的解有两个值。这显然是不符合实际的。这里的问题出在之前利用特征线求解的时候,是在假设解依然保持光滑的前提下。在这个例子中,两条特征线相交的交点处解是不光滑的,产生了间断。这个解被称为激波解。
二. 双曲守恒律
通过对以上车流模型的介绍,相信大家应该对双曲守恒律有了一个初步的感性认识。对一维的情形,双曲守恒律可以表达为以下的微分方程
q
t
+
f
(
q
)
x
=
0
q_t+f(q)_x=0
qt+f(q)x=0
其中
q
q
q为某守恒量,
f
(
q
)
f(q)
f(q)是通量函数。对于线性问题,我们可以通过分析特征线得到解。而对于非线性问题,根据初始值的不同,解的情况会复杂多样,包括出现稀疏波,激波。 这里也只是给出了一维的一些简单分析。对于髙维问题,守恒律方程为
q
t
+
∇
⋅
f
(
q
)
=
0
q_t+\nabla\cdot f(q)=0
qt+∇⋅f(q)=0
对于最简单的Riemann问题,解的情况就非常复杂了。
因为这个文章的目的是让大家对守恒律方程的解先有一个直观的认识,所以对于稀疏波以及激波特征线,自相似解,激波速度等这里并没有展开介绍。哦,还有,我一直没有介绍这里的“双曲”这个词。 这些都等下次再说吧,先讲到这里吧,洗洗睡了,实在是太困了~~
参考资料
- “Finite Volume Methods for Hyperbolic Problems”, Randall J. Leveque, Cambridge University Press, 2002