一阶线性方程与积分因子
上一章解可分离变量方程时,我们反复做一件事:把未知函数和自变量各自放到一边,再用链式法则解释为什么能够积分。可是真实模型不总肯配合这种分组。一个容器里的物质一边被持续加入,一边按现有数量流失,变化率就会同时含有“输入多少”和“已经有多少”两部分;如果输入还随时间改变,通常没法把它们拆成两个因子的乘积。
比如一个充分混合、体积保持不变的容器,每分钟流入的溶质数量逐渐减少,而流出带走溶质的速率与当前存量成正比。选定单位后,某个简化模型可以写成 y′+2y=e−t。这里 y′ 是存量变化率,2y 是流失率,e−t 是外部输入率。移项以后,右边是 e−t−2y,直接分离变量的办法就不顺手了。
我们不必因此放弃积分。换一个问题:能不能把左边那两个项,合成一个我们认识的导数? 本章的积分因子,就是为了这件事专门找出来的函数。理解了它的来历,后面的冷却、电路和输注模型会成为同一种计算在不同情境里的出现。
先认清“线性”,再决定从哪里求解
系数可以弯来绕去,未知函数要保持一次
本章要处理的标准形式是
y′+p(t)y=q(t).
这里的 p 和 q 都是已知函数。说它“线性”,看的是未知函数 y 和它的导数怎样出现:y 只出现一次幂,y′ 也只出现一次幂,两者不相乘,也没有把 y 放进平方、正弦、指数等运算里。
于是 y′+t2y=sint 是线性的,尽管系数 t2 和输入 的图像都不是直线。 不是线性的,因为未知函数被平方了; 也不属于本章的线性方程,因为导数前面的系数竟然依赖未知函数。后面一种形式有时能通过替换处理,但不能直接套用眼前的方法。
还有一个容易混淆的地方:方程里出现 et 没问题,出现 ey 才改变了它对未知函数的依赖方式。我们识别的是方程的结构,不是看见某种符号就贴标签。
更一般的线性写法是
a1(t)y′+a0(t)y=b
只有在 a1(t)=0 的地方,才能除以它,得到
p(t)=a1(t)a
例如 ty′+3y=t2 中,p(t) 不是 3。在 时,标准化后才有
y′+t3y=t.
积分因子由标准形式里的 p(t) 决定。第一步没除对,后面每一步都可能算得很整齐,却在解另一个方程。
解的区间也是答案的一部分
我们先约定在一个包含初始时刻 t0 的区间 I 上工作,并要求 p,q 在那里连续。对刚才的方程,初值若给在 t0=,自然先讨论 ;若给在 ,就先讨论 。不能把两边跨过 连成一个标准形式连续的区间。
这句话并不等于“原方程的每个解都绝对不能穿过 0”。原方程 ty′+3y=t2 在 0 仍然有意义,只是导数前面的系数变成了零,我们不能在那里进行刚才的除法。究竟能否延拓,必须回到原方程检查。稍后会算出,这个例子确实有一条特殊解可以穿过 ,其他一些解却会在靠近 时变得无界。
当右端 q 在整个研究区间上恒等于零时,方程叫齐次方程;只要 q 不是恒等于零,就是非齐次方程。这里的“恒等于零”很关键,q(t)=sint 虽然在许多时刻取零,仍然属于非齐次输入。在模型里,齐次方程常对应关闭输入以后,系统凭自身规律怎样变化。
一阶线性方程和可分离变量方程并不是互斥的类别。比如 y′+2y=6 既线性又可分离,任选一种方便的方法即可。学习新方法,是为了扩大能处理的范围,不必把旧方法忘掉。
积分因子是怎样倒推出来的
从 y′+p(t)y=q(t) 出发,如果直接积分,左边会出现 ∫p(t)y(t)dt。我们尚不知道 ,这个积分并没有让问题前进一步。现在先想清楚希望得到的结果:如果左边是一个乘积的导数,积分就会一次解决两个项。
找一个处处非零的函数 μ(t),把方程每一项都乘上它:
μy′+μpy=μq.
我们希望左边等于 (μy)′。乘积法则告诉我们,真正的乘积导数是
(μy)′=μy′+μ′y.
两边的 μy′ 已经一致,剩下只要让 μ′y 与 μpy 的系数匹配就行。为了让这个匹配对所有待求的 y 都有效,我们要求
μ′=p(t)μ.
看到这里,上一章的知识就接上来了:这正是一个可分离变量方程。我们寻找的是非零乘子,因此可以在求 μ 时除以 μ:
μμ′=p(t),ln∣μ∣=∫
取一个方便的原函数,就可以选
μ(t)=exp(∫p(t)dt).
指数函数始终为正,所以这个选择不会等于零,也就不会在乘法或最后的除法中丢掉原方程的解。μ≡0 虽然也满足我们写出的辅助方程,却会把原问题变成 0=0,当然不能当积分因子。
积分因子的公式是从“想凑成乘积导数”这个目标推出来的。 指数里为什么放 p 的积分,为什么不是负号,都可以回头用 μ′=pμ 检查。注意齐次解满足 y′=−py,它的指数才带负号。这两个函数做的事情不同,恰好互为倒数。
找到乘子以后,原方程变为
(μy)′=μq.
现在才真正可以直接积分:
μ(t)y(t)=∫μ(t)q(t)dt+C,
从而
y(t)=μ(t)1(∫μ(t)q(t)dt+
最后这个 C 必须保留,它记录不同初值选出的不同解。反过来,计算 μ 时不必保留原函数的积分常数。因为把原函数增加一个常数,只会把 μ 乘上某个正的常数;方程各项同时多出同一个倍数,除回去后,不会改变得到的解族。
还有一个实际好处:整个求解过程没有除以未知函数 y。解可以取零,也可以穿过零,我们都不需要另外排除它。这里仅要求作为工具的 μ 不为零,别把这件事和上一章除以 h(y) 时需要找回平衡解混在一起。
先展开想得到的乘积导数,再让系数匹配,就能找到积分因子;原方程的每一项都要乘上它。
把方法完整用一遍,再处理系数的断点
衰减输入与持续流失
回到开头的模型,先求出全部解,再使用初值:
y′+2y=e−t,y(0)=1.
方程已经标准化,p=2,所以积分因子为 μ=e2t。乘上以后,右边也必须一起乘:
e2ty′+2e2ty=et.
展开 (e2ty)′ 就能逐项确认左边确实匹配,于是
(e2ty)′=et,e2
除以 e2t,得到
y=e−t+Ce−2t.
现在才让初值出场。t=0 时,1=1+C,所以 C=0,这条初值解是 y=e。直接求导,,代回可得 ,初值也确实等于 。
这个初值碰巧把第二项消掉了,并不意味着一阶线性方程的通解不需要常数。若同样的输入和流失规律下,初始存量改为 3,就会得到
y=e−t+2e−2t.
它的导数是 −e−t−4e−2t,加上 2y 后,两个 e 项相消,仍然留下 。两个初值解的差恰好是 :随着时间过去,起点不同带来的影响越来越小。
变系数并不增加方法的种类
现在求
ty′+3y=t2,y(1)=1.
先在 (0,∞) 上除以 t,得到 y′+(3/t)y=t。积分因子是
μ=e3lnt=t3.
所以
(t3y)′=t4,t3y=
解为
y(t)=5t2+t3
代入 y(1)=1 得 C=4/5,因此
y(t)=5t2+5t
为检查答案,我们算出
y′=52t−5t
回到未经除法的原方程,ty′+3y 中的 t−3 项正好消去,其余是 2t。这既检查积分,也检查了最初的标准化。
如果研究负半轴,应从 ∫3/tdt=3ln∣t∣ 出发,得到正的积分因子 ∣t∣3。在这个固定区间上,t,两者只差一个非零常数倍,所以取 也能工作。关键在于区间内不经过零,而不在于积分因子一定要写成哪一种外观。
最后回看被除掉的点。刚求出的初值解含有 4/(5t3),靠近零时无界,不能连续穿过零。但通解中取 C=0 时,y=t2/5 在整个实数轴都可导,代入原方程在 也成立。
把初值直接放进积分,答案会更清楚
不定积分的写法方便算题,但我们还可以把初值从头带着走。对
y′+p(t)y=q(t),y(t0)=
在 p,q 连续、包含 t0 的区间上,选一个经过归一化的积分因子:
μ(t)=exp(∫t0tp(s)ds
积分变量 s 只是积分号内部使用的名字,外面的 t 是我们想求解的时刻。这个选择让 μ(t0)=1,初值处理会很干净。把 (μy) 从 积到 ,就有
μ(t)y(t)−y0=∫t
于是
y(t)=μ(t)1[y0
这里已经没有待定常数了。把 t=t0 代进去,积分区间长度为零,立刻得到 y(t0)=y0。当 在 左侧时,定积分按有向积分理解,公式仍然成立;不过一个从启动时刻开始的物理模型,通常只把 当作实际研究时间。
积分写不成初等函数,也已经解出来了
考虑一个损耗系数保持不变、外部输入先集中后减弱的数学模型:
y′+2y=e−t2,y(0)=
积分因子是 e2t,因此
y(t)=e−2t[2+∫0te
指数 2s−s2=1−(s−1)2,相应积分没有初等函数表达式。我们不需要编造一个原函数,也不必把这样的答案视为半成品。这个定积分对每个有限的 t 都给出确定数值,可以计算,可以画图,也可以验证。
令方括号里的整个函数为 H(t)。微积分基本定理给出 H′(t)=e2t−t2,于是
y′=−2e−2tH(t)+e
原方程和初值都验证了。后面学习数值方法时,我们会区分“有精确的积分表达式”和“需要近似数值”这两件事:它们可以同时成立。
输入在过去发生,影响在现在留下
把前面的初值公式重新整理,可以得到
y(t)=y0exp(−∫
先不要被双层积分吓住。第一项是初始状态经过系统自身变化后,还剩下多少影响。第二项里,q(s)ds 表示在时刻 s 附近的一小段时间加入的量;乘上后面的传播因子,是这份输入到时刻 t 时留下的影响。最后把各个时刻的贡献加起来。
在 p(t)=a>0 的常系数情形,这个含义尤其明白:
y(t)=y0e−a(t−t
较早进入的那一份,经历了更长时间的衰减;刚刚进入的那一份,衰减还很少。所以状态并不是把过去输入原封不动累加,而是带着系统自身的变化规律来累加。冷却中的温度跟随、电容的充电滞后,都可以从这里理解。
为什么所有初值的差异只占一项
特解加齐次解,不只是拆公式
假设 y1,y2 都满足同一个非齐次方程。把它们的方程相减,右端输入抵消:
(y1−y2)′+p(t)(
也就是说,同样输入下的两个解,它们的差满足没有输入的齐次方程。 齐次方程的解是
z(t)=Cexp(−∫p(t)dt).
固定一个非齐次解 yp,称为特解,其他任何解都只能与它相差这样的齐次项。因此通解为
y=yp+Cyh,y
反过来,把 yp+Cyh 代回原方程,齐次部分贡献零,特解部分贡献 q,也就证明这些函数全部是解。特解本身不唯一:往一个特解里加上齐次解,仍然得到另一个特解。我们通常选最方便计算、最容易解释的那个。
这还解释了初值为什么能选出唯一一条曲线。若两条解在 t0 的值相同,它们的差满足 z(t0)=0。传播因子不会为零,所以系数只能是 C=0,两条解在整个连续系数区间上相同。更一般的一阶方程是否也能保证唯一,我们会在后面专门讨论;这里已经能从公式直接看到答案。
只有会消失的部分才叫暂态
对一个持续按比例损耗、又被恒速补充的系统,选定单位后写成
y′+ay=b,a>0,y(0)=y
若存量不再改变,就必须有 ay=b。所以一个方便的特解是常数 ys=b/a,全部解为
y(t)=ab+(y0−
这里第二项确实趋于零,我们称它为暂态;第一项是长期保持的平衡值。暂态系数可以正,也可以负:初值高于平衡值,解从上方下降;低于平衡值,解从下方上升。如果一开始恰好在平衡值上,暂态从起点就是零。
偏差衰减到原来的 e−1≈36.8% 所需时间是 τ=1/a,叫时间常数。经过一个时间常数,只完成了大约 63.2% 的调整,并没有“已经达到稳态”。在理想公式里,非零初始偏差在有限时间内不会严格消失。
若 p 随时间变,判断初始差异能否消失,要看
exp(−∫t0tp(s)ds).
在方程对所有未来时刻都有定义的前提下,当 ∫t0tp(s)ds→+∞ 时,这个因子才趋于零。仅仅知道 还不够。例如 在 始终为正,但
∫0t(1+s)2ds
因此初始差异乘上的因子趋于 e−1,没有完全消失。相反,若 y′−y=1,通解是 y=;虽然 是平衡解,偏离它的部分会增长,不能叫作衰减暂态。
稳态也可能一直振荡
一个系统受到周期输入,长期留下的响应不一定是常数。为了把这个说法算清楚,考虑已选定无量纲变量的方程
y′+2y=3+sint.
输入有常数、正弦两部分,求导又会把正弦变成余弦,所以试着找
yp=D+Bsint+Gcost.
代回以后,常数系数为 2D,正弦系数为 2B−G,余弦系数为 B+2G。与右端逐一匹配:
2D=3,2B−G=1,B+2G=0.
由最后一式得 B=−2G,代入中间一式得 G=−1/5,于是 B=2/5,D=3/2。全部解是
y(t)=23+52
长期的周期响应为前面三项,它始终在变化,没有一个常数极限;但任意初值解与这条周期曲线之间的差会趋于零,因此称它为周期稳态响应。把周期部分写成 51sin(t−ϕ),其中 ,还能看见响应振幅减小、峰值相对输入延后的现象。
“找到特解”和“识别稳态”是两步工作。特解是否反映长期规律,必须结合齐次项是否衰减、输入在未来怎样持续来判断,不能只看它位于通解的哪一边。
温度跟随环境:固定环境与变化环境
刚泡好的热水会降温,冰水也会慢慢升温。把这两种现象写在同一句话里,就是:温度变化的方向指向环境温度,变化快慢由温差决定。设物体内部温度可以近似看成均匀值,传热条件在研究时间内保持相近,并且环境温度是已知输入,我们使用
T′=−k(T−Ta(t)),k>0.
T 和 Ta 用相同温标,若时间以分钟计,k 的单位就是 min−1。这样左边与右边都是温度每分钟。负号可以用现象检查:当 ,导数为负;当 ,导数为正。
整理成 T′+kT=kTa(t),便是一阶线性方程。这里无需假设温差恒为正,也不需要除以温差;同一个解法同时包括冷却、升温,以及恰好处于环境温度的情况。
固定环境:先求解,再估计参数
设一个教学情境中,物体从 68∘C 开始,在恒定的 20∘C 环境中冷却;6 分钟后测得 44,并假设整个时段符合上述模型。积分因子为 ,所以
(ektT)′=20kekt,T=
由初温得到 C=48。再利用第二个温度条件:
44−20=48e−6k,e−6k=2
因此
k=6ln2 min−1,T(t)=
12 分钟后温差又减半,所以 T(12)=20+12=32∘C。如果问降到 26 需要多久,就是解 ,得到 分钟。连续减半的是相对环境的温差,不是摄氏温度本身。
环境也在升温时,分离变量不再顺手
现在设环境在某段时间内按 Ta(t)=20+t 升温,其中 t 以分钟计,斜率为每分钟 1∘C。取 ,物体初温为 。模型变成
T′+41T=5+4
乘上 et/4,右边的原函数可以这样检查:
dtd[et/4(t+16)]=
因此 T=t+16+Ce−t/4,初值得 C=4,所以
T(t)=t+16+4e−t/4.
物体和环境之间的温差是
Ta−T=4(1−e−t/4).
开始时两者同温,物体的初始变化率为零。随后环境走在前面,物体开始升温;如果把这个线性升温输入一直延续下去,温差趋于 4∘C。物体并不会在同一时刻完全追上环境,因为要保持每分钟升温 1∘C,方程要求保留 1/k=4 的温差。这是持续变化的输入造成的滞后。
实际环境若只在有限时段内近似线性升温,上面的计算也只用于那个时段。长期温差的讨论是在明确延续该输入的数学假设下进行的,不能把短时间的升温规律自动推广到永远。
电容充电与恒速输入:同一计算换了单位
RC 电路:电容电压为什么不会一下追上电源
把电阻与电容串联接到电源上。电容上存储的电荷越来越多,电容两端的电压也随之上升;电阻两端剩余的电压越来越少,电流就逐渐减小。这是“起初变化快,后来变化慢”的另一种具体故事。
假设电阻 R>0、电容 Ccap>0 都是常量,忽略其他元件效应。设电容上的电荷为 Q,电流为 i=,电容电压为 ,电源电压为 。按统一的回路方向写电压平衡:
Ri+v=E(t).
由于 Q=Ccapv,电流是 i=Ccapv,因此
RCcapv′+v=E(t),
也就是
v′+RCcap1
这里刻意给电容下标,避免与积分常数 C 混淆。若 R 用欧姆、电容用法拉,则 RCcap 的单位是秒;v′ 与右边两项的单位都是伏特每秒。电荷形式同样成立:,其中电荷用库仑。
设 R=2kΩ,Ccap=500μF,电源保持 6V,初始电容未充电。时间常数为
τ=RCcap=2000×500×10−6=
以秒计时,方程的数值形式是 v′+v=6,v(0)=0。乘上 et,得到 ,积分、除回并代初值可得
v(t)=6(1−e−t) V.
于是 v(1)≈3.79V,v(3)≈5.70V。电流也能由同一个解求出:
i(t)=20006−v(t)=0.003e−t A.
初始电流为 3 毫安,随后趋于零。电容电压趋近电源电压以后,电阻上几乎没有压降,电流自然很小。这比只记住一条指数充电曲线多解释了一层:曲线的弯曲来自回路中各部分彼此制约。
输注与清除:先写总量,再写浓度
若某种物质持续进入一个简化的一室系统,又按现有总量的固定比例被清除,新增量和清除量就会竞争。用它描述输注时,模型假设是物质迅速混合,等效分布体积 V 固定,输入速率 Rin 恒定,清除速率与当前总量成正比。这里只研究这种理想化数学结构。
先令 M(t) 表示总量,k>0 表示一阶清除速率常数。收支关系为
M′=Rin−kM.
若总量用毫克、时间用小时,则 Rin 的单位是毫克每小时,k 的单位是每小时。k 是比例速率常数;若另用“清除率”表示体积每时间的量 CL,两者关系应为 CL=,不能把单位不同的参数当成同一个东西。
浓度记为 c=M/V。因为这里 V 恒定,才有 M′=Vc′,从而
c′+kc=VRin.
右边的单位变成毫克每升每小时,与浓度导数匹配。乘上 ekt 并从 0 积到 t:
ektc(t)−c0=
因此
c(t)=cs+(c0−
这里的 cs 来自输入与清除平衡:Rin=kVcs,并非物质停止进入或停止离开。若初始量为零,可以用无量纲时间 和相对浓度 消掉具体尺度,得到 ,导数此时对 而言,其解为 。这与未充电电容的相对电压完全同形。
若输入在某时刻 t1 停止,之后应改用零输入方程,且把停止前已达到的浓度当作新初值:c(t)=c(t1)e。不能让原来的恒速输入公式一直算下去,因为模型右边已经变了。这些推导用于理解收支与衰减,不涉及实际给药方案。
留几道题,检查自己是否真的会用
做题时,不妨在写积分因子之前先说清三件事:对谁线性,在哪个区间,导数前面的系数是否已化成 1。算完再用原方程和初值各检查一次。
练习一:指数增长的齐次项
求 y′−3y=2et、y(0)=0 的解,并判断不同初值带来的差异会不会消失。
积分因子为 e−3t,两边乘上它,得到
(e−3ty)′=2e
练习二:区间与被标准化排除的点
求 ty′+2y=t3、y(1)=1 的解,说明包含初值的标准形式连续区间。通解中有没有能延拓到 的成员?
在 (0,∞) 上除以 t:y′+(2/t)y=t。积分因子为 ,所以
练习三:保留定积分也能验算
求 y′+2ty=1、y(0)=3 的精确积分表达式,并直接验证。
积分因子是 et2,故 (et2y)。从 积到 得
练习四:用温差判断冷却时间
在恒定 18∘C 的环境中,某物体初温为 74∘C,5 分钟后温度为 46。假设冷却模型适用,求温度函数与降到 所需时间。
方程为 T′+kT=18k。乘上 ekt 并积分,得到 T,初值得 。由 ,有 ,所以 。
练习五:从电压求电流
一个理想串联 RC 电路满足 R=4kΩ、Ccap=250μF,电源电压恒为 8V,电容初始电压为 。求电容电压、电流及时间常数。
时间常数为 RCcap=4000×250×10−6=1 秒。以秒计时,方程为 。积分因子 给出 ,再代 得
练习六:特解一定是稳态吗
方程 y′+y=cost 的一个周期特解是多少?若初值为 y(0)=0,求完整解。再说明 y 的特解 为什么不能让一般解趋近它。
设周期特解为 Bcost+Gsint,代回得到余弦系数 B+G=1、正弦系数 G−B=0,故 。通解是
做完这些题,我们已经有了两条把微分方程送回积分的路线:能分开变量时,用链式法则;对未知函数保持线性时,用积分因子凑出乘积导数。下一章会把同一个问题再推进一步:如果眼前的两个项原本就是某个二元函数的全微分,怎样把它认出来?如果方程表面上不线性,换一个未知量以后会不会变得线性?这些问题会把已有的方法连成一个更实用的一阶方程工具箱。