6.1.1 欧拉方法

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

欧拉方法的基本思路是将连续的常微分方程转化为离散的形式。具体而言,我们将自变量$t$的区间[t_0,t_n]等分成n个子区间,每个子区间长度为h=\frac{t_n-t_0}{n}。然后,我们选择一个起始点t_0和对应的初值y_0,并从t_0开始,使用欧拉方法逐步计算出t_1,t_2,\ldots,t_n处的近似解y_1,y_2,\ldots,y_n,直到达到目标终点t_n为止。

欧拉方法的具体实现是基于以下公式:

其中,f(t,y)是给定的常微分方程,y_i是在t_i处的近似解,h是步长,通常设置为常数。这个公式表示的是,通过使用f(t_i,y_i)来估计在t_i处的斜率,我们可以得到下一个近似解y_{i+1},即将当前近似解y_i沿着斜率方向向前推进一个步长h。

欧拉方法是一种比较简单和直观的数值求解方法,但它也有一些缺点。例如,欧拉方法的误差通常会随着步长h的减小而减小,但这种减小速度是线性的,而不是二次或更高阶的。此外,欧拉方法在求解具有较大振荡或非线性的问题时,可能会导致数值解的不稳定性。因此,有时候需要使用更高阶的数值求解方法,例如改进欧拉方法或龙格-库塔方法,以提高求解精度和稳定性。

我的理解:

可以通过一个具体的例子来理解欧拉方法。

假设我们有一个简单的常微分方程:

其中,k是一个常数,y是未知函数。

我们希望使用欧拉方法求解这个方程。首先,我们需要将自变量t的区间[t_0,t_n]等分成n个子区间,每个子区间长度为h=\frac{t_n-t_0}{n}。然后,我们选择一个起始点$t_0$和对应的初值$y_0$。在这个例子中,我们可以选择t_0=0,y_0=1。

接下来,我们可以使用欧拉方法逐步计算出t_1,t_2,\ldots,t_n处的近似解y_1,y_2,\ldots,y_n。具体而言,我们可以使用欧拉方法的公式:

将它应用于我们的例子中,得到:

其中,i=0,1,2,\ldots,n-1。这个公式表示的是,通过使用f(t_i,y_i)=ky_i来估计在t_i处的斜率,我们可以得到下一个近似解y_{i+1},即将当前近似解y_i沿着斜率方向向前推进一个步长h。

通过计算,我们可以得到以下结果:

i t_i y_i
0 0 1
1 h 1+kh
2 2h (1+kh)^2
\cdots \cdots \cdots
n nh (1+kh)^n

这个表格显示了在$n$个子区间中,每个子区间的近似解。我们可以看到,在每个子区间内,近似解按指数级别增长。这是因为我们的方程是一个指数增长的函数,欧拉方法使用常数斜率估计了这个增长,因此在每个子区间内的近似解也呈指数增长。

当然,这个例子是非常简单的。在实际的应用中,我们通常会遇到更加复杂的常微分方程,需要使用更加高级的数值方法来求解。但是,欧拉方法作为最基础、最简单的数值方法,可以为我们提供一个初步的了解。

1.2 欧拉公式的局部截断误差与精度分析

欧拉方法的局部截断误差是指在每个步骤中,欧拉方法计算得到的数值解与真实解之间的差距。具体而言,如果我们使用欧拉方法计算出的数值解为$y_i$,而真实解为$y(t_i)$,那么局部截断误差为:

也就是说,局部截断误差是在每个步骤中欧拉方法未能精确计算出下一个点的误差。

欧拉方法的精度分析可以通过比较局部截断误差与步长$h$的关系来进行。具体而言,我们可以使用泰勒展开式将真实解表示为:

这里$O(h^3)$表示高阶无穷小,即在$h$趋近于0时,比$h^3$更小的项。将欧拉方法的数值解代入上式,并使用欧拉方法的定义,我们可以得到:

将上式代入局部截断误差的定义,我们可以得到:

也就是说,欧拉方法的局部截断误差是二阶无穷小,与步长$h^2$成正比。因此,欧拉方法的全局误差与步长$h$成线性关系,即:

