微分方程初值问题的数值解法,就是将一个连续的微分方程初值问题转化为一个离散的差分方程初值问题,然后通过解差分方程而获得其数值解。即:对自变量的一系列离散节点 x k ( k = 0 , 1 , 2 , ⋯ , n ⋯ ) x_k(k=0,1,2,\cdots,n\cdots) xk​(k=0,1,2,⋯,n⋯),计算出去精确解 y ( x k ) y(x_k) y(xk​)的近似值 y k ( k = 1 , 2 , ⋯ , n , ⋯ ) y_k(k=1,2,\cdots,n,\cdots) yk​(k=1,2,⋯,n,⋯),(其中 y 0 y_0 y0​是准确值)从而得到函数 y = y ( x ) y=y(x) y=y(x)的近似数值解 y k ( k = 1 , 2 , ⋯ , n , ⋯ ) y_k(k=1,2,\cdots,n,\cdots) yk​(k=1,2,⋯,n,⋯)

关于微分方程解的存在性与惟一性,有下面的定理:

定理1:对于一阶常微分方程初值问题:
{ y ′ ( x ) = f ( x , y ) x ∈ [ a , b ] y ( x 0 ) = y 0 (1) \begin{cases} y'(x)=f(x,y) \quad x\in[a,b] \\ y(x_0)=y_0 \end{cases} \tag{1} {y′(x)=f(x,y)x∈[a,b]y(x0​)=y0​​(1)
如果 f ( x , y ) f(x,y) f(x,y)对x连续,且关于y满足Lipschitz(李普希兹)条件,即存在常数 L > 0 L>0 L>0,使得
∣ f ( x , y 1 ) − f ( x , y 2 ) ∣ ≤ L ∣ y 1 − y 2 ∣ |f(x,y_1)-f(x,y_2)|\leq L|y_1-y_2| ∣f(x,y1​)−f(x,y2​)∣≤L∣y1​−y2​∣
对所有 x ∈ [ a , b ] x\in [a,b] x∈[a,b]以及任何实数 y 1 , y 2 y_1,y_2 y1​,y2​均成立,则初值问题在 [ a , b ] [a,b] [a,b]上有惟一解。

Euler(欧拉)方法

将微分方程(1)转化成差分方程,有几何方法、数值微分、数值积分和Taylor(泰勒)展开法等数值方法,这些方法将在推导微分方程的各种数值解法时得到具体运用。

1. 显示Euler格式

从导数的定义可知,当步长 h = x n + 1 − x n → 0 h=x_{n+1}-x_n \to 0 h=xn+1​−xn​→0时,有:
y ′ ( x ) = l i m Δ x → 0 Δ y Δ x = l i m Δ x → 0 f ( x + Δ x ) − f ( x ) Δ x ≅ y ( x n + 1 ) − y ( x n ) x n + 1 − x n (2) y'(x)=lim_{\Delta x\to 0}\frac{\Delta y}{\Delta x}=lim_{\Delta x\to 0}\frac{f(x+\Delta x)-f(x)}{\Delta x}\cong \frac{y(x_{n+1})-y(x_n)}{x_{n+1}-x_n} \tag{2} y′(x)=limΔx→0​ΔxΔy​=limΔx→0​Δxf(x+Δx)−f(x)​≅xn+1​−xn​y(xn+1​)−y(xn​)​(2)
(2)式右边是导数的近似差商表示。因此,如果向前差商、向后差商和中心差商分别代替微分方程(1)中的导数项 y ′ ( x ) y'(x) y′(x),则可相应地导出Euler方法的各种格式。

  1. 显示Euler格式

若用在 x n x_n xn​点的向前差商 y ( x n + 1 ) − y ( x n ) x n + 1 − x n \frac{y(x_{n+1})-y(x_n)}{x_{n+1}-x_n} xn+1​−xn​y(xn+1​)−y(xn​)​代替微分方程(1)的导数项 y ′ ( x n ) y'(x_n) y′(xn​),当 h = x n + 1 − x n h=x_{n+1}-x_n h=xn+1​−xn​很小时,则有:
y ( x n + 1 ) − y ( x n ) h = f ( x n , y ( x n ) ) \frac{y(x_{n+1})-y(x_n)}{h}=f(x_n,y(x_n)) hy(xn+1​)−y(xn​)​=f(xn​,y(xn​))
若将 y ( x n ) y(x_n) y(xn​)的近似值 y n y_n yn​代入上式右端,并将计算结果记为 y n + 1 y_{n+1} yn+1​,则有:
y n + 1 = y n + h f ( x n , y n ) ( n = 0 , 1 , 2 , ⋯ ) (3) y_{n+1}=y_n+hf(x_n,y_n) \quad (n=0,1,2,\cdots) \tag{3} yn+1​=yn​+hf(xn​,yn​)(n=0,1,2,⋯)(3)
这样就得到了 y ( x n + 1 ) y(x_{n+1}) y(xn+1​)的近似值 y n + 1 y_{n+1} yn+1​的递推格式,即所谓的显示Euler格式。

若给出初始条件 y ( x 0 ) = y 0 y(x_0)=y_0 y(x0​)=y0​,则按此(3)式可逐步算出 y 1 , y 2 , ⋯ , y_1,y_2,\cdots, y1​,y2​,⋯,即:
y 1 = y 0 + h y 0 ′ = y 0 + h f ( x 0 , y 0 ) y 2 = y 1 + h f ( x 1 , y 1 ) ⋯ y n = y n − 1 + h f ( x n − 1 , y n − 1 ) y_1=y_0+hy_0'=y_0+hf(x_0,y_0) \\ y_2=y_1+hf(x_1,y_1) \\ \cdots \\ y_n=y_{n-1}+hf(x_{n-1},y_{n-1}) y1​=y0​+hy0′​=y0​+hf(x0​,y0​)y2​=y1​+hf(x1​,y1​)⋯yn​=yn−1​+hf(xn−1​,yn−1​)
这样就得了函数 y = y ( x ) y=y(x) y=y(x)在离散节点的函数近似值。

显示Euler格式也可以用Taylor展开法得到。

将函数 y = y ( x ) y=y(x) y=y(x)在 x n + 1 x_{n+1} xn+1​点的值 y ( x n + 1 ) y(x_{n+1}) y(xn+1​)展开为关于 x n x_n xn​点的Taylor级数,即:
y ( x n + 1 ) = y ( x n ) + h y ′ ( x n ) + h 2 2 y ′ ′ ( ϵ ) x n < ϵ y(x_{n+1})=y(x_n)+hy'(x_n)+\frac{h^2}{2}y''(\epsilon) \quad x_n<\epsilon y(xn+1​)=y(xn​)+hy′(xn​)+2h2​y′′(ϵ)xn​<ϵ
略去余项,得:
y ( x n + 1 ) ≅ y ( x n ) + h y ′ ( x n ) = y ( x n ) + h f [ x n , y ( x n ) ] y(x_{n+1})\cong y(x_n)+hy'(x_n)=y(x_n)+hf[x_n,y(x_n)] y(xn+1​)≅y(xn​)+hy′(xn​)=y(xn​)+hf[xn​,y(xn​)]
y ( x n ) y(x_n) y(xn​)用近似值 y n y_n yn​代替,就得到 y ( x n + 1 ) y(x_{n+1}) y(xn+1​)的近似值 y n + 1 y_{n+1} yn+1​,即:
y n + 1 = y n + h f ( x n , y n ) y_{n+1}=y_n+hf(x_n,y_n) yn+1​=yn​+hf(xn​,yn​)
上面就是显示Euler格式。

  1. 显示Euler格式的截断误差

为了确定显示Euler格式的计算误差,先引入微分方程数值解法的整体截断误差和局部截断误差的概念。

定义1:以某种数值方法求解满足Lipschitz条件的微分方程(1)时,如果产生惟一的逼近序列 { y n } \{y_n\} {yn​},则称误差 E n = y ( x n ) − y n ( n = 0 , 1 , 2 , … , N ) E_n=y(x_n)-y_n(n=0,1,2,\dots,N) En​=y(xn​)−yn​(n=0,1,2,…,N)为该数值方法的整体截断误差。

定义2:在假设 y n y_n yn​是准确的即 y n = y ( x n ) y_n=y(x_n) yn​=y(xn​)前提下,称用某种数值方法计算 y n + 1 y_{n+1} yn+1​的误差 e n + 1 = y ( x n + 1 ) − y n + 1 e_{n+1}=y(x_{n+1})-y_{n+1} en+1​=y(xn+1​)−yn+1​为该数值方法在计算 y n + 1 y_{n+1} yn+1​时的局部截断误差。

定义3:若某种数值方法的局部截断误差为 O ( h p + 1 ) O(h^{p+1}) O(hp+1),则称该数值方法的阶数为p。

显示Euler公式产生的局部截断误差可以用Taylor级数分析。

假设 y n = y ( x n ) y_n=y(x_n) yn​=y(xn​),将函数 y = y ( x ) y=y(x) y=y(x)在 x n + 1 x_{n+1} xn+1​点的解析值 y ( x n + 1 ) y(x_{n+1}) y(xn+1​)展开为关于 x n x_n xn​点的Taylor级数:
y ( x n + 1 ) = y ( x n ) + h y ′ ( x n ) + h 2 2 y ′ ′ ( ϵ ) , x n < ϵ < x n + 1 y(x_{n+1})=y(x_n)+hy'(x_n)+\frac{h^2}{2}y''(\epsilon), \quad x_n<\epsilon<x_{n+1} y(xn+1​)=y(xn​)+hy′(xn​)+2h2​y′′(ϵ),xn​<ϵ<xn+1​

y n + 1 = y n + h f ( x n , y n ) = y ( x n ) + h f ( x n , y ( x n ) ) = y ( x n ) + h y n ′ y_{n+1}=y_n+hf(x_n,y_n)=y(x_n)+hf(x_n,y(x_n))=y(x_n)+hy_n' yn+1​=yn​+hf(xn​,yn​)=y(xn​)+hf(xn​,y(xn​))=y(xn​)+hyn′​
两式相减,得:
y ( x n + 1 ) − y n + 1 = h 2 2 y ′ ′ ( ϵ ) = O ( h 2 ) y(x_{n+1})-y_{n+1}=\frac{h^2}{2}y''(\epsilon)=O(h^2) y(xn+1​)−yn+1​=2h2​y′′(ϵ)=O(h2)
可见,显示Euler格式只有一阶精度,其局部截断误差与步长的平方成正比。显然局部截断误差随着计算步距h的减小而减小,但是h过小并不利于计算精度,因为步距减小之后,计算次数会增加,必然导致舍入误差的增加。当舍入误差不可忽视时,计算就可能出现不稳定现象或者出现结果发散现象。

  1. 显示Euler格式的几何意义

从几何上看, y ′ ( x ) = f ( x , y ) y'(x)=f(x,y) y′(x)=f(x,y)相当于在 x , y x,y x,y平面上规定了一个方向场。以 y ′ = ( x − y ) / 2 y'=(x-y)/2 y′=(x−y)/2为例,作出其矩形区域 R = { ( x , y ) : 0 ≤ x ≤ 5 , 0 ≤ y ≤ 4 } R=\{(x,y):0\leq x\leq 5,0\leq y\leq 4\} R={(x,y):0≤x≤5,0≤y≤4}的方向场。如下图所示,若果 y ( 0 ) = 1 y(0)=1 y(0)=1,则 y ( x ) = 3 e − x 2 − 2 + x y(x)=3e^{-\frac{x}{2}}-2+x y(x)=3e−2x​−2+x;如果 y ( 0 ) = 4 y(0)=4 y(0)=4,则 y ( x ) = 6 e − x 2 − 2 + x y(x)=6e^{-\frac{x}{2}}-2+x y(x)=6e−2x​−2+x。从图中可以看出,曲线在每一点的切线和方向场的方向相同。

可见,从点 ( x 0 , y 0 ) (x_0,y_0) (x0​,y0​)开始,用该点的斜率 f ( x 0 , y 0 ) f(x_0,y_0) f(x0​,y0​)和步长h可以得到点 ( x 1 , y 1 ) (x_1,y_1) (x1​,y1​),接着用点 ( x 1 , y 1 ) (x_1,y_1) (x1​,y1​)的斜率 f ( x 1 , y 1 ) f(x_1,y_1) f(x1​,y1​)和步长h可以得到点 ( x 2 , y 2 ) (x_2,y_2) (x2​,y2​),照此做下去,可以得到更多的点 ( x 3 , y 3 ) , ( x 4 , y 4 ) , ⋯ (x_3,y_3),(x_4,y_4),\cdots (x3​,y3​),(x4​,y4​),⋯。这些点组成了一条折线,它与解曲线并不重合(点 ( x 0 , y 0 ) (x_0,y_0) (x0​,y0​)除外),是解曲线的近似,如下图所示。

2. 隐式Euler格式

  1. 隐式Euler格式

若用在 x n + 1 x_{n+1} xn+1​点(不是在 x n x_n xn​点)的向后差商 y ( x n + 1 ) − y ( x n ) x n + 1 − x n \frac{y(x_{n+1})-y(x_n)}{x_{n+1}-x_n} xn+1​−xn​y(xn+1​)−y(xn​)​代替微分方程(1)的导数项 y ′ ( x n + 1 ) y'(x_{n+1}) y′(xn+1​),当 h = x n + 1 − x n h=x_{n+1}-x_n h=xn+1​−xn​很小时,则有:
y ( x n + 1 ) − y ( x n ) h = f ( x n + 1 , y ( x n + 1 ) ) \frac{y(x_{n+1})-y(x_n)}{h}=f(x_{n+1},y(x_{n+1})) \\ hy(xn+1​)−y(xn​)​=f(xn+1​,y(xn+1​))
这样可得:
y n + 1 = y n + h f ( x n + 1 , y n + 1 ) , ( n = 0 , 1 , 2 , ⋯ ) y_{n+1}=y_n+hf(x_{n+1},y_{n+1}), \quad (n=0,1,2,\cdots) yn+1​=yn​+hf(xn+1​,yn+1​),(n=0,1,2,⋯)
由于等式的两端都同时有 y n + 1 y_{n+1} yn+1​,故称为隐式Euler格式。

隐式Euler格式也只有一阶精度,但数值稳定性比显示Euler格式要好。通常采用迭代法(逐次代换法)来求解,使其逐步显示化。该方法的优点是:绝对稳定;如果解析解为正,则可以保证计算结果(数值解)也为正。

  1. 预报-校正法

如果导函数为 f ( x , y ) = φ ( x ) + y f(x,y)=\varphi(x)+y f(x,y)=φ(x)+y或 f ( x , y ) = y ⋅ φ ( x ) f(x,y)=y·\varphi(x) f(x,y)=y⋅φ(x)等形式时,则该微分方程的隐式Euler格式可以转化为显示Euler格式。即:
y n + 1 = y n + h f ( x n + 1 , y n + 1 ) = y n + h [ φ ( x n + 1 ) + y n + 1 ] y_{n+1}=y_n+hf(x_{n+1},y_{n+1})=y_n+h[\varphi(x_{n+1})+y_{n+1}] yn+1​=yn​+hf(xn+1​,yn+1​)=yn​+h[φ(xn+1​)+yn+1​]

y n + 1 = [ y n + h φ ( x n + 1 ) ] / ( 1 − h ) y_{n+1}=[y_n+h\varphi(x_{n+1})]/(1-h) yn+1​=[yn​+hφ(xn+1​)]/(1−h)

但在一般情况下,要应用隐式Euler格式,应该采用预报-校正法。即:

先用显示Euler格式预报 y n + 1 y_{n+1} yn+1​,得到近似值:
y ‾ n + 1 = y n + h f ( x n , y n ) ( n = 0 , 1 , 2 , ⋯ ) (4a) \overline y_{n+1}=y_n+hf(x_n,y_n) \quad (n=0,1,2,\cdots) \tag{4a} y​n+1​=yn​+hf(xn​,yn​)(n=0,1,2,⋯)(4a)
再用隐式Euler格式校正 y ‾ n + 1 \overline y_{n+1} y​n+1​,得到较为准确的值:
y n + 1 = y n + h f ( x n + 1 , y ‾ n + 1 ) ( n = 0 , 1 , 2 , ⋯ ) (4b) y_{n+1}=y_n+hf(x_{n+1},\overline y_{n+1}) \quad (n=0,1,2,\cdots) \tag{4b} yn+1​=yn​+hf(xn+1​,y​n+1​)(n=0,1,2,⋯)(4b)
(4)式称为预报-校正法。

3. 两步Euler格式

为了提高精度,改用在 x n x_n xn​点的中心差商 [ y ( x n + 1 ) − y ( x n − 1 ) ] / ( 2 h ) [y(x_{n+1})-y(x_{n-1})]/(2h) [y(xn+1​)−y(xn−1​)]/(2h)代替微分方程(1)即 y ′ ( x n ) = f ( x n , y ( x n ) ) y'(x_n)=f(x_n,y(x_n)) y′(xn​)=f(xn​,y(xn​))中的导数项,得:
y n + 1 = y n − 1 + 2 h f ( x n , y n ) ( n = 1 , 2 , ⋯ ) y_{n+1}=y_{n-1}+2hf(x_n,y_n) \quad (n=1,2,\cdots) yn+1​=yn−1​+2hf(xn​,yn​)(n=1,2,⋯)
这就是两步Euler格式。在计算 y n + 1 y_{n+1} yn+1​时,需要调用前两次的计算结果 y n − 1 y_{n-1} yn−1​和 y n y_n yn​。

两步Euler格式的局部截断误差是:设 y n = y ( x n ) , y n − 1 = y ( x n − 1 ) y_n=y(x_n),y_{n-1}=y(x_{n-1}) yn​=y(xn​),yn−1​=y(xn−1​),则有:
y ( x n + 1 ) = y ( x n − 1 ) + 2 h f ( x n , y ( x n ) ) = y ( x n − 1 ) + 2 h y ′ ( x n ) y(x_{n+1})=y(x_{n-1})+2hf(x_n,y(x_n))=y(x_{n-1})+2hy'(x_n) y(xn+1​)=y(xn−1​)+2hf(xn​,y(xn​))=y(xn−1​)+2hy′(xn​)
将 y = y ( x ) y=y(x) y=y(x)在 x n + 1 x_{n+1} xn+1​和 x n − 1 x_{n-1} xn−1​点的函数值 y ( x n + 1 ) y(x_{n+1}) y(xn+1​)和 y ( x n − 1 ) y(x_{n-1}) y(xn−1​)展开为关于 x n x_n xn​点的Taylor级数
y ( x n + 1 ) = y ( x n ) + h y ′ ( x n ) + h 2 2 ! y ′ ′ ( x n ) + h 3 3 ! y ′ ′ ′ ( ϵ 1 ) x n < ϵ 1 < x n + 1 y ( x n − 1 ) = y ( x n ) − h y ′ ( x n ) + h 2 2 ! y ′ ′ ( x n ) − h 3 3 ! y ′ ′ ′ ( ϵ 2 ) x n − 1 < x 2 < x n y(x_{n+1})=y(x_n)+hy'(x_n)+\frac{h^2}{2!}y''(x_n)+\frac{h^3}{3!}y'''(\epsilon_1) \quad x_n<\epsilon_1<x_{n+1} \\ y(x_{n-1})=y(x_n)-hy'(x_n)+\frac{h^2}{2!}y''(x_n)-\frac{h^3}{3!}y'''(\epsilon_2) \quad x_{n-1}<x_2<x_n y(xn+1​)=y(xn​)+hy′(xn​)+2!h2​y′′(xn​)+3!h3​y′′′(ϵ1​)xn​<ϵ1​<xn+1​y(xn−1​)=y(xn​)−hy′(xn​)+2!h2​y′′(xn​)−3!h3​y′′′(ϵ2​)xn−1​<x2​<xn​
两式相减,得:
y ( x n + 1 ) = y ( x n − 1 ) + 2 h y ′ ( x n ) + h 3 3 y ′ ′ ′ ( ϵ ) , x n − 1 < ϵ < x n + 1 y(x_{n+1)}=y(x_{n-1})+2hy'(x_n)+\frac{h^3}{3}y'''(\epsilon) , \quad x_{n-1}<\epsilon< x_{n+1} y(xn+1)​=y(xn−1​)+2hy′(xn​)+3h3​y′′′(ϵ),xn−1​<ϵ<xn+1​
故局部截断误差为:
y ( x n + 1 ) − y n + 1 = h 3 3 ( ϵ ) = O ( h 3 ) y(x_{n+1})-y_{n+1}=\frac{h^3}{3}(\epsilon)=O(h^3) y(xn+1​)−yn+1​=3h3​(ϵ)=O(h3)
可见精度提高了,即两步Euler格式具有二阶精度。

4. 改进的Euler格式

  1. 梯形格式

现用数值积分的方法求解微分方程(1)

将方程 y ′ = f ( x , y ) y'=f(x,y) y′=f(x,y)的两端从 x n x_n xn​到 x n + 1 x_{n+1} xn+1​积分,得:
∫ x n x n + 1 y ′ d x = ∫ x n x n + 1 f [ x , y ( x ) ] d x y ( x n + 1 ) − y ( x n ) = ∫ x n x n + 1 f [ x , y ( x ) ] d x ( 5 ) \int_{{x_n}}^{x_{n+1}}y'dx=\int_{x_n}^{x_{n+1}}f[x,y(x)]dx \\ y(x_{n+1})-y(x_n)=\int_{x_n}^{x_{n+1}}f[x,y(x)]dx \quad (5) ∫xn​xn+1​​y′dx=∫xn​xn+1​​f[x,y(x)]dxy(xn+1​)−y(xn​)=∫xn​xn+1​​f[x,y(x)]dx(5)
只要计算出(5)式中的积分项,就能得到 y ( x n + 1 ) y(x_{n+1}) y(xn+1​)。若采用数值积分的梯形公式,则有:
∫ x n x n + 1 f [ x , y ( x ) ] d x ≅ 1 2 h [ f ( x n , y ( x n ) ) + f ( x n + 1 , y ( x n + 1 ) ) ] ≅ 1 2 h [ f ( x n , y n ) + f ( x n + 1 , y n + 1 ) ] \int_{x_n}^{x_{n+1}}f[x,y(x)]dx \cong \frac{1}{2}h[f(x_n,y(x_n))+f(x_{n+1},y(x_{n+1}))] \\ \cong \frac{1}{2}h[f(x_n,y_n)+f(x_{n+1},y_{n+1})] ∫xn​xn+1​​f[x,y(x)]dx≅21​h[f(xn​,y(xn​))+f(xn+1​,y(xn+1​))]≅21​h[f(xn​,yn​)+f(xn+1​,yn+1​)]
将其代入(5)式,就得到 y ( x n + 1 ) y(x_{n+1}) y(xn+1​)的近似值 y n + 1 y_{n+1} yn+1​,即:
y n + 1 = y n + 1 2 h [ f ( x n , y n ) + f ( x n + 1 , y n + 1 ) ] (6) y_{n+1}=y_n+\frac{1}{2}h[f(x_n,y_n)+f(x_{n+1},y_{n+1})] \tag{6} yn+1​=yn​+21​h[f(xn​,yn​)+f(xn+1​,yn+1​)](6)
称(6)式为梯形格式。可以看出,梯形格式实际上是显示Euler格式和隐式Euler格式的算术平均值。要使用该公式,同样需要将公式进行显示化。

  1. 改进的Euler格式

采用预报-校正方法,可将梯形公式显示化。即先用一个简单的格式求得一个初步的近似值,称为预报值;再用另外一种进行校正,得到较为精确的校正值。如果用显示Euler格式进行预报,用隐式梯形格式进行校正,则可得:

预报
y ‾ n + 1 = y n + h f ( x n , y n ) \overline y_{n+1}=y_n+hf(x_n,y_n) y​n+1​=yn​+hf(xn​,yn​)
校正
y n + 1 = y n + 1 2 h [ f ( x n , y n + f ( x n + 1 , y ‾ n + 1 ) ] y_{n+1}=y_n+\frac{1}{2}h[f(x_n,y_n+f(x_{n+1},\overline y_{n+1})] yn+1​=yn​+21​h[f(xn​,yn​+f(xn+1​,y​n+1​)]
写成嵌套形式为:
y n + 1 = y n + 1 2 h [ f ( x n , y n ) + f ( x n + 1 , y n + h f ( x n , y n ) ) ] y_{n+1}=y_n+\frac{1}{2}h[f(x_n,y_n)+f(x_{n+1},y_n+hf(x_n,y_n))] yn+1​=yn​+21​h[f(xn​,yn​)+f(xn+1​,yn​+hf(xn​,yn​))]
为便于计算,可用平均化形式表示为:
{ y p = y n + h f ( x n , y n ) y q = y n + h f ( x n + 1 , y p ) y n + 1 = 1 2 ( y p + y c ) \begin{cases} y_p = y_n+hf(x_n,y_n) \\ y_q = y_n+hf(x_{n+1},y_{p}) \\ y_{n+1}=\frac{1}{2}(y_p+y_c) \end{cases} ⎩⎪⎨⎪⎧​yp​=yn​+hf(xn​,yn​)yq​=yn​+hf(xn+1​,yp​)yn+1​=21​(yp​+yc​)​

Euler(欧拉)方法 | 显示Euler格式、隐式Euler格式、两步Euler格式、改进的Euler格式相关推荐

  1. [计算机图形学]动画与模拟:欧拉方法、刚体与流体(前瞻预习/复习回顾)

    一.前言 这是本专栏的倒数第二篇文章了,为什么不是最后一篇?因为我要单独写一篇总结哈哈,不管怎么说,从今年的3.13的MVP变换开始写,写到现在,也是一个很大的工程了,我很高兴能在大二下学期的期中这个 ...

  2. 计算机方法欧拉,欧拉方法详解

    高中牛顿力学回顾 有一个具有一定速度在运动的物体: 当我们需要对其进行模拟时,自然会想起高中的 位移 = 速度 * 时间,即: $$s = v * t$$ 而当该物体具有恒定加速度(恒力)时: 我们可 ...

  3. 6.1 欧拉方法与改进欧拉方法

    6.1.1 欧拉方法 欧拉方法是一种数值解常微分方程(ODE)的方法,可以用于近似求解给定的初值问题.它是以欧拉命名的瑞士数学家莱昂哈德·欧拉所发明的,因此得名. 欧拉方法的基本思路是将连续的常微分方 ...

  4. 常微分方程解法:Euler‘s Method 欧拉方法

    常微分方程的解法 (一): 常微分方程的离散化 :差商近似导数.数值积分方法.Taylor 多项式近似 Euler's Method 欧拉方法 常微分方程的解法 (二): 欧拉(Euler)方法

  5. 图形学笔记(二十)粒子、刚体、流体的模拟—— 欧拉方法、Errors 和 Instability、中点法、自适应步长、隐式欧拉方法、Runge-Kutta方法、刚体与流体模拟(质点法、网格法、MPM)

    图形学笔记(十九)粒子.刚体.流体的模拟-- 欧拉方法.Errors 和 Instability.中点法.自适应步长.隐式欧拉方法.Runge-Kutta方法.刚体与流体模拟(质点法.网格法.MPM) ...

  6. euler欧拉系统尝试用yum、源码安装pacemaker失败

    euler欧拉系统尝试用yum.源码安装pacemaker失败 用yum安装pacemaker ====================================== [root@euler ~ ...

  7. 隐式欧拉解常微分方程c语言,利用欧拉方法求常微分方程近似数值解.doc

    利用欧拉方法求常微分方程近似数值解,欧拉微分方程,欧拉运动微分方程,欧拉平衡微分方程,欧拉型微分方程,微分方程的欧拉算法,微分方程的欧拉解法,欧拉型常微分方程,偏微分方程数值解,微分方程数值解法 利用 ...

  8. 计算机图形学【GAMES-101】14、动画(物理模拟、质点弹簧系统、粒子系统、运动学、动作捕捉、欧拉方法)

    快速跳转: 1.矩阵变换原理Transform(旋转.位移.缩放.正交投影.透视投影) 2.光栅化(反走样.傅里叶变换.卷积) 3.着色计算(深度缓存.着色模型.着色频率) 4.纹理映射(重心坐标插值 ...

  9. 【微分方程数值解】常微分方程(一)欧拉方法和改进欧拉方法(附python算例,封装类)

    欧拉方法与改进欧拉方法 一.算法原理 对给定微分方程 {y′=f(x,y)y(x0)=y0(1)\begin{cases} y' = f(x,y)\\ y(x_0) = y_0 \end{cases} ...

  10. 微分方程的数值解法之欧拉方法

    '''欧拉方法''' #所求常微分方程 f_x=input('y\'=') def fy(x,y):return eval(f_x)#原方程的精确解 f_e=input('y =') def fe(x ...

最新文章

  1. 欢迎来到美多商城!-项目准备之项目介绍-项目需求分析-项目架构设计
  2. linux基础知识必掌握知识[自己原来上学总结的难免有错误,多谢指点]
  3. 今日代码(200727)--全局空间自相关性
  4. 怀化学院计算机科学专业排名,2019怀化学院专业排名
  5. 小学生四则运算JAVA
  6. 计算机主机的声音线是哪个好,四大常用视频接口对比,你的电脑是哪种接口?...
  7. (Origin)如何复制文件到另一个项目
  8. 苹果笔记本python爬取网页后怎么存下来_python 爬取csdn网页并保存博客到本地
  9. photoshop插画插件_照片快速转矢量插画PS动作插件 Vector Art Photoshop Action
  10. 支持alpha通道的视频编码格式以及容器类型汇总
  11. 如果你的电脑只能安装三个软件, 你会选择哪三个?
  12. ACdream 1069 无耻的出题人 无聊写着玩的题
  13. 在c语言的switch 语句中,的case后面的表达式,什么值必须在switch语句中case后面
  14. ubuntu下查看显卡型号
  15. 矩阵论 - 9 - 线性无关、基、维数
  16. Concept Whitening for interpretable image recognition 用于可解释图像识别的概念白化
  17. sql语句case when常用查询总结
  18. 眼动数据分析基础知识了解(人眼工作机制)
  19. 360小水滴用户测试
  20. 2022届通信电子双非保研经历分享——全流程手把手助你保研

热门文章

  1. C++:吐槽Win7专业版和Win7旗舰版对C++/程序的影响
  2. IntelliJ IDEA 自动导入包 关闭重复代码提示
  3. uniapp手动画table,并固定表头,支持横向纵向滑动
  4. 终于解决了悬疑好多年的低版本CAD VBA不能在高版本CAD使用的问题
  5. file_zilla 通过key连接远程服务器
  6. day19三大神器和csv操作总结
  7. Spring service本类中方法调用另一个方法事务不生效问题
  8. Qt 多线程(QThread)
  9. 大一学生HTML期末作业 【html体育3篮球 11页面带三级页】学生网页设计作业源码
  10. pat甲级1024c语言