一根长度为 L L L 的金属杆,两端被恒温装置保持在不同温度。你手里有初始温度 f ( x ) f(x) f ( x ) ,还知道杆内部满足热方程。此时真正的问题不是“把一个公式套进去”,而是:哪些数据是在一开始给出的,哪些数据在整个演化过程中持续施加?杆的端点温度不为零时,怎样把它改造成已经熟悉的零边界问题?如果空间变成半无限或无穷大,分离变量还合适吗?
这一章把这些问题放在同一张地图上。你会看到,初值问题、边值问题和初边值问题并不是三种互不相干的题型;它们是在描述同一个未知函数时,给数据的位置不同。方法也不是按方程名称机械匹配,而要看时间是否参与、区域是否有限、边界是否能被本征函数吸收,以及你需要精确公式还是可计算近似。
先把数据放回它们的位置
设未知量是 u ( x , t ) u(x,t) u ( x , t ) 。在时间参与的模型里,初值通常写在 t = 0 t=0 t = 0 上,例如
u ( x , 0 ) = f ( x ) . u(x,0)=f(x). u ( x , 0 ) = f ( x ) .
它给出的是一整条空间切片:每个位置一开始的状态都被指定了。边界条件则写在空间区域的边缘。例如杆占据 0 < x < L 0<x<L 0 < x < L ,两端恒温就是
u ( 0 , t ) = a ( t ) , u ( L , t ) = b ( t ) . u(0,t)=a(t),\qquad u(L,t)=b(t). u ( 0 , t ) = a ( t ) , u ( L , t ) = b ( t ) .
这两条条件对每一个允许的 t t t 都成立。把 u ( x , 0 ) u(x,0) u ( x , 0 ) 误看成“左端点的条件”,或只在 t = 0 t=0 t = 0 检查端点温度,都会让后面的解从一开始就偏离题目。
数据落在什么地方,决定了问题的类型。稳态问题则是边值问题中的一种。
“边值”不等于“边界值全是数值”。边界上的导数也可以给出信息:u x ( 0 , t ) = 0 u_x(0,t)=0 u x ( 0 , t ) = 0 表示左端绝热,在一维模型里对应没有热流穿过端点。Dirichlet 条件给函数值,Neumann 条件给法向导数,Robin 条件给两者的线性关系。一端取 Dirichlet、另一端取 Neumann,也是一种常见的混合边界。此处先关注最适合展示拼装思想的 Dirichlet 条件。
图中的 g 0 ( t ) , g 1 ( t ) g_0(t),g_1(t) g 0 ( t ) , g 1 ( t ) 分别对应这里的 a ( t ) , b ( t ) a(t),b(t) a ( t ) , b ( t ) 。顶边 是观察时刻,不是另外指定一份终值;两个下角点则要同时满足初值与边界值。
区域的形状会改变可用工具
同一个热方程,在不同区域上会要求不同的表示方式。有限杆 0 < x < L 0<x<L 0 < x < L 有两个端点,正弦本征函数能够同时满足零 Dirichlet 条件,分离变量与 Fourier 级数很自然。半无限杆 x > 0 x>0 x > 0 只有一个有限端点,另一端用衰减、有界或远场条件约束,常会采用 Fourier 正弦/余弦变换、Laplace 变换或 Green 函数。整条实线 x ∈ R x\in\mathbb R x ∈ R 没有端点,Fourier 变换把空间微分变成波数上的乘法;如果只需要数值近似,则有限差分可以在截断区域上推进。
下面这张选择表不是一张“看见关键词就点击”的答案表。它告诉你每一种方法正在利用什么结构。
一阶输运:特征线携带初值
考虑
u t + c u x = 0 , c > 0 , u_t+c u_x=0,\qquad c>0, u t + c u x = 0 , c > 0 ,
定义曲线 x ( t ) x(t) x ( t ) ,使它的速度为 x ′ ( t ) = c x'(t)=c x ′ ( t ) = c 。沿曲线考察 u ( x ( t ) , t ) u(x(t),t) u ( x ( t ) , t ) ,链式法则给出
d d t u ( x ( t ) , t ) = u t + x ′ ( t ) u x = u t + c u x = 0. \frac{d}{dt}u(x(t),t)=u_t+x'(t)u_x=u_t+c u_x=0. d t d u ( x ( t ) , t ) = u t
所以 u u u 沿着 x − c t = 常数 x-ct=\text{常数} x − c t = 常数 保持不变。初始点 ( ξ , 0 ) (\xi,0) ( ξ , 0 ) 沿特征线走到 ( x , t ) (x,t) ( x , t ) 时满足 x = ξ + c t x=\xi+ct ,也就是 。因此
u ( x , t ) = f ( x − c t ) . u(x,t)=f(x-ct). u ( x , t ) = f ( x − c t ) .
这就是“初始形状以速度 c c c 向右平移”。在有限区间上,方向也很重要。c > 0 c>0 c > 0 时左端是入流边界;若要求所有正时间的解,就要给出从左端持续进入的数据。右端的值已经由内部传播决定,再任意给一个独立条件会造成过度约束。
回溯路径也可能先碰到入流边界
在 0 < x < L 0<x<L 0 < x < L 上给左端数据 u ( 0 , t ) = h ( t ) u(0,t)=h(t) u ( 0 , t ) = h ( t ) 。从目标点沿特征向过去走,可能先到 t = 0 t=0 t = 0 ,也可能先到 x = 0 x=0 。当 时,答案为
u ( x , t ) = { f ( x − c t ) , x ≥ c t , h ( t − x / c ) , x < c t . u(x,t)=\begin{cases}
f(x-ct),&x\ge ct,\\
h(t-x/c),&x<ct.
\end{cases} u ( x , t ) = { f ( x − c t ) , h ( t
第二个时间参数要自己算清楚:从左端走到 x x x 需要 x / c x/c x / c ,所以进入的时刻是当前时刻减去这段旅行时间。分界线上,两种公式的极限分别是 f ( 0 ) f(0) f ( 0 ) 与 h ( 0 ) h(0) h ( 0 ) ;要拼成连续解,必须有 f ( 0 ) = h ( 0 ) f(0)=h(0) f ( 0 ) = h ( 。若还要求跨过分界线的一阶导数连续,则需要
h ′ ( 0 ) = − c f ′ ( 0 ) , h'(0)=-cf'(0), h ′ ( 0 ) = − c f ′ ( 0 ) ,
因为初值一侧的 u t = − c f ′ ( x − c t ) u_t=-cf'(x-ct) u t = − c f ′ ( x − c t ) ,边界一侧的 u t = h ′ ( t − x / c ) u_t=h'(t-x/c) u 。值匹配只是第一层兼容条件。
当 c < 0 c<0 c < 0 时,入流端换成 x = L x=L x = L 。若那里给 u ( L , t ) = h ( t ) u(L,t)=h(t) u ( L , t ) = h ( t ) ,则初始脚点仍是 ξ = x − c t \xi=x-ct ξ = ; 时用 , 时用
h ( t − L − x ∣ c ∣ ) . h\left(t-\frac{L-x}{|c|}\right). h ( t − ∣ c ∣ L − x ) .
若 c = 0 c=0 c = 0 ,方程成为 u t = 0 u_t=0 u t = 0 ,每个位置保留自己的初值,并没有来自左右端的输运。
图中 c = 1 c=1 c = 1 ,同一时刻的两个目标点,回溯后取到了不同位置的数据。特征线投影在 ( x , t ) (x,t) ( x , t ) 平面上;对于这个无源输运方程,u u u 沿它保持常数,所以它也位于一个等值集合中。若沿途有源项使 u u u 改变,这个等值性质就不再成立。
把实验中的速度反向,观察入流端怎样交换。把入流初值改成与 f f f 的端点不一致时,图上会出现随特征传播的跳跃;这时只在分界线两侧分别使用公式,不能把它叫作跨线光滑的经典解。
完整例题 1:用特征线解决无穷域初值问题
求解
u t + 2 u x = 0 , − ∞ < x < ∞ , t > 0 , u_t+2u_x=0,\qquad -\infty<x<\infty,\quad t>0, u t + 2 u x = 0 , − ∞ < x <
并满足 u ( x , 0 ) = e − x 2 u(x,0)=e^{-x^2} u ( x , 0 ) = e − x 2 。说明结果如何体现信息传播。
方程是一阶输运型方程,系数 c = 2 c=2 c = 2 为常数,且数据给在整条初始线 t = 0 t=0 t = 0 上,因此特征线是比“在有限区间上硬套分离变量”更直接的工具。
令 x ( t ) = ξ + 2 ,其中 是特征线与初始线的交点。沿此曲线,链式法则给出 ,所以 。
1 对方程 u_t+3u_x=0,初值中的信息从哪一个方向传播?
A. 沿 x=3t+常数向右 B. 沿 x=-3t+常数向左 C. 只沿 t=0 停留 D. 向两个方向同时传播
有限区间:分离变量先服务于边界
以齐次热方程为例,设
u t = κ u x x , 0 < x < L , u_t=\kappa u_{xx},\qquad 0<x<L, u t = κ u xx , 0 < x < L ,
并且 u ( 0 , t ) = u ( L , t ) = 0 u(0,t)=u(L,t)=0 u ( 0 , t ) = u ( L , t ) = 0 。设 u = X ( x ) T ( t ) u=X(x)T(t) u = X ( x ) T ( t ) ,代回方程得到
X ( x ) T ′ ( t ) = κ X ′ ′ ( x ) T ( t ) . X(x)T'(t)=\kappa X''(x)T(t). X ( x ) T ′ ( t ) = κ X ′′ ( x ) T ( t ) .
在 X , T X,T X , T 不为零的地方,两边分别除以 κ X T \kappa XT κ X T ,左边只依赖 t t t ,右边只依赖 x x x ,因此它们必须等于同一个常数。沿用第 4 章的记号,将这个常数写成 − λ -\lambda − λ ;符号只是一种约定,哪些 λ \lambda λ 允许非零解仍要由边界条件算出:
T ′ κ T = X ′ ′ X = − λ . \frac{T'}{\kappa T}=\frac{X''}{X}=-\lambda. κ T T ′ = X X
于是
X ′ ′ + λ X = 0 , X ( 0 ) = X ( L ) = 0 ; T ′ + κ λ T = 0. X''+\lambda X=0,\quad X(0)=X(L)=0;
\qquad T'+\kappa\lambda T=0. X ′′ + λ X = 0 , X ( 0 ) = X ( L ) = 0 ;
空间问题有非零解的条件是
λ n = ( n π L ) 2 , X n ( x ) = sin n π x L , n = 1 , 2 , … \lambda_n=\left(\frac{n\pi}{L}\right)^2,\qquad X_n(x)=\sin\frac{n\pi x}{L},\qquad n=1,2,\ldots λ n = ( L nπ )
时间因子为 T n ( t ) = e − κ ( n π / L ) 2 t T_n(t)=e^{-\kappa(n\pi/L)^2t} T n ( t ) = e − κ ( nπ / L ) 2 t 。线性叠加给出
u ( x , t ) = ∑ n = 1 ∞ B n sin n π x L e − κ ( n π / L ) 2 t , u(x,t)=\sum_{n=1}^{\infty}B_n\sin\frac{n\pi x}{L}\,e^{-\kappa(n\pi/L)^2t}, u ( x , t ) = n = 1 ∑ ∞ B n
其中 B n B_n B n 由初值的 Fourier 正弦系数决定:
B n = 2 L ∫ 0 L f ( x ) sin n π x L d x . B_n=\frac{2}{L}\int_0^L f(x)\sin\frac{n\pi x}{L}\,dx. B n = L 2 ∫ 0
这里边界不是计算完成后才来检查的附加条件。正是 X ( 0 ) = X ( L ) = 0 X(0)=X(L)=0 X ( 0 ) = X ( L ) = 0 先筛出了正弦模态。热方程中的高频模态还带有更大的指数衰减率,所以细小起伏会更快消失。
非零端点的边界提升
分离变量最顺手的情形是零边界,但实际问题常给出 u ( 0 , t ) = a u(0,t)=a u ( 0 , t ) = a 、u ( L , t ) = b u(L,t)=b u ( L , t ) = b 。这时可以先造出一个只负责“托住端点”的函数,再把剩余部分交给零边界问题处理。这个动作叫 boundary lifting;在本章中我们只用最简单、最透明的线性提升:
g ( x ) = a + b − a L x . g(x)=a+\frac{b-a}{L}x. g ( x ) = a + L b − a x .
它满足
g ( 0 ) = a , g ( L ) = b , g t = 0 , g x x = 0. g(0)=a,\qquad g(L)=b,\qquad g_t=0,\qquad g_{xx}=0. g ( 0 ) = a , g ( L ) = b , g t = 0 , g
令
v ( x , t ) = u ( x , t ) − g ( x ) , u = v + g . v(x,t)=u(x,t)-g(x),\qquad u=v+g. v ( x , t ) = u ( x , t ) − g ( x ) , u = v + g .
如果原问题是
u t − κ u x x = q ( x , t ) , u_t-\kappa u_{xx}=q(x,t), u t − κ u xx = q ( x , t ) ,
则逐项代入,不跳过 g g g 的贡献:
u t − κ u x x = ( v t + g t ) − κ ( v x x + g x x ) = v t − κ v x x + g t − κ g x x . u_t-\kappa u_{xx}
=(v_t+g_t)-\kappa(v_{xx}+g_{xx})
=v_t-\kappa v_{xx}+g_t-\kappa g_{xx}. u t − κ u xx = (
因此一般地
v t − κ v x x = q − g t + κ g x x . v_t-\kappa v_{xx}=q-g_t+\kappa g_{xx}. v t − κ v xx = q − g
对于上面的线性、时间不变提升,g t = g x x = 0 g_t=g_{xx}=0 g t = g xx = 0 ,所以右端项保持为 q q q 。这句话有一个容易漏掉的前提:如果端点温度随时间变化,g g g 也必须随时间变化,右端项就会多出 ;如果选择的提升不是线性的,空间曲率也会通过 进入新方程。
边界条件则变成
v ( 0 , t ) = u ( 0 , t ) − g ( 0 ) = 0 , v ( L , t ) = u ( L , t ) − g ( L ) = 0. v(0,t)=u(0,t)-g(0)=0,\qquad v(L,t)=u(L,t)-g(L)=0. v ( 0 , t ) = u ( 0 , t ) − g ( 0 ) = 0 , v ( L , t )
初值不能原封不动地搬过去,而是
v ( x , 0 ) = u ( x , 0 ) − g ( x ) = f ( x ) − g ( x ) . v(x,0)=u(x,0)-g(x)=f(x)-g(x). v ( x , 0 ) = u ( x , 0 ) − g ( x ) = f ( x ) − g ( x ) .
所以边界提升完成了三件事:端点变成零,方程右端按上式变化,初值减去同一个提升函数。
这张图用 L = 1 L=1 L = 1 、端点温度 2 , 4 2,4 2 , 4 展示同一个减法:原剖面减去连接端点的直线,余量的两端就变成零。图中 s s s 就是本节的提升函数 g g g 。
完整例题 2:非零端点温度的完整拼装
在 0 < x < π 0<x<\pi 0 < x < π 上求解
u t = u x x , u ( 0 , t ) = 2 , u ( π , t ) = 5 , u_t=u_{xx},\qquad u(0,t)=2,\quad u(\pi,t)=5, u t = u xx , u ( 0 , t ) = 2 , u
并满足
u ( x , 0 ) = 2 + 3 x π + sin x . u(x,0)=2+\frac{3x}{\pi}+\sin x. u ( x , 0 ) = 2 + π 3 x + sin x .
端点数据是常数 a = 2 , b = 5 a=2,b=5 a = 2 , b = 5 ,因此选取线性提升
g ( x ) = 2 + 5 − 2 π x = 2 + 3 x π .
g(x)=2+\frac{5-2}{\pi}x=2+\frac{3x}{\pi}.
g ( x ) = 2
边界提升不是“把边界条件删掉”。它把边界信息编码进
g g g ,再把未知量改成端点为零的
v v v 。若你只写
v = u − g v=u-g v = u − g 却忘记把初值改成
f − g f-g f − ,得到的解通常会在
处错一整条函数。
2 若 g(x)=a+(b-a)x/L 且 a、b 为常数,把 u=v+g 代入 u_t-κu_xx=q 后,v 的右端项仍是 q。
端点持续变化时,右端多出来的是什么
设 a , b ∈ C 1 a,b\in C^1 a , b ∈ C 1 ,选取
g ( x , t ) = ( 1 − x L ) a ( t ) + x L b ( t ) . g(x,t)=\left(1-\frac xL\right)a(t)+\frac xL b(t). g ( x , t ) = ( 1 − L x ) a ( t ) +
这条直线每一刻都连接两个端点,但它本身也在运动:
g t = ( 1 − x L ) a ′ ( t ) + x L b ′ ( t ) , g x x = 0. g_t=\left(1-\frac xL\right)a'(t)+\frac xL b'(t),\qquad g_{xx}=0. g t = ( 1 − L x )
因此 v = u − g v=u-g v = u − g 满足
v t − κ v x x = q − ( 1 − x L ) a ′ ( t ) − x L b ′ ( t ) , v ( 0 , t ) = v ( L , t ) = 0 , v_t-\kappa v_{xx}=q-\left(1-\frac xL\right)a'(t)-\frac xL b'(t),
\quad v(0,t)=v(L,t)=0, v t − κ v xx =
初值为 f ( x ) − g ( x , 0 ) f(x)-g(x,0) f ( x ) − g ( x , 0 ) 。这里新增的项没有凭空制造物理热源;它记录的是我们选择的温度基线正在改变。
一个可直接验算的升温例子。 令 L = 1 , κ = 1 , q = 0 L=1,\kappa=1,q=0 L = 1 , κ = 1 , q = 0 ,两端都按 a ( t ) = b ( t ) = t a(t)=b(t)=t a ( t ) = b ( t ) = t 升温。此时 g = t ,新方程是 。选
w ( x ) = 1 2 x ( x − 1 ) , u ( x , t ) = t + w ( x ) . w(x)=\frac12x(x-1),\qquad
u(x,t)=t+w(x). w ( x ) = 2 1 x ( x − 1 ) , u ( x , t ) =
由于 w ( 0 ) = w ( 1 ) = 0 w(0)=w(1)=0 w ( 0 ) = w ( 1 ) = 0 、w ′ ′ = 1 w''=1 w ′′ = 1 ,这个 u u u 满足原热方程,两端也都等于 t t ;它对应的初值是 。内部起初低于端点,随后一起升温。若漏掉 ,就会错误地要求 ,连这个简单解也无法满足新方程。
源项、稳态与叠加
线性方程的叠加原则是拼装的另一根支柱。设算子
L [ w ] = w t − κ w x x . \mathcal L[w]=w_t-\kappa w_{xx}. L [ w ] = w t − κ w xx .
若 L [ u 1 ] = q 1 \mathcal L[u_1]=q_1 L [ u 1 ] = q 1 、L [ u 2 ] = q 2 \mathcal L[u_2]=q_2 L [ u 2 ,并且边界和初值都按同样方式相加,那么
L [ u 1 + u 2 ] = q 1 + q 2 . \mathcal L[u_1+u_2]=q_1+q_2. L [ u 1 + u 2 ] = q 1 +
因此可以把一个复杂问题拆成“初始扰动造成的响应”和“源项造成的响应”,分别求出后相加。若边界非齐次,先做 u = v + g u=v+g u = v + g ,再对齐次边界下的 v v v 使用叠加更清楚。
当源项 q = q ( x ) q=q(x) q = q ( x ) 不随时间变化时,还可以寻找稳态 w ( x ) w(x) w ( x ) ,令 w t = 0 w_t=0 w t = 0 ,于是
− κ w ′ ′ ( x ) = q ( x ) , w ( 0 ) = a , w ( L ) = b . -\kappa w''(x)=q(x),\qquad w(0)=a,\quad w(L)=b. − κ w ′′ ( x ) = q ( x ) , w ( 0 ) = a , w ( L ) =
若写 u = w + z u=w+z u = w + z ,则 z z z 满足齐次热方程和齐次边界条件,初值是 z ( x , 0 ) = f ( x ) − w ( x ) z(x,0)=f(x)-w(x) z ( x , 0 ) = f ( x ) − w ( x 。这和单纯使用线性提升的关系是:线性提升直接消除端点值,但若 ,它未必消除源项;稳态 同时承担边界与恒定源项,通常更快显出长时间行为。
源项如何进入每一个模态
把提升后的右端记为 F = q − g t + κ g x x F=q-g_t+\kappa g_{xx} F = q − g t + κ g xx 。设
v ( x , t ) = ∑ n ≥ 1 y n ( t ) sin n π x L , F n ( t ) = 2 L ∫ 0 L F ( x , t ) sin n π x L d x . v(x,t)=\sum_{n\ge1}y_n(t)\sin\frac{n\pi x}{L},\qquad
F_n(t)=\frac2L\int_0^L F(x,t)\sin\frac{n\pi x}{L}\,dx. v ( x , t ) = n ≥ 1 ∑ y
空间正交性把方程拆成
y n ′ + λ n y n = F n ( t ) , λ n = κ ( n π L ) 2 . y_n'+\lambda_n y_n=F_n(t),\qquad
\lambda_n=\kappa\left(\frac{n\pi}{L}\right)^2. y n ′ + λ n y n
此处 λ n \lambda_n λ n 表示时间衰减率,已经包含 κ \kappa κ 。乘以积分因子 e λ n t e^{\lambda_n t} e λ n t 后,左边成为 ( e λ n t 。从 积分到 ,得到
y n ( t ) = y n ( 0 ) e − λ n t + ∫ 0 t e − λ n ( t − s ) F n ( s ) d s . y_n(t)=y_n(0)e^{-\lambda_n t}
+\int_0^t e^{-\lambda_n(t-s)}F_n(s)\,ds. y n ( t ) = y n ( 0 ) e
初始扰动从 0 0 0 时刻就开始衰减;在时刻 s s s 加入的那部分源,只经历 t − s t-s t − s 这么长的扩散。这就是 Duhamel 原理在每个模态上的形式。它也说明为什么不能简单地把持续源的响应写成 t F ( x ) tF(x) tF ( x ) :输入发生的同时,扩散仍在进行。
有限模态时,上述推导只涉及有限和,可以直接逐项验算。一般无限展开需要解释解的意义。一组足够具体的条件是:在考察的 0 ≤ t ≤ T 0\le t\le T 0 ≤ t ≤ T 上,令 k n = n π / L k_n=n\pi/L k n = nπ / L ,若
∑ n ≥ 1 k n 2 ∣ y n ( 0 ) ∣ < ∞ , ∑ n ≥ 1 sup 0 ≤ s ≤ T ∣ F n ( s ) ∣ < ∞ , \sum_{n\ge1}k_n^2|y_n(0)|<\infty,\qquad
\sum_{n\ge1}\sup_{0\le s\le T}|F_n(s)|<\infty, n ≥ 1 ∑ k n 2 ∣ y
且每个 F n F_n F n 连续,则
k n 2 ∣ y n ( t ) ∣ ≤ k n 2 ∣ y n ( 0 ) ∣ + 1 κ sup 0 ≤ s ≤ T ∣ F n ( s ) ∣ . k_n^2|y_n(t)|\le k_n^2|y_n(0)|
+\frac1\kappa\sup_{0\le s\le T}|F_n(s)|. k n 2 ∣ y n ( t ) ∣ ≤
因此二阶空间导数级数一致收敛;由 y n ′ = F n − κ k n 2 y n y_n'=F_n-\kappa k_n^2y_n y n ′ = F n − κ k n ,时间导数级数也一致收敛。结合第 7 章的展开识别,可以得到逐项满足方程的经典解。这些是充分条件,不是必要条件。前面的共同升温例子直接用多项式验算,不必为了套这组条件而强行展开常数源。
完整例题 3:恒定源并不产生无限增长。 在 0 < x < π 0<x<\pi 0 < x < π 上,令
u t = u x x + sin x , u ( 0 , t ) = u ( π , t ) = 0 , u ( x , 0 ) = 2 sin x . u_t=u_{xx}+\sin x,\qquad u(0,t)=u(\pi,t)=0,\qquad u(x,0)=2\sin x. u t = u xx + sin x ,
只需要第一模态 u = y ( t ) sin x u=y(t)\sin x u = y ( t ) sin x 。代回方程得 y ′ + y = 1 , y ( 0 ) = 2 y'+y=1,y(0)=2 y ′ + y = 1 , y ( 0 ) = ,所以
y ( t ) = 2 e − t + ∫ 0 t e − ( t − s ) d s = 1 + e − t . y(t)=2e^{-t}+\int_0^t e^{-(t-s)}ds=1+e^{-t}. y ( t ) = 2 e − t + ∫ 0 t e
检查 u t = − e − t sin x u_t=-e^{-t}\sin x u t = − e − t sin x ,而 u x x + sin x = − ( 1 + e − t ) sin x + sin x u_{xx}+\sin x=-(1+e^{-t})\sin x+\sin x u ,确实相等。长时间后趋于 ;内部输入与端点散热取得平衡。换用稳态分解也一样: ,初始余量 ,于是 。
在 t = ln 2 t=\ln2 t = ln 2 时,初值响应的振幅为 1 1 1 ,源响应的振幅为 1 / 2 1/2 1/2 ,相加得到 3 / 2 3/2 3/2 。这里相加的是同一个问题中不同数据的响应。
实验把两端的共同升温率记为 R R R ,并使用一族可精确验算的解。取 k = n π / L k=n\pi/L k = nπ / L 、λ = κ k 2 \lambda=\kappa k^2 λ = κ k 2 ,令
g = a 0 + b 0 − a 0 L x + R t , w = R 2 κ x ( x − L ) , y = A e − λ t + Q λ ( 1 − e − λ t ) . g=a_0+\frac{b_0-a_0}{L}x+Rt,\quad
w=\frac{R}{2\kappa}x(x-L),\quad
y=Ae^{-\lambda t}+\frac Q\lambda(1-e^{-\lambda t}). g = a 0 + L
则 u = g + w + y sin ( k x ) u=g+w+y\sin(kx) u = g + w + y sin ( k x ) 满足 u t − κ u x x = Q sin ( k x ) u_t-\kappa u_{xx}=Q\sin(kx) u t − ,而 的右端为 。注意初值也随参数变化,等于 。 时两端持续变化,不能再说温度趋于一个与时间无关的稳态。
兼容性失败并不只是“答案不好看”
在角点 ( 0 , 0 ) (0,0) ( 0 , 0 ) ,初值与边界数据必须描述同一个数。如果题目给出
u ( x , 0 ) = f ( x ) , u ( 0 , t ) = a , u(x,0)=f(x),\qquad u(0,t)=a, u ( x , 0 ) = f ( x ) , u ( 0 , t ) = a ,
那么要有一个在闭区域上连续的经典解,至少必须满足
f ( 0 ) = a . f(0)=a. f ( 0 ) = a .
如果 f ( 0 ) ≠ a f(0)\ne a f ( 0 ) = a ,则沿初始线靠近 ( 0 , 0 ) (0,0) ( 0 , 0 ) 得到的值趋向 f ( 0 ) f(0) f ( 0 ) ,沿左边界靠近同一点得到的值却恒为 a a a ,不可能存在同一个连续函数同时满足两者。此时仍可能在 t > 的区域内构造解,并让它在内部趋于初值;例如突然改变端点温度会产生很薄的早期边界层。不能把它当作普通的经典初边值问题直接验算。
更高阶的光滑性还会带来更高阶兼容条件。例如热方程 u t = κ u x x u_t=\kappa u_{xx} u t = κ u xx 配常数边界 u ( 0 , t ) = a u(0,t)=a u ( 0 , t ) = a 时,若希望在角点具有足够光滑性,边界上的 为零,于是方程要求对应的 也匹配为零。对于一般的 ,若 延伸到角点连续,则明确的一级兼容条件为
a ′ ( 0 ) = κ f ′ ′ ( 0 ) + q ( 0 , 0 ) , b ′ ( 0 ) = κ f ′ ′ ( L ) + q ( L , 0 ) . a'(0)=\kappa f''(0)+q(0,0),\qquad
b'(0)=\kappa f''(L)+q(L,0). a ′ ( 0 ) = κ f ′′ ( 0 ) +
这类条件要根据所要求的光滑程度逐级检查。若只要求 u u u 在闭区域连续、在 t > 0 t>0 t > 0 内经典可微,就不能把上述更强的角点导数条件也当作同样层次的必需条件。
无穷域与有限差分:精确表示和可计算近似
在整条实线上考虑
u t = κ u x x , u ( x , 0 ) = f ( x ) , x ∈ R . u_t=\kappa u_{xx},\qquad u(x,0)=f(x),\qquad x\in\mathbb R. u t = κ u xx , u ( x , 0 ) = f ( x
没有有限端点时,连续波数比离散模态更自然。为避免常数因子混淆,这里固定变换约定
f ^ ( k ) = ∫ R e − i k x f ( x ) d x , f ( x ) = 1 2 π ∫ R e i k x f ^ ( k ) d k . \widehat f(k)=\int_{\mathbb R}e^{-ikx}f(x)\,dx,\qquad
f(x)=\frac1{2\pi}\int_{\mathbb R}e^{ikx}\widehat f(k)\,dk. f ( k ) = ∫
我们先对光滑且自身和各阶导数都快速衰减的函数推导,保证积分、分部积分与换序合法。两次分部积分,边界项消失,给出 u x x ^ = − k 2 u ^ \widehat{u_{xx}}=-k^2\widehat u u xx = − k 2 u 。于是每个波数满足
∂ t u ^ = − κ k 2 u ^ , u ^ ( k , t ) = e − κ k 2 t f ^ ( k ) . \partial_t\widehat u=-\kappa k^2\widehat u,
\qquad \widehat u(k,t)=e^{-\kappa k^2t}\widehat f(k). ∂ t u = − κ k
不把逆变换的高斯积分当作黑箱。记
I ( z ) = ∫ R e − κ t k 2 e i k z d k . I(z)=\int_{\mathbb R}e^{-\kappa tk^2}e^{ikz}\,dk. I ( z ) = ∫ R e − κ t k 2 e
对 z z z 求导,利用 k e − κ t k 2 = − ( 2 κ t ) − 1 ∂ k e − κ t k 2 ke^{-\kappa tk^2}=-(2\kappa t)^{-1}\partial_ke^{-\kappa tk^2} k e − κ t k 2 = − ( 2 κ t ) 并分部积分,得到 。而高斯积分给 ,所以
I ( z ) 2 π = G ( z , t ) = 1 4 π κ t e − z 2 / ( 4 κ t ) . \frac{I(z)}{2\pi}=G(z,t)=\frac1{\sqrt{4\pi\kappa t}}
e^{-z^2/(4\kappa t)}. 2 π I ( z ) = G ( z , t ) =
将 f ^ \widehat f f 的定义代入逆变换并交换积分,就得到热核卷积
u ( x , t ) = ∫ R G ( x − ξ , t ) f ( ξ ) d ξ , t > 0. u(x,t)=\int_{\mathbb R}G(x-\xi,t)f(\xi)\,d\xi,\qquad t>0. u ( x , t ) = ∫ R G ( x − ξ , t ) f ( ξ ) d ξ
核满足 G t = κ G z z G_t=\kappa G_{zz} G t = κ G z z 、G > 0 G>0 G > 0 、∫ R G ( z , t ) d z = 1 \int_{\mathbb R}G(z,t)dz=1 。对于有界连续的 ,这个积分仍有定义;高斯及其导数可积,允许在 上把导数移进积分,所以它给出光滑的热方程解。
初值是以 t ↓ 0 t\downarrow0 t ↓ 0 的极限恢复的,不能直接在含 1 / t 1/\sqrt t 1/ t 的式子中代 t = 0 t=0 t = 0 。具体看
u ( x , t ) − f ( x ) = ∫ R G ( z , t ) [ f ( x − z ) − f ( x ) ] d z . u(x,t)-f(x)=\int_{\mathbb R}G(z,t)[f(x-z)-f(x)]\,dz. u ( x , t ) − f ( x ) = ∫ R G ( z , t ) [
在 ∣ z ∣ < δ |z|<\delta ∣ z ∣ < δ 内,由连续性把方括号控制得很小;外侧用 2 ∥ f ∥ ∞ 2\|f\|_\infty 2∥ f ∥ ∞ 乘高斯尾积分。换元 z = 4 κ t s z=\sqrt{4\kappa t}\,s z = 4 κ 后,尾积分从 积到无穷,随 趋零。这样便在每个连续点恢复 。若 一致连续,同一估计还能给一致的初值极限。全实线上的唯一性还要指定有界等增长类别,不能把任意在无穷远快速增长的解都混进来。
同一个高斯,两种演化。 令 f ( x ) = e − x 2 f(x)=e^{-x^2} f ( x ) = e − x 2 。对热核中的指数配方后,使用 ∫ e − a ( x − b ) 2 d x = π / a \int e^{-a(x-b)^2}dx=\sqrt{\pi/a} ∫ e − ,得到
u h e a t ( x , t ) = 1 1 + 4 κ t exp ( − x 2 1 + 4 κ t ) . u_{\rm heat}(x,t)=\frac1{\sqrt{1+4\kappa t}}
\exp\left(-\frac{x^2}{1+4\kappa t}\right). u heat ( x , t ) = 1 + 4 κ t
而速度 2 2 2 的输运解为 u t r a n s ( x , t ) = e − ( x − 2 t ) 2 u_{\rm trans}(x,t)=e^{-(x-2t)^2} u trans ( x , t ) = e − ( x − 2 t ) 。前者的中心不动,峰值下降、宽度增加;后者保持形状向右移动。两者的全线积分都是 ,但温度或浓度在空间上的分布不同。
若区域变为半无限 x > 0 x>0 x > 0 ,还要编码端点条件。将 f f f 奇延拓,再把全线积分拆成正负两半,可得零 Dirichlet 解
u D ( x , t ) = ∫ 0 ∞ [ G ( x − ξ , t ) − G ( x + ξ , t ) ] f ( ξ ) d ξ . u_D(x,t)=\int_0^\infty[G(x-\xi,t)-G(x+\xi,t)]f(\xi)\,d\xi. u D ( x , t ) = ∫ 0 ∞ [ G
在 x = 0 x=0 x = 0 ,两项由高斯的偶性抵消。用偶延拓则把减号换成加号,得到零 Neumann 解;对 x x x 求导后,两项由 G z G_z G z 的奇性抵消。若希望连到初始角点连续,Dirichlet 情况还要有 f ( 0 ) = 0 f(0)=0 f ( 0 ) = 0 。非零、随时间变化的半线边界需要另外加入边界响应,不能只换积分下限。本章只推导这两个齐次边界的镜像公式。
如果目标是得到一组可运行的数值,有限差分把 x j = j Δ x x_j=j\Delta x x j = j Δ x 、t n = n Δ t t_n=n\Delta t t n = n Δ t 放在规则网格上。对热方程使用前向时间、中心空间差分:
U j n + 1 − U j n Δ t = κ U j − 1 n − 2 U j n + U j + 1 n ( Δ x ) 2 . \frac{U_j^{n+1}-U_j^n}{\Delta t}
=\kappa\frac{U_{j-1}^n-2U_j^n+U_{j+1}^n}{(\Delta x)^2}. Δ t U j n + 1 − U
整理成推进公式,记
r = κ Δ t ( Δ x ) 2 , r=\frac{\kappa\Delta t}{(\Delta x)^2}, r = ( Δ x ) 2 κ Δ t ,
则
U j n + 1 = ( 1 − 2 r ) U j n + r U j − 1 n + r U j + 1 n . U_j^{n+1}=(1-2r)U_j^n+rU_{j-1}^n+rU_{j+1}^n. U j n + 1 = ( 1 − 2 r ) U j
当 0 ≤ r ≤ 1 2 0\le r\le\tfrac12 0 ≤ r ≤ 2 1 时,这一步是相邻三个值的非负加权平均,至少保留了热扩散“平滑、不凭空放大极值”的基本性格;标准一维显式格式的稳定性检查也给出同一个限制。边界值必须在每个时间层施加,而不是只在 n = 0 n=0 n = 0 设一次。若 r > 1 / 2 r>1/2 ,系数 为负,网格上的小误差可能被放大,出现振荡或爆炸,即使连续方程本身是稳定的,数值格式也可能不稳定。
三个输入值都来自上一层 n n n ,输出才位于 n + 1 n+1 n + 1 。实现时必须写入新的数组;若计算一个节点后立刻覆盖旧值,后续节点就会读到混合时间层,已经不再是这条显式公式。
平滑的曲线也可能掩盖不稳定
把网格误差中的一项写成 e j n = ρ n e i j θ e_j^n=\rho^n e^{ij\theta} e j n = ρ n e ij θ ,代入同一个更新式,得到
ρ = 1 − 2 r + r ( e i θ + e − i θ ) = 1 − 4 r sin 2 ( θ / 2 ) . \rho=1-2r+r(e^{i\theta}+e^{-i\theta})
=1-4r\sin^2(\theta/2). ρ = 1 − 2 r + r ( e i θ + e
当 0 ≤ r ≤ 1 / 2 0\le r\le1/2 0 ≤ r ≤ 1/2 时,所有 θ \theta θ 都满足 ∣ ρ ∣ ≤ 1 |\rho|\le1 ∣ ρ ∣ ≤ 1 。若 r = 0.6 r=0.6 r = 0.6 ,最高交替频率 θ = 给出 :每步变号,同时绝对值放大 倍。低频却可能仍然平稳,所以一条短时间内看起来光滑的曲线,不能证明整个格式稳定。
有限区间的零边界误差不是任意平面波,而是 sin ( m π j / M ) \sin(m\pi j/M) sin ( mπ j / M ) ,其中 M = L / Δ x M=L/\Delta x M = L /Δ x 、m = 1 , … , M − 1 m=1,\ldots,M-1 m = 1 , … , M − 1 。代回更新式同样得到
ρ m = 1 − 4 r sin 2 m π 2 M . \rho_m=1-4r\sin^2\frac{m\pi}{2M}. ρ m = 1 − 4 r sin 2 2 M mπ
最高模态的因子为 1 − 4 r cos 2 ( π / ( 2 M ) ) 1-4r\cos^2(\pi/(2M)) 1 − 4 r cos 2 ( π / ( 2 M )) 。固定 M M M 时,精确的非放大谱条件可略宽于 r ≤ 1 / 2 r\le1/2 r ≤ 1/2 ;但随着网格加密,允许的上界趋向 。本章使用的是不依赖 的标准充分稳定限制,它同时保证非负权重和保极值性质。不能把“超过限制”说成每一个初值、每一步都会立刻爆炸。
保持 r r r 不变,分别观察低频初值与带有很小高频扰动的初值。实验把节点数组真正向前推进,并与同一初边值问题的解析解比较。若只改变网格数却保留“最高网格频率”的扰动,初始函数本身也变了;检查网格加密是否收敛时,要切换到同一个光滑初值,并比较同一物理时刻。误差读数是节点上的最大误差,尚不是连续区间上所有位置的误差。
第 10 章会从 Taylor 展开继续推导精度,并比较显式与隐式格式。这里先建立最基本的判断:离散方程要忠实执行边界,数值曲线还要经得起稳定性与同一问题的误差比较。
练习:从识别到迁移
理解:识别数据和方法
练习 1 判断下面的问题类型,并说明每一类数据的位置:
u t = u x x , 0 < x < 1 , t > 0 ; u ( x , 0 ) = x ( 1 − x ) , u ( 0 , t ) = u ( 1 , t ) = 0. u_t=u_{xx},\quad 0<x<1,\ t>0;
\qquad u(x,0)=x(1-x),\qquad u(0,t)=u(1,t)=0. u t = u xx , 0 <
查看解答 这是一个初边值问题。u ( x , 0 ) = x ( 1 − x ) u(x,0)=x(1-x) u ( x , 0 ) = x ( 1 − x ) 是初值,给出整条杆在 t = 0 t=0 t = 0 时的温度;u ( 0 , t ) = u ( 1 , t ) = 0 u(0,t)=u(1,t)=0 u ( 0 , t ) 是空间边界条件,对每个 都成立。区域是有限区间,边界齐次,因此可以使用分离变量得到正弦 Fourier 级数。
练习 2 对每个情形选出更合适的首选方法,并写出一个必须检查的条件:
(a)u t + c u x = 0 u_t+cu_x=0 u t + c u x = 0 在整条实线上给初值;(b)u t = κ u x x u_t=\kappa u_{xx} u t 在 上给两端恒温;(c) 在整条实线上给局部初值;(d)复杂区域上的扩散过程只要求数值近似。
查看解答 (a)用特征线;检查初始数据曲线是否横穿特征方向,并由 x − c t x-ct x − c t 找回初始点。(b)用边界提升后分离变量,或在源项简单时先求稳态;检查 f ( 0 ) , f ( L ) f(0),f(L) f ( 0 ) , f ( L ) 是否与端点温度兼容。(c)用 Fourier 变换;检查 f f f 的衰减/可积性与变换约定。(d)用有限差分或其他数值离散;需检查网格如何表示区域、边界和具体离散算子的稳定性;r ≤ 1 / 2 r\le1/2 r ≤ 1/2 只适用于本章的一维均匀网格标准热格式,复杂区域不能照搬这个数字。
应用:执行边界提升
练习 3 设 0 < x < 2 0<x<2 0 < x < 2 ,u t = 4 u x x + sin ( π x / 2 ) u_t=4u_{xx}+\sin(\pi x/2) u t = 4 u xx + ,边界为 。用 ,写出 所满足的方程、边界条件和初值(初值 ),并判断数据是否允许一个在初始角点连续的解。
查看解答 因为 g t = 0 , g x x = 0 g_t=0,g_{xx}=0 g t = 0 , g xx = 0 ,所以右端项不改变:
v t = 4 v x x + sin ( π x / 2 ) .
v_t=4v_{xx}+\sin(\pi x/2).
练习 4 用标准显式有限差分格式计算一步。取 κ = 1 \kappa=1 κ = 1 、Δ x = 0.5 \Delta x=0.5 Δ x = 0.5 、Δ t = 0.05 \Delta t=0.05 Δ t = 0.05 ,某一时间层的三个连续节点值为 U j − 1 n = 2 , U j n = 1 , U j + 1 n = 4 U_{j-1}^n=2,U_j^n=1,U_{j+1}^n=4 U 。求 和 ,并判断这一步是否处在一维格式的稳定限制内。
查看解答 ( Δ x ) 2 = 0.25 (\Delta x)^2=0.25 ( Δ x ) 2 = 0.25 ,所以
r = 1 ⋅ 0.05 0.25 = 0.2.
r=\frac{1\cdot0.05}{0.25}=0.2.
r = 0.25 1 ⋅ 0.05 =
迁移:处理失败的兼容性并比较拼装方案
练习 5 考虑 u t = u x x u_t=u_{xx} u t = u xx ,0 < x < 1 0<x<1 0 < x < 1 ,t > 0 t>0 ,初值 ,边界 。有人说“直接用零边界的正弦级数就能得到闭区域上的经典解”。请指出这句话的问题,并给出最基本的兼容性检查。
查看解答 在角点 ( 0 , 0 ) (0,0) ( 0 , 0 ) ,初值沿 t = 0 t=0 t = 0 给出 u ( 0 , 0 ) = 0 u(0,0)=0 u ( 0 , 0 ) = 0 ,左边界却要求 u ( 0 , 0 ) = 1 u(0,0)=1 u ( 0 , 0 ) ,因此 。不存在同时在闭区域连续、又满足这两组数据的经典解。可以研究 的解及角点附近的边界层,但不能把它当作普通的连续初边值问题直接套零边界正弦展开;若要使用边界提升,还需接受提升后的初值在端点处也不匹配,并明确解的正则性范围。
练习 6 设 u t − u x x = q 1 ( x , t ) + q 2 ( x , t ) u_t-u_{xx}=q_1(x,t)+q_2(x,t) u t − u xx = q 1 ( x , ,边界和初值分别是两组数据之和。若 解决源项 的问题, 解决源项 的问题,说明为什么 解决总问题;再说明当边界非零时,边界提升应放在哪一步。
查看解答 令 L [ w ] = w t − w x x \mathcal L[w]=w_t-w_{xx} L [ w ] = w t − w xx 。线性性给出
L [ u 1 + u 2 ] = L [ u 1 ] + L [ u
练习 7 在 0 < x < 2 0<x<2 0 < x < 2 上求 u t + 2 u x = 0 u_t+2u_x=0 u t + 2 u x = 0 ,初值为 ,左端数据为 。分别求 与 ,并检查角点的一阶兼容性。
查看解答 第一个点的初始脚点为 3 / 2 − 2 ( 1 / 4 ) = 1 3/2-2(1/4)=1 3/2 − 2 ( 1/4 ) = 1 ,故值为 1 1 1 。第二个点回溯先碰到左端,进入时间为 1 − ( 1 / 2 ) / 2 = 3 / 4 1-(1/2)/2=3/4 1 − ( 1/2 ) /2 = 3/4 ,故值为 h ( 3 / 。两种公式实际上都给出 。 ,且 ,所以两边的一阶导数也能衔接。没有另行指定右端值;它由解给出 。
练习 8 在 0 < x < π 0<x<\pi 0 < x < π 上解 u t = u x x + e − 4 t sin 2 x u_t=u_{xx}+e^{-4t}\sin2x u t = u xx + ,两端为零,初值也为零。说明为什么源项与衰减率相同,并不会使积分公式失效。
查看解答 取 u = y ( t ) sin 2 x u=y(t)\sin2x u = y ( t ) sin 2 x ,得到 y ′ + 4 y = e − 4 t , y ( 0 ) = 0 y'+4y=e^{-4t},y(0)=0 y ′ + 4 y = e 。积分因子给 ,所以 。也可直接在响应积分中计算 。因此 ;它先增后减,最终趋零。不能用分母含“两个衰减率之差”的简式后直接除以零。
练习 9 在 0 < x < L 0<x<L 0 < x < L 上令 u t = κ u x x u_t=\kappa u_{xx} u t = κ u xx ,两端都为 R t Rt 。找一个形如 的解,并写出它要求的初值。若初值改成处处为零,原来的公式还能用吗?
查看解答 代入得 R = κ w ′ ′ R=\kappa w'' R = κ w ′′ ,两端要求 w ( 0 ) = w ( L ) = 0 w(0)=w(L)=0 w ( 0 ) = w ( L ) = 0 。积分两次得到 w = R x ( x − L ) / ( 2 κ ) w=R x(x-L)/(2\kappa) ,所以该解对应的初值正是这条抛物线。初值改成零时,虽然端点仍兼容,也必须另加一个零边界的齐次热解,其初值为 ;直接沿用原公式会把整条内部初温弄错。
练习 10 M = 10 , r = 0.6 M=10,r=0.6 M = 10 , r = 0.6 时,最高零边界网格模态 sin ( 9 π j / 10 ) \sin(9\pi j/10) sin ( 9 π j /10 ) 每步的放大因子是多少?若只观察第一模态,为什么可能没有立即看见爆炸?
查看解答 最高模态有 ρ 9 = 1 − 2.4 cos 2 ( π / 20 ) ≈ − 1.34127 \rho_9=1-2.4\cos^2(\pi/20)\approx-1.34127 ρ 9 = 1 − 2.4 cos 2 ( π /20 ) ≈ − 1.34127 ,所以误差逐步变号、绝对值增长。第一模态的因子是 ρ 1 = 1 − 2.4 sin 2 ( π ,自身反而衰减。稳定性要控制所有可出现的误差方向;特定光滑初值暂时没有明显问题,不足以证明格式稳定。
练习 11 在半线上取零 Neumann 条件,并令 f ( x ) = 1 f(x)=1 f ( x ) = 1 。用镜像核公式证明 u ( x , t ) = 1 u(x,t)=1 u ( x , t ) = 1 。如果误用了 Dirichlet 镜像核,哪个边界检查会立即暴露错误?
查看解答 两个加号核的积分相加正好覆盖整条实线:∫ 0 ∞ [ G ( x − ξ , t ) + G ( x + ξ , t ) ] d ξ = 1 \int_0^\infty[G(x-\xi,t)+G(x+\xi,t)]d\xi=1 ∫ 0 ∞ [ G ( x − ξ , t ) + G ( x + ξ , t )] d ,因此常温保持不变,其端点导数为零。若使用减号核,先对 求导并在两个积分中分别换元,可得 ,因此
一张可复用的检查清单
面对新的初边值问题,可以沿着下面的顺序检查,但每一步都要问“为什么”。
写出区域:有限、半无限还是无穷;时间是否参与。
分开记录初值、边界条件和源项,并标注它们依赖的变量。
判断信息如何传播或耦合:一阶输运看特征线,扩散和波动看时间阶数与空间边界,稳态问题看整个边界。
若端点非零,构造 g g g ,核对 g g g 的边界值,再逐项计算 v = u − g v=u-g v = u − g 后的右端项与初值。
检查角点兼容性;若失败,说明经典解的范围,不把角点矛盾藏在级数里。
最后才选精确展开或数值格式,并检查 Fourier 模态、变换衰减、网格步长和边界的合理性。
你会发现,“方法选择”并不是解题之外的附加判断。它决定了数据从哪里进入解、哪些条件能被自动满足,以及最后一个公式应该被怎样检查。