2.1 二阶线性方程的分类


2.1 二阶线性方程的分类

给方程画像的第一步是定性。第一章见过三大原型,本节把它们统一起来:任何一条二阶线性方程,只要看二阶项系数拼出的判别式符号,就能归入三个类型之一;变系数时类型还能随位置漂移,特里科米方程就是一条方程横跨两类的活标本。分类是全章后续讨论的地基——不先分型,连该配什么定解条件都无从谈起。

把二次型的眼镜戴上

二阶线性方程的一般形式在二维时写作

a·u_xx + 2b·u_xy + c·u_yy + 低阶项 = f。

只盯着二阶项:系数矩阵 M 满足 M = [a, b; b, c]。线性代数告诉我们,实对称矩阵只有三种惯性:两个特征值同正、同负(正定或负定),一个正一个负(不定),以及有零特征值(退化)。这三种惯性恰好对应三个类型:

惯性 判别式 类型 原型方程
正定或负定 b² − a·c 小于零 椭圆型 拉普拉斯方程(a=c=1, b=0)
半正定或半负定 b² − a·c 等于零 抛物型 热传导方程(u_t 视作 u_yy 时退化方向)
不定 b² − a·c 大于零 双曲型 波动方程(a=−c², c=1, b=0)

为什么二阶项说了算?高阶项系数在变量替换下表现温和,而二阶项的惯性在非退化线性变换下不变——这正是惯性定理的内容。换句话说,类型是方程在坐标变换下的内在属性,就像人的血型不因换衣服而改变。特征线理论从另一个角度抵达同一结论:把二阶主部因式分解,两族实特征曲线存在与否,等价于判别式的符号。双曲方程有两族实特征线(波动方程里就是 x ± c·t = 常数,第三章行波解沿它们跑),椭圆方程一族都没有(所以它没有"传播"概念),抛物方程恰好重合成一族(扩散的方向退化成了时间)。

💡 关键直觉:判断类型时永远只看二阶主部。一阶项、源项、低阶耦合项再复杂,都不改变类型——它们影响的是"病情轻重",不是"病类"。

常系数三例与变系数漂移

常系数情形判断是二选一的算术。波动方程 u_tt − c²u_xx = 0:把 t 当作 y,系数 a = −c²、c = 1、b = 0,判别式等于 c² 大于零,双曲。热传导方程在稳态极限里退化出拉普拉斯:u_xx + u_yy = 0,判别式等于 −1 小于零,椭圆。 Black-Scholes 方程(第六章)V_t + 0.5·σ²S²V_SS + rS·V_S − rV = 0,二阶主部只有 0.5σ²S²·V_SS,判别式恒等于零——它整体是抛物型的,正因为如此才可能化归为热传导方程做完整求解。

变系数情形,判别式是位置的函数,类型可以随区域漂移。特里科米方程 u_yy + y·u_xx = 0 的系数 a = y、c = 1,判别式等于 −y:上半平面 y 大于零是椭圆,下半平面 y 小于零是双曲,y 等于零是一条抛物退化线。这不是数学家的文字游戏:把它换成跨音速小扰动方程,y 换成流动方向坐标,椭圆区对应亚音速、双曲区对应超音速,退化线正是音速线。数值方法在跨越这条线时必须换策略,这是第六章与第七章应用案例里反复出现的难点。

图解:判别式与类型的分区地图

二阶方程判别式分区示意

二阶方程判别式分区示意

数值实验一:给特里科米方程画出类型地图

判别式是位置的函数时,"类型地图"值得亲手画一遍。下面的代码在网格上逐点计算 D,用颜色区分三类区域,并沿一条竖线扫描找到换型位置——理论上应在 y 等于零,算出来的正是它。

