欧拉法的来源

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

[编辑]

什么是欧拉法

  欧拉法是以流体质点流经流场中各空间点的运动即以流场作为描述对象研究流动的方法。——流场法

  它不直接追究质点的运动过程,而是以充满运动液体质点的空间——流场为对象。研究各时刻质点在流场中的变化规律。将个别流体质点运动过程置之不理,而固守于流场各空间点。通过观察在流动空间中的每一个空间点上运动要素随时间的变化,把足够多的空间点综合起来而得出的整个流体的运动情况。

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

[编辑]

欧拉算法

  微分方程的本质特征是方程中含有导数项,数值解法的第一步就是设法消除其导数值,这个过程称为离散化。实现离散化的基本途径是用向前差商来近似代替导数,这就是欧拉算法实现的依据。欧拉(Euler)算法是数值求解中最基本、最简单的方法,但其求解精度较低,一般不在工程中单独进行运算。所谓数值求解,就是求问题的解y(x)在一系列点上的值y(xi)的近似值yi。对于常微分方程:

  ,x∈[a,b]

  y(a) = y0

  可以将区间[a,b]分成n段,那么方程在第xi点有y'(xi) = f(xi,y(xi)),再用向前差商近似代替导数则为:,在这里,h是步长,即相邻两个结点间的距离。因此可以根据xi点和yi点的数值计算出yi+1来:

  ,i=0,1,2,L

  这就是欧拉格式,若初值yi + 1是已知的,则可依据上式逐步算出数值解y1,y2,L。

  为简化分析,人们常在yi为准确即yi = y(xi)的前提下估计误差 y(xi + 1) − yi + 1,这种误差称为局部截断误差。

  如果一种数值方法的局部截断误差为O(hp + 1),则称它的精度是p阶的,或称之为p阶方法。欧拉格式的局部截断误差为O(h2),由此可知欧拉格式仅为一阶方法。

[编辑]

欧拉公式

  

  且 (i=0,1,2,…,n-1)

  局部截断误差是O(h2)

[编辑]

非形式化的几何诠释

考虑计算下面一个未知曲线的形状:它具有给定的起点并且满足一个给定的微分方程。这里,所谓“微分方程”可以看作能够通过曲线上任意点的位置而计算出这一点的切线斜率的公式。

思路是,一开始只知道曲线的起点,曲线其他部份是未知的,不过通过微分方程,的斜率可以被计算出来,也就得到了切线。

顺着切线向前走一小步到点。如果我们假设是曲线上的一点(实际上通常不是),那么同样的道理就可以确定下一条切线,依此类推。在经过几步之后,一条折线就被计算出来了。大部分的情况下,这条折线与原先的未知曲线偏离不远,并且任意小的误差都可以通过减少步长来得到(虽然对于刚性方程而言会比较复杂)。

[编辑]

欧拉方法的推导

以以下微分方程为例

希望用y 在点(t0,y(t0)) 附近的线性近似来得到其近似解。利用时间 tn 时的数值,若用单步的欧拉方法,可得到时间tn+1 =&nbsp ;tn + h 时的近似值如下:

欧拉方法是一种显型方法,也就是说yn + 1 的解是yi, 的显函数。

欧拉方法可以求解一阶的微分方程,一个N阶的微分方程可以用导入N − 1 个变数来表示y' , y'', ..., y(N) 的方式,分解为N个一阶的微分方程。因此可以用欧拉方法求解以下的向量 来得到高阶微分方程的解。

[编辑]

改进的欧拉算法

  先用欧拉法求得一个初步的近似值,称为预报值,然后用它替代梯形法右端的yi+1再直接计算 fi+1,得到校正值yi+1,这样建立的预报-校正系统称为改进的欧拉格式:

  预报值

  校正值

  它有下列平均化形式:

  

  且

  且

  它的局部截断误差为O(h3),可见,改进欧拉格式较欧拉格式提高了精度,其截断误差比欧拉格式提高了一阶。

  注:欧拉法用差商 近似代替y(xi)的导数,局部截断误差较大;改进欧拉法先用欧拉法求出预报值,再利用梯形公式求出校正值,局部截断误差比欧拉法低了一阶,较大程度地提高了计算精度。

转载于:https://www.cnblogs.com/sddai/p/6144656.html

