常微分方程求解方法
(1)初值问题(给某一点的函数值或者微分值)
1.初值问题(给某一点的函数值或者微分值)
- 问题类型:
d y d x = f ( x , y ) y ( x 0 ) = y 0 \frac{dy}{dx}=f(x,y)\\ ~~\\ y(x_0)=y_0 dxdy=f(x,y) y(x0)=y0 - 注意初值的个数不能少于阶数。
- 求解方法:
- 欧拉法
- 龙格库塔法
- 预测校正法
(2)边值问题(给定在一个区域的边界上的函数值或微分值)
- 问题类型:
d 2 y d x 2 = f ( x , y , d y d x ) y ( a ) = α , y ( b ) = β \frac{d^2y}{dx^2}=f(x,y,\frac{dy}{dx})\\ ~~\\ y(a)=\alpha,y(b)=\beta dx2d2y=f(x,y,dxdy) y(a)=α,y(b)=β
1.试射法
- 先猜初值,再使用迭代法寻找正确的初值。
- 一个例子:
d 2 y d x 2 = y y ( 0 ) = 0 , y ( 1 ) = 1 \frac{d^2y}{dx^2}=y\\ ~~\\ y(0)=0,y(1)=1 dx2d2y=y y(0)=0,y(1)=1
- 拆分: d y d x = y 1 d y 1 d x = y \frac{dy}{dx}=y_1\\ ~~\\ \frac{dy_1}{dx}=y dxdy=y1 dxdy1=y
- 注意这里仅有 y y y的初值,因此这里首先就要求解出 y 1 y_1 y1的初始,然后通过初值问题的解法就可以求解。
- 猜 y 1 ( 0 ) = 0 → y ( 1 ) = 0 y_1(0)=0\rightarrow y(1)=0 y1(0)=0→y(1)=0 不符合题设,猜 y 1 ( 0 ) = 0 → y ( 1 ) = 1.122532 y_1(0)=0\rightarrow y(1)=1.122532 y1(0)=0→y(1)=1.122532 不符合题设,最终可以求出当 y 1 ( 0 ) = 0.890843 y_1(0)=0.890843 y1(0)=0.890843 时 y ( 1 ) = 1 y(1)=1 y(1)=1。
2.有限差分法
- 核心:根据泰勒公式的思想进行直接的差分公式的替换 d 2 y d x 2 = y i + 1 − 2 y i + y i − 1 h 2 d y d x = y i + 1 − y i − 1 2 h \frac{d^2y}{dx^2}=\frac{y_{i+1}-2y_i+y_{i-1}}{h^2}\\ ~~\\ \frac{dy}{dx}=\frac{y_{i+1}-y_{i-1}}{2h} dx2d2y=h2yi+1−2yi+yi−1 dxdy=2hyi+1−yi−1
- 线性常微分方程
d 2 y d x 2 + P ( x ) d y d x + Q ( x ) y = R ( x ) y ( a ) = α , y ( b ) = β \frac{d^2y}{dx^2}+P(x)\frac{dy}{dx}+Q(x)y=R(x)\\ ~~\\ y(a)=\alpha,y(b)=\beta dx2d2y+P(x)dxdy+Q(x)y=R(x) y(a)=α,y(b)=β
- 在 x i x_i xi点处代入差分公式 y i + 1 − 2 y i + y i − 1 h 2 + P ( x i ) y i + 1 − y i − 1 2 h + Q ( x i ) y i = R ( x i ) \frac{y_{i+1}-2y_i+y_{i-1}}{h^2}+P(x_i)\frac{y_{i+1}-y_{i-1}}{2h}+Q(x_i)y_i=R(x_i) h2yi+1−2yi+yi−1+P(xi)2hyi+1−yi−1+Q(xi)yi=R(xi)
- 整理可得 ( 1 + h 2 P i ) y i + 1 + ( h 2 Q i − 2 ) y i + ( 1 − h 2 P i ) y i − 1 = h 2 R i (1+\frac{h}{2}P_i)y_{i+1}+(h^2Q_i-2)y_i+(1-\frac{h}{2}P_i)y_{i-1}=h^2R_i (1+2hPi)yi+1+(h2Qi−2)yi+(1−2hPi)yi−1=h2Ri
- 最后代入所有的点,得到一个线性方程组,然后通过线性方程组的求解可得。
- 注意 y ( a ) = α , y ( b ) = β y(a)=\alpha,y(b)=\beta y(a)=α,y(b)=β也是这个线性方程组方程的一部分,如果给出的是 d y d x ∣ x = a = α , d y d x ∣ x = b = β \frac{dy}{dx}|_{x=a}=\alpha,\frac{dy}{dx}|_{x=b}=\beta dxdy∣x=a=α,dxdy∣x=b=β就要通过对边界量求差分,将边界量引入到差分方程中,比如已知 x 4 x_4 x4和 x 0 x_0 x0处导数值,就要引入 x − 1 x_{-1} x−1和 x 5 x_5 x5。