这表明欧拉方法是一种一阶精度的数值方法。如果我们想要提高数值解的精度,可以选择使用更高阶的数值方法,如改进欧拉方法或龙格-库塔方法等。

定义2 我的理解:

在数值求解常微分方程的过程中,我们希望得到一个与真实解足够接近的数值解。一般来说,我们认为一个数值方法的精度与其阶数有关。p阶方法是指一种数值方法,它在每个步骤中的误差与步长$h$的p次方成正比,也就是说,它的全局误差与步长$h^{p+1}$成正比。

具体来说,假设我们使用一个p阶方法来求解方程$y'=f(t,y)$,在第$i$个步骤中,我们使用这个方法计算得到数值解$y_{i}$,真实解为$y(t_i)$。那么这个方法在当前步骤中的局部截断误差为$LTE_i = O(h^{p+1})$。因此,该方法在整个时间区间上的全局误差为$O(h^p)$,即:

其中,$n$表示最终时间点。

通常来说,p阶方法的计算量比低阶方法要大,但是可以得到更高精度的数值解。如果我们需要更高精度的数值解,可以考虑使用更高阶的数值方法。在实际应用中,我们需要在计算量和精度之间进行权衡,并选择合适的数值方法。

1.3 改进欧拉方法

改进欧拉方法是一种二阶精度的数值方法,它可以用来求解形如$y' = f(t,y)$的常微分方程。与欧拉方法类似,改进欧拉方法也是一种显式的数值方法,它在每个步骤中需要计算一个斜率,然后使用这个斜率来更新数值解。

具体而言,假设我们要在$t_i$处计算数值解$y_i$,步长为$h$。首先,我们使用欧拉方法计算出一个初始估计值:

然后,我们计算在$t_{i+1/2}$处的斜率:

最后,我们使用斜率$k_{i+1/2}$来更新数值解:

改进欧拉方法的局部截断误差为$O(h^3)$,全局误差为$O(h^2)$,因此它比欧拉方法更精确。改进欧拉方法的计算量比欧拉方法要大,但比龙格-库塔方法要小,因此在一些实际问题中被广泛使用。

总结:

这里给出一些上面提到的几个数值方法的重点、难点和易错点的总结:

欧拉方法:

  • 重点:一阶数值方法,使用简单,容易实现。
  • 难点:可能会有精度不够高的问题。
  • 易错点:在选择步长的时候需要注意,如果步长过大,会导致数值解不够精确。

改进欧拉方法:

  • 重点:二阶数值方法,比欧拉方法精度更高。
  • 难点:相对于欧拉方法来说,计算量略微增加。
  • 易错点:在使用该方法时,需要注意斜率的计算,以及在更新数值解时要使用$t_{i+1/2}$处的斜率。

在实际问题中,选择数值方法时需要根据需要考虑精度、计算量、稳定性等因素,同时需要注意选择合适的步长和参数。对于每个方法的具体实现,需要认真理解其公式和算法,并进行逐步调试,避免出现错误。