Euler-Maruyama discretization(欧拉-丸山数值解法)相关推荐

  1. 常微分方程数值解matlab欧拉,matlab 常微分方程数值解法 源程序代码

    matlab 常微分方程数值解法 源程序代码 所属分类:其他 开发工具:matlab 文件大小:16KB 下载次数:41 上传日期:2019-02-13 11:03:29 上 传 者:XWLYF 说明 ...

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

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

  3. [Project Euler] 来做欧拉项目练习题吧: 题目004

        [Project Euler] 来做欧拉项目练习题吧: 题目004 周银辉 问题描述: A palindromic number reads the same both ways. The l ...

  4. [Project Euler] 来做欧拉项目练习题吧: 题目017

    [Project Euler] 来做欧拉项目练习题吧: 题目017 周银辉 题目描述: If the numbers 1 to 5 are written out in words: one, two ...

  5. [Project Euler] 来做欧拉项目练习题吧: 题目012

      [Project Euler] 来做欧拉项目练习题吧: 题目012 周银辉 问题描述: The sequence of triangle numbers is generated by addin ...

  6. HDU6322 Problem D. Euler Function【欧拉函数+数学规律】

    Problem D. Euler Function Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 524288/524288 K (Java ...

  7. C++实现暴力筛、朴素素数筛、埃氏素数筛、欧拉素数筛的解法

    前言:今天有身边的人在群里吐槽了一道烟台大学OJ上面的水题 然后他提出的问题是:如何开一个1000w大小的数组来存储. What?我仔细看了一眼题目,觉得问题的关键并不是数组可以开多大.而是这是一道在 ...

  8. [Project Euler] 来做欧拉项目练习题吧: 题目013

    问题描述: Work out the first ten digits of the sum of the following one-hundred 50-digit numbers. 371072 ...

  9. 隐形Euler方法的java程序_常微分方程的解法 (二): 欧拉(Euler)方法

    上一节讲了 常微分方程的三种离散化 方法:差商近似导数.数值积分.Taylor 多项式近似. 目录 §2 欧拉(Euler)方法 2.1 向前 Euler 公式.向后 Euler 公式        ...

最新文章

  1. 实习小白::(转) Cocostudio动画编辑器的使用
  2. 速来了解—关于机器学习的“核心”秘密
  3. 查看CentOS的系统版本(亲测)
  4. OCP 论证书籍 -- ORACLE DATABASE 10G OCP Certification All-in - One Exam Guide
  5. Linux各发行版本简介
  6. 我同事狠心用 Python 3 ,刚开始就直接崩溃!你们试试......
  7. hadoop版本升级到2.4.1
  8. centos7添加用户并授权root权限
  9. struts2 国际化 cookie保存语言, 下次访问时显示当前设置的语言
  10. L1-043 阅览室 (20 分)—团体程序设计天梯赛
  11. 网页游戏怎么修改数据_2014一周网页游戏数据报告(8.18—8.24)
  12. 深度学习,mxnet库的安装
  13. css中相对长度单位_看看CSS中的长度单位
  14. RGB-D SLAM in Dynamic Environments Using Static Point Weighting论文笔记
  15. html5图片并列排版,图片并列排版实现
  16. 在一起盗窃案中,法官对涉及到的四名犯罪嫌疑人A,B,C,D进行了审问.
  17. 代码维护服务器,维护服务器的利器-pubwin 2009程序代码
  18. Word学习笔记:P6-文档封面、页眉、页脚设置
  19. 有趣的深度学习——使用TensorFlow 2.0 + RNN 实现一个古体诗生成器
  20. linux 怎么卸载glib,glib的安装

热门文章

  1. win11更新windowsTerminal设置WSL2 (windows下的linux子系统
  2. 日系动画视角旋转是否必须依靠3D建模?
  3. 服务器如何挂网页游戏,在云服务器上挂网页游戏
  4. java 实现docx文件指定位置插入图片
  5. centos6新的yum源
  6. java中访问不可视字段_Kotlin与Java的不同之处
  7. 4.荔枝派 zero(全志V3S)-开启alsa,测试codec
  8. 计算机十大专业那一类比较容易学,2021最容易就业的十大专业有哪些
  9. JS排序算法(升序)
  10. 抖音top主播的直播带货数据分析。