一、概念
- 常微分与偏微分
之所以有这个区别,是因为在研究中发现单变量的微分方程和多变量的微分方程有相当大的区别,故区分单变量的微分方程叫做常微分方程。
- 线性,非线性
如果把常微分方程看做关于y及y的各阶导数(注意不含x)的多项式,那么线性常微分方程即y及y的各阶导数都是一次的。记 y ( n ) = x n y^{(n)}=x_n y(n)=xn,那么线性常微分方程跟 a 0 x 0 + a 1 x 1 + . . . + a n x n = c a_0x_0+a_1x_1+...+a_nx_n=c a0x0+a1x1+...+anxn=c是一样的形式。
- 齐次,非齐次
齐次可以参考我的另一篇文章,主要在多项式中,齐次就相当于没有自由项,这是个很爽的事情(没有自由项可以少考虑很多变化)。
在线性常微分方程中,非齐次总可以由齐次方程导出。
- 通解,特解
我们知道,导数相同的函数之间只差一个常数,所以只需要确定一个特定函数再加上一个独立常数就是一个通解了,那么n阶导数自然就是n个独立常数啦。
特解好理解。
- 初值问题,边值问题
只给了初值条件的微分方程叫做初值问题,边值问题同理。
那什么叫初值条件呢?(个人理解)意思就是一个变量只给出一个边界的条件,比如 y ( 1 ) y^{(1)} y(1)= x, 0 ≤ x ≤ l 0 ≤x≤ l 0≤x≤l,l是某常数。如果只给出的是x在0处是某某值,比如 y ∣ x = 0 = a , y ( 1 ) ∣ x = 0 = b y|_{x=0}{} =a,y^{(1)}|_{x=0}{} =b y∣x=0=a,y(1)∣x=0=b那就是初值问题,但是如果给出了x在0处是啥,在l处是啥,成了一个区间,比如 y ∣ x = 0 = a , y ∣ x = l = b y|_{x=0}{} =a,y|_{x=l}{} =b y∣x=0=a,y∣x=l=b,那就是边值问题了。
事实上,我们只会解初值问题(如果没去自学的话)。
二、思路综述
总体上是“一阶 → \rightarrow → 高阶 → \rightarrow → 线性方程组”,“线性常系数 → \to → 线性非常系数”,“线性 → \rightarrow → 非线性”,即从特殊到一般。
在一阶中,非常系数可以覆盖常系数,所以直接考察非常系数。
线性方程的解空间是线性空间,线性方程中,非齐次用齐次方程常数变易过去。
线性常系数可用欧拉法。
三、具体方程分析(阶数从低到高,从线性到非线性)
- 一阶线性方程的齐次: y ′ = P ( x ) y y'=P(x)y y′=P(x)y
变量分离方法解,但记忆可用 y = C e a x y = Ce^{ax} y=Ceax类比。
解: y = C e ∫ P ( x ) d x y = Ce^{\int P(x) dx} y=Ce∫P(x)dx。
- 一阶线性方程的非齐次: y ′ = P ( x ) y + Q ( x ) y'=P(x)y+Q(x) y′=P(x)y+Q(x)
解: y = e ∫ P ( x ) d x ( ∫ Q ( x ) e ∫ P ( x ) d x d x + C ˉ ) y = e^{\int P(x)dx}(\int{\frac{Q(x)}{e^{\int P(x)dx}}}dx+\bar C) y=e∫P(x)dx(∫e∫P(x)dxQ(x)dx+Cˉ)。
至于怎么记,先记 y ′ = P ( x ) y y'= P(x)y y′=P(x)y的解是 y = e ∫ P ( x ) d x y = e^{\int P(x)dx} y=e∫P(x)dx,再记 y = e ∫ P ( x ) d x ( ∫ C ′ ( t ) d x + C ˉ ) y = e^{\int P(x)dx}(\int{C'(t)}dx+\bar C) y=e∫P(x)dx(∫C′(t)dx+Cˉ),再记 C ′ ( t ) × e ∫ P ( x ) d x = Q ( x ) C'(t)\times e^{\int P(x) dx} = Q(x) C′(t)×e∫P(x)dx=Q(x)。
(1)伯努利方程: y ′ = P ( x ) y + Q ( x ) y n y' = P(x)y+Q(x)y^n y′=P(x)y+Q(x)yn
把 y n y^n yn除过去就好了,主要是看到了 y − n y^{-n} y−n 凑进去 d y dy dy刚好是 d ( y 1 − n ) d(y^{1-n}) d(y1−n)。
解法:凑 d ( y 1 − n ) d(y^{1-n}) d(y1−n)后原方程化为一阶非齐次线性方程。
- 变量分离方程: y ′ = f ( x ) g ( y ) y' = f(x)g(y) y′=f(x)g(y)
有两个变体:一个是齐次微分方程,一个是可以化为齐次微分方程的。
解法:变量分离,再两边积分
(1)齐次微分方程: y ′ = g ( x y ) y' = g(\cfrac{x}{y}) y′=g(yx)
这是因为发现令 u = x y u = \cfrac{x}{y} u=yx可以变成可分离变量微分方程,又比较常见就总结为一类了。
解法:令 u = x y u =\cfrac{x}{y} u=yx。
(2)可以化齐次微分方程: y ′ = f ( a 1 x + b 1 y + c 1 a 2 x + b 2 y + c 2 ) y' = f(\cfrac{a_1x+b_1y+c_1}{a_2x+b_2y+c_2}) y′=f(a2x+b2y+c2a1x+b1y+c1)
不需要记什么不同情形,分那么多类看得很难受,只需要看看怎么化成齐次微分方程了,然后发现,只要c为0就好了,然后想办法把c都变成0就好,也就是求两直线交点,然后把交点平移到原点,就可以得到两条过原点的直线,就没有c。
解法:求两条直线交点 ( α , β ) (\alpha, \beta) (α,β),做变换 X = x − α X = x-\alpha X=x−α, Y = y − β Y=y-\beta Y=y−β,可以化成 d Y d X = f ( a 1 X + b 1 Y a 2 X + b 2 Y ) = g ( X Y ) \cfrac{dY}{dX} = f(\cfrac{a_1X+b_1Y}{a_2X+b_2Y})=g(\cfrac{X}{Y}) dXdY=f(a2X+b2Ya1X+b1Y)=g(YX)。
- 一阶非齐次非线性微分方程: y ′ = f ( x , y ) y' = f(x,y) y′=f(x,y)
(1)恰当微分方程
和名字一样,非常“恰当”。
核心1:一般形式, M ( x , y ) d x + N ( x , y ) d y = 0 M(x,y)dx + N(x,y)dy = 0 M(x,y)dx+N(x,y)dy=0;
核心2:希望有一个u(x,y),使得 M ( x , y ) d x + N ( x , y ) d y = d u ( x , y ) = ∂ u ∂ x d x + ∂ u ∂ y d y = 0 M(x,y)dx + N(x,y)dy = du(x,y) = \cfrac{\partial{u}}{\partial{x}}dx +\cfrac{\partial{u}}{\partial{y}}dy = 0 M(x,y)dx+N(x,y)dy=du(x,y)=∂x∂udx+∂y∂udy=0,并且因此得到 u = c u =c u=c;
核心3:必要条件,根据连续求偏导次数无关,得到 ∂ M ∂ y = ∂ N ∂ x \cfrac{\partial{M}}{\partial{y} } = \cfrac{\partial{N}}{\partial{x} } ∂y∂M=∂x∂N。
解法:
- 硬解,我们知道 ∂ u ∂ x = M \cfrac{\partial{u}}{\partial{x}} = M ∂x∂u=M,那么M求对x的积分可以得到一个y的函数 ψ ( y ) ψ(y) ψ(y),然后 ∂ u ∂ y = N \cfrac{\partial{u}}{\partial{y}} = N ∂y∂u=N,求出 ψ ( y ) ψ(y) ψ(y)就好。
- 凑微分,这个不用讲。
- 曲线积分法,形式 M ( x , y ) d x + N ( x , y ) d y = 0 M(x,y)dx + N(x,y)dy = 0 M(x,y)dx+N(x,y)dy=0本来就是代表了线积分的微元,可根据线积分求出矢量 u ( x , y ) u(x,y) u(x,y)
(2)隐式微分方程: F ( x , y , y ′ ) = 0 F(x,y,y') =0 F(x,y,y′)=0
y ′ = f ( x , y ) y' = f(x,y) y′=f(x,y)用上述方法解,其余则不能。
解法:目的是分离出类似 y ′ = f ( x , y ) y' = f(x,y) y′=f(x,y)形式
- y = f ( x , y ′ ) y = f(x,y') y=f(x,y′),
令 y ′ = p y' = p y′=p , 那再左右对x求导,得 p = f x ′ + f p ′ p x ′ p = f'_x+f'_pp'_x p=fx′+fp′px′,左边就是p,右边就是x和p的一次微分方程。- x = f ( y , y ′ ) x = f(y,y') x=f(y,y′)
令 y ′ = p y' = p y′=p , 那再左右对y求导,得 1 p = f y ′ + f p p y ′ \cfrac{1}{p} = f'_y+f_pp'_y p1=fy′+fppy′,左边就是 1 p \cfrac{1}{p} p1,右边就是y和p的一次微分方程。- F ( x , y ′ ) = 0 F(x,y') = 0 F(x,y′)=0
令 y ′ = p y' = p y′=p,把 F ( x , p ) F(x,p) F(x,p)看做 x x x和 p p p满足的一条曲线,然后参数化 x = ψ ( t ) , p = φ ( t ) x = ψ(t),p = φ(t) x=ψ(t),p=φ(t)结果就有 d y = p d x dy = pdx dy=pdx,进而 d y = ψ ( t ) φ ′ ( t ) d t dy =ψ(t) φ'(t)dt dy=ψ(t)φ′(t)dt,进而积分就好。主要是这个参数化很不好找,一般是令 y ′ = t x y' = tx y′=tx ,然后带进去。- F ( y , y ′ ) = 0 F(y,y') =0 F(y,y′)=0
同 F ( x , y ′ ) F(x,y') F(x,y′) 。
- 高阶方程解的结构
线性齐次微分方程的解空间是一个线性空间,线性非齐次方程解空间可看做线性齐次方程解空间的一个“平移”。
- 高阶线性常系数方程的齐次: y ( n ) + a 1 ( x ) y n − 1 + . . . + a n y = 0 y^{(n)}+a_1(x)y^{n-1}+...+a_ny = 0 y(n)+a1(x)yn−1+...+any=0
明确一个事实,高阶常系数线性齐次方程是没有一般解的,我们只能求出特定的解,所以就是用我们之前说的,“猜”。
然后欧拉就敏锐了发现了一个问题,你现在要猜是吧,那如果我假设方程有 y = e λ x y = e^{λx} y=eλx这样的解,那么带进原方程,不就有 ( λ n + a 1 ( t ) λ n − 1 + . . . + a n ) e λ x = 0 (λ^n+a_1(t)λ^{n-1}+...+a_n )e^{λx}= 0 (λn+a1(t)λn−1+...+an)eλx=0,如果我能求λ,使得前面那一串系数为0,那么方程不就自然成立了吗?而且,很妙, λ n + a 1 ( x ) λ n − 1 + . . . + a n λ^n+a_1(x)λ^{n-1}+...+a_n λn+a1(x)λn−1+...+an 的形式就相当于在原方程中把 y 换成 λ,微分换成次方,更加妙的是,如果找到了n个不同的解(而且我们知道,n次方程必有n个根),那么通解不也就找到了吗?
所以,我们的任务是:
- 求解 λ n + a 1 ( x ) λ n − 1 + . . . + a n = 0 λ^n+a_1(x)λ^{n-1}+...+a_n = 0 λn+a1(x)λn−1+...+an=0.
- 要求解出n个
解法:
- 求解 λ n + a 1 ( x ) λ n − 1 + . . . + a n = 0 λ^n+a_1(x)λ^{n-1}+...+a_n = 0 λn+a1(x)λn−1+...+an=0。
- 求解出n个互不相同实根,那最好了,不用搞了。
- 有重根
来分析一下,k重根,那么由k重根定义知道,求k-1次导数, L ( 0 ) ( λ ) , L ( 1 ) ( λ ) , . . . , L ( k − 1 ) ( λ ) L^{(0)}(λ),L^{(1)}(λ),...,L^{(k-1)}(λ) L(0)(λ),L(1)(λ),...,L(k−1)(λ)都是0。
如果这个k重根是0会怎么样?这说明 a n = a n − 1 = . . . = a n − k + 1 a_n = a_{n-1} = ...=a_{n-k+1} an=an−1=...=an−k+1都是0!得到:
核心1:如果有为0的k重根,所要求解的方程的样子都是 y ( n ) + a 1 ( x ) y ( n − 1 ) + . . . + a n − k ( x ) y ( k ) = 0 y^{(n)}+a_1(x)y^{(n-1)}+...+a_{n-k}(x)y^{(k)}= 0 y(n)+a1(x)y(n−1)+...+an−k(x)y(k)=0,反之,这种形式的方程必有k重为0的根。
并且这种形式的方程很好解,令 y = x i y = x^i y=xi,只要i小于于k,求至少k次导数后肯定是0,所以 1 , x , . . . , x k − 1 1,x,...,x^{k-1} 1,x,...,xk−1都是方程的解。
核心2: 1 , x , . . . , x k − 1 1,x,...,x^{k-1} 1,x,...,xk−1都是 y ( n ) + a 1 ( x ) y ( n − 1 ) + . . . + a n − k ( x ) y ( k ) = 0 y^{(n)}+a_1(x)y^{(n-1)}+...+a_{n-k}(x)y^{(k)}= 0 y(n)+a1(x)y(n−1)+...+an−k(x)y(k)=0的解。
可是不一定k重根都为0呀,ok,我们想想,我们原来寻找的是 y = e λ x y = e^{λx} y=eλx形式的解,这个固然是找不到0重根,但如果 y = e ( λ − λ 1 ) x y = e^{(λ-λ_1)x} y=e(λ−λ1)x,那么我们就可以找到为0的k重根,我们带进去试,得到结论:做变换 y e − λ 1 x = z ye^{-λ_1x} = z ye−λ1x=z,方程仍是常系数,原方程变为 e λ 1 x ( z ( n ) + b 1 ( x ) z n − 1 + . . . + b n z ) = 0 e^{\lambda_1x}(z^{(n)}+b_1(x)z^{n-1}+...+b_nz) = 0 eλ1x(z(n)+b1(x)zn−1+...+bnz)=0,且其特征方程有为0的k重根,可以求得 z z z有解 1 , x , . . . , x k − 1 1,x,...,x^{k-1} 1,x,...,xk−1,所以得到如下结论:
核心3:做变换 y e − λ 1 x = z ye^{-λ_1x} = z ye−λ1x=z,方程仍是常系数,原方程变为 e λ 1 x ( z ( n ) + b 1 ( x ) z n − 1 + . . . + b n z ) = 0 e^{\lambda_1x}(z^{(n)}+b_1(x)z^{n-1}+...+b_nz) = 0 eλ1x(z(n)+b1(x)zn−1+...+bnz)=0且其特征方程有为0的k重根。
核心4:如果求出k重根 λ = λ 1 λ = λ_1 λ=λ1,那么对应k个解 e λ 1 x , x e λ 1 x , . . . , x k − 1 e λ 1 x e^{λ_1x},xe^{λ_1x},...,x^{k-1}e^{λ_1x} eλ1x,xeλ1x,...,xk−1eλ1x.- 特征方程有复根 λ = a + b i λ = a+bi λ=a+bi,并且 a i a_i ai都是实数
那么由实部,负部对应知道 λ = a − b i λ = a-bi λ=a−bi也是特征方程的解,即, y = e ( a + b i ) x y = e^{(a+bi)x} y=e(a+bi)x, y = e ( a − b i ) x y = e^{(a-bi)x} y=e(a−bi)x都是方程的解,由线性叠加原理知道 y = e a x c o s b x y = e^{ax}cosbx y=eaxcosbx, y = e a x s i n b x y = e^{ax}sinbx y=eaxsinbx是原方程的解,并且我们经常使用这两个解代替原来的解(由线性叠加原理,替换前后等价)
核心5:如果方程有复根 y = e ( a + b i ) x y = e^{(a+bi)x} y=e(a+bi)x, y = e ( a − b i ) x y = e^{(a-bi)x} y=e(a−bi)x,那么一般使用 y = e a x c o s b x y = e^{ax}cosbx y=eaxcosbx, x = e a x s i n b x x = e^{ax}sinbx x=eaxsinbx代替之- 特征方程有复重根
也是一模一样,对应k个解 e λ 1 , x e λ 1 , . . . , x k − 1 e λ 1 e^{λ_1},xe^{λ_1},...,x^{k-1}e^{λ_1} eλ1,xeλ1,...,xk−1eλ1,不过是应该用 y = e a x c o s b x y = e^{ax}cosbx y=eaxcosbx, y = e a x s i n b x y = e^{ax}sinbx y=eaxsinbx换掉 e λ 1 e^{λ_1} eλ1罢了。
- 高阶线性常系数方程的非齐次: y ( n ) + a 1 ( x ) y n − 1 + . . . + a n ( x ) y = f ( x ) y^{(n)}+a_1(x)y^{n-1}+...+a_n(x)y = f(x) y(n)+a1(x)yn−1+...+an(x)y=f(x).
主要就是“猜”,已经找到 y = e λ x y = e^{λx} y=eλx形式的齐次通解了,我们现在就想搞个特解。
假如 f ( x ) = e λ x ⋅ ( b 0 x m + b 1 x m − 1 + . . . + b m ) f(x) = e^{λx}\cdot (b_0x^m+b_1x^{m-1}+...+b_m) f(x)=eλx⋅(b0xm+b1xm−1+...+bm),啥形状的特解最有可能?搞个像的: y ˉ = e λ x ⋅ x k ⋅ ( B 0 x m + B 1 x m − 1 + . . . + B m ) \bar y = e^{λx}\cdot x^k\cdot (B_0x^m+B_1x^{m-1}+...+B_m) yˉ=eλx⋅xk⋅(B0xm+B1xm−1+...+Bm),k是特征方程根λ的重数。注意要乘 x k x^k xk。
假如 f ( x ) = e α x ⋅ [ A ( x ) c o s β x + B ( x ) s i n β x ] f(x) = e^{αx}\cdot[A(x)cosβx+B(x)sinβx] f(x)=eαx⋅[A(x)cosβx+B(x)sinβx],自然猜 y ˉ = e α x ⋅ x k ⋅ [ P ( x ) c o s β x + Q ( x ) s i n β x ] \bar y = e^{αx}\cdot x^k \cdot [P(x)cosβx+Q(x)sinβx] yˉ=eαx⋅xk⋅[P(x)cosβx+Q(x)sinβx],k是特征方程F(λ)=0的根α+iβ的重数。 P ( x ) P(x) P(x), Q ( x ) Q(x) Q(x)的次数均为 m a x ( A 次数 , B 次数 ) max(A次数,B次数) max(A次数,B次数)。
解法:
f ( x ) = e λ x ⋅ ( b 0 t m + b 1 x m − 1 + . . . + b m − 1 x + b m ) f(x) = e^{λx} \cdot (b_0t^m+b_1x^{m-1}+...+b_{m-1}x+b_m) f(x)=eλx⋅(b0tm+b1xm−1+...+bm−1x+bm),猜 y ˉ \bar y yˉ = e λ x ⋅ x k ⋅ ( B 0 x m + B 1 x m − 1 + . . . + B m − 1 x + B m ) e^{λx}\cdot x^k\cdot (B_0x^m+B_1x^{m-1}+...+B_{m-1}x+B_m) eλx⋅xk⋅(B0xm+B1xm−1+...+Bm−1x+Bm)。
f ( x ) = e α x ⋅ [ A ( x ) c o s β x + B ( x ) s i n β x ] f(x) = e^{αx} \cdot [A(x)cosβx+B(x)sinβx] f(x)=eαx⋅[A(x)cosβx+B(x)sinβx],猜 y ˉ = e α x ⋅ x k ⋅ [ P ( x ) c o s β x + Q ( x ) s i n β x ] \bar y = e^{αx}\cdot x^k \cdot [P(x)cosβx+Q(x)sinβx] yˉ=eαx⋅xk⋅[P(x)cosβx+Q(x)sinβx]。
- 高阶线性非常系数方程
(1)欧拉方程: x n y ( n ) + a 1 x n − 1 y n − 1 + a 2 x n − 2 y ( n − 2 ) + . . . + + a n − 1 x y ( 1 ) + a n y = f ( x ) x^ny^{(n)}+a_1x^{n-1}y^{n-1}+a_2x^{n-2}y^{(n-2)}+...++a_{n-1}xy^{(1)}+a_ny = f(x) xny(n)+a1xn−1yn−1+a2xn−2y(n−2)+...++an−1xy(1)+any=f(x)
又是欧拉搞出来的,他搞的都比较巧,需要观察到令 x = e t x = e^t x=et后, x y ( 1 ) = D y , x 2 y ( 2 ) = D ( D − 1 ) y , x 3 y ( 3 ) = D ( D − 1 ) ( D − 2 ) y xy^{(1)}=Dy,x^2y^{(2)}=D(D-1)y,x^3y^{(3)}=D(D-1)(D-2)y xy(1)=Dy,x2y(2)=D(D−1)y,x3y(3)=D(D−1)(D−2)y,其中D表示对t的求导算子,即 D = d d t D = \cfrac{d}{dt} D=dtd。
求解:
令 x = e t x = e^t x=et, x y ( n ) = D ( D − 1 ) ( D − 2 ) . . . ( D − n + 1 ) y xy^{(n)}=D(D-1)(D-2)...(D-n+1)y xy(n)=D(D−1)(D−2)...(D−n+1)y,用 ( D − 1 ) ( D − 2 ) . . . ( D − n + 1 ) y (D-1)(D-2)...(D-n+1)y (D−1)(D−2)...(D−n+1)y换掉原来的 x y ( n ) xy^{(n)} xy(n)。
(2)可以验证,高阶线性方程的齐次形式在已知方程某个非零特解的情况下可以降一阶(见王高雄《常微分方程》4.3.1)。
- 高阶非线性微分方程 F ( x , y , y ( 1 ) , y ( 2 ) , . . . , y ( n ) ) F(x,y,y^{(1)},y^{(2)},...,y^{(n)}) F(x,y,y(1),y(2),...,y(n))
就学了降阶法,直接观察就能看出来了。
解法:
F ( x , y ( k ) , . . . , y ( n ) ) F(x,y^{(k)},...,y^{(n)}) F(x,y(k),...,y(n)),即前k-1阶y导数没有,那么直接令 z = y ( k ) z = y^{(k)} z=y(k)。
F ( y , y ( 1 ) , . . . , y ( n ) ) F(y,y^{(1)},...,y^{(n)}) F(y,y(1),...,y(n)),即t没有,那么令 z = y ( 1 ) z = y^{(1)} z=y(1),把y看做新的自变量。