6.1 欧拉方法与改进欧拉方法相关推荐

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

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

  2. Python06 向前Euler法、向后Euler法、梯形方法、改进的Euler方法以及四阶Runge_Kutta方法(附代码)

    1. 实验结果 (1)解如下常微分方程: (2)分别使用向前 Euler 法.向后 Euler 法.梯形方法.改进的 Euler 方法以及 四阶 Runge_Kutta 方法,结果如下图所示: 由结果 ...

  3. 中点方法、改进欧拉及Heun方法

    解一道题 格式的表达 代码示例: %% 用三种方法求解公式 h = 0.01; t = 0:h:1;N = length(t); y = zeros(1,N);y(1) = 1; df = @(t,y ...

  4. 微分方程一维抛物热传导方程向前向后欧拉C-N格式二阶BDF格式MATLAB源码 显式欧拉,隐式欧拉,梯形公式,改进欧拉

    微分方程一维抛物热传导方程向前向后欧拉C-N格式二阶BDF格式MATLAB源码 显式欧拉,隐式欧拉,梯形公式,改进欧拉 五点差分,九点差分 差分格式,紧差分格式 直拍,只有pdf版方法说明 word版 ...

  5. [计算机数值分析]改进欧拉格式解常微分方程的初值问题

    欧拉方法yn+1 = yn +hf(xn,yn) 是一种显式算法,计算量小,但精度很低.梯形方法yn+1 = yn + h / 2 *[f(xn,yn) + f(xn+1,yn+1)] 虽然提高了精度 ...

  6. 改进欧拉方程求初值(十四)

    改进欧拉方程的公式如下: yp=yn+hf(xn,yn)y_{p}=y_{n}+h f\left(x_{n}, y_{n}\right)yp​=yn​+hf(xn​,yn​) yc=yn+hf(xn+ ...

  7. 数论一之定理证明——裴蜀/威尔逊/费马/扩展欧几里得/[扩展]欧拉/[扩展]中国剩余定理,欧拉函数,逆元,剩余系,筛法

    打死没想到会在H老师处学懂数论 同余,整除 模运算 埃式筛法 欧拉筛法 最大公约数和最小公倍数 辗转相除法 更相减损术 裴蜀定理 威尔逊定理 费马定理 同余等价类.剩余系.缩系 欧拉函数 欧拉定理 扩 ...

  8. 欧拉线性筛 与 欧拉函数 + 几道例题

    欧拉线性筛 生成素数表prime[]数组 const int maxn = 1e7+5; int prime[maxn]; int visit[maxn]; void Prime(){memset(v ...

  9. 欧若拉用计算机谱子,欧若拉 _谱友园地_中国曲谱网

    <欧若拉>文本歌词 欧若拉 作词:施立 作曲:李天龙 演唱:张韶涵 制谱:孙世彦 神秘北极圈 阿拉斯加的山巅, 谁的脸 出现海角的天边? 忽然的瞬间 在那遥远的地点, 我看见 恋人幸福的光 ...

最新文章

  1. 点击失效,一层透明的view,
  2. web项目html引入css文件路径,详解Webpack和Webpack-simple中如何引入CSS文件_旧店_前端开发者...
  3. 中国工程师最喜欢的10大WiFi物联网芯片
  4. [网络安全自学篇] 十五.Python攻防之多线程、C段扫描和数据库编程(二)
  5. 2008年秋季学期文兴小学四年级班主任工作计划
  6. php用win还是linux系统,做网站选择linux系统还是选择windows系统好?
  7. 鼠标放在一个连接上,会显示图片(类似tooltip)
  8. 手写数字识别中多元分类原理_如何验签名真伪?法大大手写签名识别功能来了!...
  9. UCF101视频分类之CNN-LSTM-Code总结
  10. 更新cuda驱动10.0==>11.2
  11. 淘宝(taobao)HSF框架
  12. 前端性能优化实践:让视频加载也“懒”一点
  13. 史上最全的程序员求职渠道总结
  14. xilinx platform cable usb驱动_小白入门多路高速(8 x 8bits x 100Msps)AD驱动设计专栏启动预告...
  15. Android 实现微信,QQ的程序前后台切换:back键切换后台;点击通知栏恢复前台。
  16. oracle em 监听,监听程序ORACLE_HOME是啥??我EM重置,这个不知道要填什么
  17. 跨境电商支付方式之如何玩转跨境支付
  18. 网页中加入最新款百度天气预报样式代码
  19. matlab移相法实现单边带调制,移相法实现单边带信号的调制
  20. CRUSH算法 - 可控、可伸缩、分布式地归置多副本数据

热门文章

  1. ElementUI轮播图指示器设置为图片
  2. pgsql实现json格式转换
  3. 基于spark的Scala编程—读取properties文件
  4. linux网口环回测试程序,关于linux:Linux-环回网络接口
  5. canpcb阻抗_PCB阻抗匹配与0欧电阻设计说明
  6. 对XP系统中Autorun.inf Autorun.exe以及RECYCLER文件夹的认识
  7. 爬取拉钩 破解拉钩反爬机制
  8. 四年级计算机使用登记表,小学音乐器材使用登记表.doc
  9. 帝国cms忘记网站后台登录网址怎么找回?
  10. 如何在Python中显示图片?