import numpy as np # 特里科米方程: u_yy + y*u_xx = 0 => a = y, b = 0, c = 1, D = b*b - a*c = -y y = np.linspace(-2, 2, 401) x = np.linspace(-1.5, 1.5, 301) X, Y = np.meshgrid(x, y) D = -Y # 判别式场 print("上半平面 y>0 的最大 D:", D[Y > 0].max()) # 应全部小于 0 -> 椭圆 print("下半平面 y<0 的最小 D:", D[Y < 0].min()) # 应全部大于 0 -> 双曲 # 沿 x = 0 竖线扫描,找出 D 变号的位置 col = D[:, len(x)//2] sign_change = np.where(np.diff(np.sign(col)) != 0)[0] print("换型位置 y 约为:", y[sign_change]) # 输出约为 0(误差为网格步长)

运行结果与理论完全对上:上半平面 D 恒负(椭圆区),下半平面 D 恒正(双曲区),换型位置落在 y = 0 附近一个网格步长之内。数值扫描把"变系数方程类型漂移"从一句话变成一张可检验的地图——这就是互证的最小单元。

数值实验二:特征线不是比喻,是曲线

双曲方程"信息沿特征线传播"也可以验证。波动方程的两族特征线是 x − c·t = 常数与 x + c·t = 常数。取一条三角形初始位移,用第一章提过的达朗贝尔公式算出 t 时刻的解,再检查波峰位置是否严格落在特征线上:

import numpy as np x = np.linspace(0, 10, 1001); c = 1.0 tri = np.where(np.abs(x - 5) < 0.5, 1 - np.abs(x - 5)/0.5, 0.0) # 三角脉冲 for t in [0.0, 2.0, 4.0]: # 初始速度为零的达朗贝尔解: 两个半幅脉冲分别沿两族特征线平移 u = 0.5*(np.interp(x - c*t, x, tri, left=0, right=0) + np.interp(x + c*t, x, tri, left=0, right=0)) peak = x[np.argmax(u)] print(f"t={t}: 右行波峰在 x={x[np.argmax(np.interp(x-c*t,x,tri,left=0,right=0))]:.2f}" f" 理论特征线位置 x = {5 + c*t:.2f}")

输出里波峰位置与 5 + c·t 的偏差只有网格步长量级:脉冲确实骑在特征线上走。椭圆方程做同样的实验会彻底失败——它没有特征线可骑,2.2 节会把这层差异讲成"性格"。

分类之外:退化、混合与混合型的代价

三件事容易漏。第一,退化不是边缘现象:热传导方程对时间是一阶的,把它放进二阶分类框架,抛物型的"抛物"正来自一个方向的退化;处理办法是把时间维单独对待,判别式只作用在空间变量上。第二,混合型问题的定解条件没有万能配方:椭圆区天然想配边值,双曲区却要初值,跨越退化线时两套条件如何缝合是自由边界问题研究了几十年的题目,工程上通常用全域双曲或全域椭圆格式近似后再修正。第三,高维情形判别式升级为系数矩阵的特征值符号——n 个特征值的符号组合给出 n+1 类,二维的直观图景仍成立,只是"特征锥"变成"特征锥面"。第七章的求解器选型表里,"先分型再选格式"是第一行。

⚠️ 常见坑:见到方程先扫一眼二阶项再下结论,最容易被非主部骗到。有混合导数项 2b·u_xy 时,判别式必须带 b——只看 a 和 c 是最高频的错法。

本节要点

  • 判别式定生死:D = b² − a·c 的三个符号对应椭圆、抛物、双曲,只由二阶主部决定;
  • 惯性定理背书:类型在坐标变换下不变,是方程的内在属性而非记号巧合;
  • 特征线视角:两族、并作一族、零族实特征线,分别对应三类,传播图景随之确定;
  • 变系数漂移:特里科米方程的分区地图可用十几行代码逐点验证,跨音速流是它的物理原型;
  • 混合型代价:定解条件没有万能配方,数值策略需要在区域内切换。

类型确定了,三类方程的行为差异具体长什么样?下一节把同一条初始数据分别交给三族方程演化,看"性格"如何决定结局。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U