二阶常系数线性微分方程第一次出现时,学生通常能跟着算。
比如写:
y′′−y′−2y=0
然后设
y=erx
代入,得到
r2−r−2=0.
麻烦在这里:一个关于函数的方程,为什么突然变成了一个关于数字 r 的二次方程?为什么试 erx 就够了?如果二次方程有重根,答案里为什么又多出一个 x?
这不是钻牛角尖。学生其实只是在追问一步:刚才到底发生了什么?
传统讲法很高效,尤其适合考试。遇到
ay′′+by′+cy=0
设 y=erx,代入,消掉 erx,得到 auxiliary equation:
ar2+br+c=0.
然后按 roots 的情况写 general solution。考试训练里,这套流程非常快。
但它绕过了一个问题:代入 y=erx 只是在检查指数函数能不能用。它还没解释,为什么答案不会漏。
老师心里知道这件事背后有理论保证,学生听到的却常常是“先这样设”。在学生那里,这一步就很像猜答案。
我会先把 auxiliary equation 当成一种速记。r2−r−2 背后记录的,是把二阶求导动作拆成两个一阶动作。
用
y′′−y′−2y=0
做主例子。先不要急着写 D。保留 dxd,因为这一步对学生很重要:
[(dxd)2−dxd−2]y=0.
这里的 (dxd)2 不是数字平方。它表示“先求导一次,再求导一次”。dxd 是一个动作,作用在函数上;两个这样的动作连在一起,就是二阶导数。
在常系数线性方程里,dxd 和常数可以组成这样的算子多项式。于是上面的算子可以像二次式一样因式分解:
(dxd)2−dxd−2=(dxd−2)(dxd+1).
所以原方程可以写成
(dxd−2)(dxd+1)y=0.
这一步比 auxiliary equation 多露出一层:原来的二阶动作,现在被拆成了两个连续的一阶动作。
设
u=(dxd+1)y=y′+y.
那么原方程变成
(dxd−2)u=0,
也就是
u′−2u=0.
这是学生已经熟悉的一阶方程。它的通解是
u=Ce2x.
现在回到 u=y′+y:
y′+y=Ce2x.
这又是一个一阶线性方程。用积分因子 ex:
exy′+exy=Ce3x,
所以
(exy)′=Ce3x.
积分得到
exy=Ae3x+B,
因此
y=Ae2x+Be−x.
这就是我们平时从辅助方程
r2−r−2=(r−2)(r+1)=0
直接写出的答案。区别在于,现在学生能看见中间那段被省略的路。
为什么这样不会漏解?因为我们没有只检查两个猜出来的函数。我们先完整解了
u′−2u=0,
得到所有可能的 u;再完整解了
y′+y=Ce2x,
得到所有可能的 y。每一步都是一阶方程的通解。二阶方程被拆成两个一阶方程后,解空间里的东西已经被顺序扫过一遍。
这也解释了为什么最后有两个任意常数。我们解了两次一阶方程,每次积分都留下一个常数。
现在再讲 y=erx,学生会更容易接受。
如果
y=erx,
那么
dxdy=ry,(dxd)2y=r2y.
也就是说,在指数函数这一类函数上,dxd 的作用效果像“乘以 r”。所以算子
(dxd)2−dxd−2
作用到 erx 上时,就对应
r2−r−2.
这就是 auxiliary equation 的来源。在指数函数上,求导这个动作确实退化成了乘一个常数。
但话要说准:代入 y=erx 只是在找指数型解。完整性来自刚才的算子因式分解和两个一阶通解。
课堂上不一定要讲“充分性”这个词,但可以把意思讲出来:刚才没有只猜两个答案,我们把原方程拆开后完整解了一遍。
重根是传统讲法最容易显得像规定的地方。
比如 auxiliary equation 有重根 r。课本常写:
y=C1erx+C2xerx.
学生问为什么要乘 x,很多讲义会说“为了找到第二个 linearly independent solution”。这句话对,但对 A-Level 学生通常不解渴。它解释了目的,没有解释来源。
从算子角度看,重根对应的是
(dxd−r)2y=0.
仍然设一个中间量:
u=(dxd−r)y=y′−ry.
那么先解
(dxd−r)u=0,
也就是
u′−ru=0.
所以
u=Cerx.
再回到
y′−ry=Cerx.
这一步不要跳。两边乘以 e−rx:
e−rxy′−re−rxy=C.
左边正好是
(e−rxy)′.
所以
(e−rxy)′=C.
积分:
e−rxy=Cx+B.
于是
y=(Cx+B)erx.
xerx 就这样出来了。第二次解一阶方程时,右边已经是 Cerx。乘上积分因子后,右边变成常数,积分给出 Cx。
这比直接背公式稳得多。学生至少知道,那个 x 不是为了凑第二个解硬塞进去的。
我会先把问题问窄:
“这个二阶方程能不能拆成两个一阶方程?”
然后写
y′′−y′−2y=0.
问一句:如果把求导看成一个动作,y′′ 是不是连续做两次这个动作?
接着写
[(dxd)2−dxd−2]y=0.
这里不用讲抽象理论。这个括号里的东西,是一个作用在 y 上的组合动作。
然后因式分解:
(dxd−2)(dxd+1)y=0.
设
u=(dxd+1)y.
先解
u′−2u=0.
再解
y′+y=Ce2x.
最后才回到辅助方程:
r2−r−2=0.
这个二次方程是在记录刚才的因式分解。r=2 和 r=−1 对应两个一阶算子 dxd−2 和 dxd+1。
这一步会多花几分钟。好处是,后面再写 auxiliary equation 时,学生知道自己省掉了什么,而不是只记住“这里要设 erx”。
我会少说“我们令 y=erx”。
这句话能做题,但太省略。学生看到的是一个猜测,老师心里想的是一套完整理论。两边不在同一层。
我也不太愿意把“它可以被证明是完整解”当作解释。对多数高中课堂来说,这句话只会告诉学生:这里有一段你现在不能问。
先用一个能因式分解的例子,把二阶方程拆成两个一阶方程。等学生看见“完整解”来自两次一阶通解,再把辅助方程作为快速记号拿出来。这样后面的表格才不会像凭空冒出来。
这篇文章只讨论常系数线性微分方程。
在这个范围内,由 dxd 和常数构成的算子多项式可以按熟悉的代数方式处理。常数和求导算子之间不会制造额外麻烦。
这不等于所有微分算子都能随便交换、随便因式分解。变系数方程、非线性方程、边界条件问题都会带来新的麻烦。A-Level 课堂里不用展开这些,但边界要说清楚。
这篇最适合让 AI 做的事,是查推导顺序。
我会把自己的草稿贴进去,让它只看两个问题:第一,从 (dxd−2)(dxd+1)y=0 到两个一阶方程,中间有没有偷步;第二,重根时从 (dxd−r)2y=0 推到 y=(Cx+B)erx,每一步是不是都能让高中学生跟上。
这个任务很窄,反而有用。让 AI 直接生成一节课,它很容易写成“先讲概念、再讲例题、最后总结”的模板。让它查一个推导哪里跳了,效果会稳定得多。