数学建模——欧拉算法(求解常微分方程)

欧拉算法

定义

定义:在数学和计算机科学中,欧拉方法,命名自它的发明者莱昂哈德·欧拉,是一种一阶数值方法,用以对给定初值的常微分方程(即初值问题)求解。它是一种解决数值常微分方程的最基本的一类显型方法(Explicit method)。

欧拉法是常微分方程的数值解法的一种,其基本思想是迭代。其中分为前进的EULER法、后退的EULER法、改进的EULER法。所谓迭代,就是逐次替代,最后求出所要求的解,并达到一定的精度。误差可以很容易地计算出来。

非线性方程都是所谓“解不出来”的,即使是 d y d x = y 2 + x 2 \frac{\mathrm{ d}y}{\mathrm{d}x}=y^2+x^2 dxdy=y2+x2。对于用微分方程解决实际问题来说,数值解法是一个重要的手段。

公式推导

设微分方程为
{ d y d x = f ( x n , y ( x n ) ) , a ≤ x ≤ b y ( a ) = y 0 \begin{cases} \frac{\mathrm{ d}y}{\mathrm{d}x}=f(x_n,y(x_n)),&a\leq x \leq b\\ y(a)=y_0 \end{cases} {dxdy=f(xn,y(xn)),y(a)=y0axb

  • 差商近似导数

    若用向前差商 y ( x n + 1 ) − y ( x n ) h \frac{y(x_{n+1})-y(x_n)}{h} hy(xn+1)y(xn)代替 y ′ ( x n ) y'(x_n) y(xn)带入微分方程 d y d x = f ( x n , y ( x n ) ) \frac{\mathrm{ d}y}{\mathrm{d}x}=f(x_n,y(x_n)) dxdy=f(xn,y(xn))中,可得
    y ( x n + 1 ) − y ( x n ) h ≈ f ( x n , y ( x n ) ) y ( x n + 1 ) = y ( x n ) + h f ( x n , y ( x n ) ) \frac{y(x_{n+1})-y(x_n)}{h} \approx f(x_n,y(x_n))\\ y(x_{n+1})=y(x_n)+hf(x_n,y(x_n)) hy(xn+1)y(xn)f(xn,y(xn))y(xn+1)=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 ) , n = 0 , 1 , ⋯   , N − 1 y_{n+1}=y_n+hf(x_n,y_n),n=0,1,\cdots,N-1 yn+1=yn+hf(xn,yn),n=0,1,,N1
这样,微分方程的近似解可以通过求解下述式子来获得
{ y n + 1 = y n + h f ( x n , y n ) , n = 0 , 1 , ⋯   , N − 1 y 0 = y ( a ) \begin{cases} y_{n+1}=y_n+hf(x_n,y_n),& n=0,1,\cdots,N-1\\ y_0=y(a) \end{cases} {yn+1=yn+hf(xn,yn),y0=y(a)n=0,1,,N1

算法缺点

欧拉算法简单地取切线地端点作为起点来计算,当步数增多时,误差会因积累而越来越大。因此,欧拉算法一般不用于实际计算。

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值