本文只是作者的一点点理解,初衷是让小白看懂数学,去理解,而不是刻板的记公式,纯手敲,希望多多关注,大佬可以指点,但别喷我。
本文的前提是常微分方程,很多地方我就不过多的讲解前提条件了,读者只要知道,一切的基础都是在常微分方程初值问题的表达式上进行的推导。
基本原理及推导:
欧拉方法作为一种数值解法,首先我们要明确这是一种获取近似解的方法,存在误差。
思路:利用差商代替微分的思想,在几何上看是用折线近似等于曲线的思想
那么什么是差商?什么是微分?
微分,我想学到这部分,多少了解了,它的定义式如下:
其中
我的理解的话,微分可以理解为某一个瞬间的状态,或者在平面图上,某一条线上每个x值对应的y值,即点是线的微分元素;在上面欧拉方法的解析式中,你可以理解步长h它就是一个微分元素,当步长趋近于0的时候,就是等价于微分方程了。
差商,顾名思义,它就是差的商,是谁的差?同变量不同状态的差。是谁的商?因果的商,因变量和自变量的商。故有如下定义式
这样看,好像没有关联,那我们再给它换一件衣服看看,你会不会觉得妙呢??看下面
当时,我们可以看到上式与前面微分是等价的,但是这理论上的手段,显示中我们计算差商是不可能让步长,哦不,不可能让
趋向于0的,因为你手动计算不出来。所以这就是我们说用差商近似等于微分的缘由,可想而知误差也就来了。
还要注意的一点是:欧拉方法原则上是等步长的递推方法,由初值条件可以推导出每一个所对应的y值,广泛应用于宏观上的预测模型,我为什么说是宏观等你们学到其他的数值解法你就会明白了。
截断误差计算:
这里其实我是不打算讲的,因为使用matlab进行计算的话,是用不到误差计算的推导公式的,MATLAB计算误差简单粗暴,直接使用精确解减去近似解的绝对值。下一期我出一个MATLAB编写欧拉算法的文章,绝对是教父级教程。
回到正题,理论知识还是得学啊,误差计算的推导公式比较简单,使用泰勒展开式把欧拉方法表达式的左边进行展开,然后合并同类项。
欧拉方法表达式:
泰勒展开式在处展开:
因为y' = f(y,x),所以有
截断误差:
由截断误差将欧拉方法收敛阶定义为一阶,这里不懂可以去看看相关的定义
结语:
本文是我第一次尝试着解析数学的知识,如果反响好,会继续出,欧拉方法除了上面的内容,其实还有很多我没有深入去展开,比如稳定性、单步法、收敛阶、以及隐式欧拉方法,感兴趣的同学可以自己去了解,或者有需要可以评论。