前向后项差分和显式隐式欧拉法
2016-11-15 16:58
1016 查看
摘要:
本文主要介绍前向后向差分,显式隐式欧拉法及其稳定性分析。
前向差分对应显式方法,后向差分对应隐式方法。显式欧拉法是比较流行的显式方法,隐式欧拉法是比较流行的隐式方法。
显式欧拉法条件稳定,对积分步长有要求,隐式欧拉法无条件稳定,对积分步长无要求(理论上如此,但实际使用中对积分步长仍然有要求,只是比显式欧拉宽松)。
之所以称之为前向差分,是因为当前时刻的差分△yn,是下一时刻位置yn+1(时间向前前进一步)与当前时刻位置yn之差。
高阶前向差分
根据上式递归可得k阶前向差分公式为:△kyn=△k−1yn+1−△k−1yn.
例如,二阶前向差分公式为:
△2yn=△2n
=△(△n)
=△(yn+1−yn)
=△n+1−△n
=yn+2−2yn+1+yn
由定义可以看出,当前时刻的差分,是当前时刻的位置与前一时刻的位置之差。
高阶后向差分
同上,k阶后向差分公式为:△kyn=△k−1yn−△k−1yn−1.
因此,二阶后向差分公式为:△2yn=yn−2yn−1+yn−2.
在数值计算中,需要以差商代替导数,即,y′n=△ynh.
如果使用前向差分,则为显式方法,例如,f′n=yn+1−ynh.
如果使用后向差分,则为隐式方法,例如,y′n=yn−yn−1h.
之所以称之为显式,是因为下一时刻的值yn+1,可根据当前时刻的值yn及其导数y′n 显式地给出。
另一种角度看上面的公式:从当前时刻出发,根据当前时刻的函数值及其导数,可得到下一时刻的值。因此显式欧拉法又称为前向欧拉(Forward Euler)
再从另一个角度看,我们把上面的公式做一下变形可得f(tn,yn)=yn+1−ynh. 即,显示欧拉就是用前向差商代替导数。
之所以称之为隐式,是因为上式是一个隐式方程。
另一种角度看上面的公式:将上式做一下变形可得:yn−1=yn−hf(tn,yn).从当前时刻出发,根据当前时刻的函数值及其导数,可得到前一时刻函数的值。因此隐式欧拉法又称为后向欧拉(Backward Euler)
再从另一个角度看,我们把上面的公式做一下变形可得f(tn,yn)=yn−yn−1h. 即,显示欧拉就是用后向差商代替导数。
1. 显式欧拉法条件稳定(Conditionally Stable)
根据显式欧拉法公式,
yn+1=yn+hf(tn,yn)=yn−ahyn=(1−ah)yn=(1−ah)2yn−1=...=(1−ah)n+1y0.
为了保证上式收敛,需要保证|(1−ah)|<1, 得,h<2a
即,为了保证显式欧拉的稳定性,需要保证时间步长h<2a,即,条件稳定.
2.隐式欧拉法无条件稳定(Unconditionally Stable)
根据隐式欧拉公式,yn+1=yn+hf(tn+1,yn+1)=yn−ahyn+1.
则,yn+1=yn1+ah.
又,a>0,h>0则1+ah恒大于1。即不管时间步长为多大,隐式欧拉始终稳定,即无条件稳定.
注意:实际应用中,隐式欧拉需要求解隐式方程,通常也是使用逼近的方法(例如,Newton-Raphson)求解,因此实际的隐式欧拉方法并不是无条件稳定的。
3.一般形式的稳定性分析,我目前还没有掌握。
本文主要介绍前向后向差分,显式隐式欧拉法及其稳定性分析。
前向差分对应显式方法,后向差分对应隐式方法。显式欧拉法是比较流行的显式方法,隐式欧拉法是比较流行的隐式方法。
显式欧拉法条件稳定,对积分步长有要求,隐式欧拉法无条件稳定,对积分步长无要求(理论上如此,但实际使用中对积分步长仍然有要求,只是比显式欧拉宽松)。
1. 前向差分与后向差分
设一元函数函数y(t)离散化为一系列的点,y0,y1,...,yn,yn+1,yn+2,...,其中,yn=f(tn), tn=tn−1+h, 称h为步长。1.1 前向差分(Forward Difference)
前向差分的定义:△yn≡yn+1−yn.之所以称之为前向差分,是因为当前时刻的差分△yn,是下一时刻位置yn+1(时间向前前进一步)与当前时刻位置yn之差。
高阶前向差分
根据上式递归可得k阶前向差分公式为:△kyn=△k−1yn+1−△k−1yn.
例如,二阶前向差分公式为:
△2yn=△2n
=△(△n)
=△(yn+1−yn)
=△n+1−△n
=yn+2−2yn+1+yn
1.2 后向差分(Backward Difference)
后向差分定义:△yn≡yn−yn−1.由定义可以看出,当前时刻的差分,是当前时刻的位置与前一时刻的位置之差。
高阶后向差分
同上,k阶后向差分公式为:△kyn=△k−1yn−△k−1yn−1.
因此,二阶后向差分公式为:△2yn=yn−2yn−1+yn−2.
1.3 差商和导数
差商就是差分除以步长,即,△ynh.在数值计算中,需要以差商代替导数,即,y′n=△ynh.
如果使用前向差分,则为显式方法,例如,f′n=yn+1−ynh.
如果使用后向差分,则为隐式方法,例如,y′n=yn−yn−1h.
2. 显式欧拉和隐式欧拉
设有一阶常微分方程dydt=f′(t,y).很多时候我们无法求出函数y的解析解,只能通过数值方法逼近,即,将时间离散为一系列的点t0,t1,...,tn,tn+1,...其中,ti=ti−1+h. 我们要做的就是求函数y在这些离散的时间点上的值yn=y(tn).2.1 显式欧拉(Explicit Euler)
显式欧拉公式:yn+1=yn+hf(tn,yn).之所以称之为显式,是因为下一时刻的值yn+1,可根据当前时刻的值yn及其导数y′n 显式地给出。
另一种角度看上面的公式:从当前时刻出发,根据当前时刻的函数值及其导数,可得到下一时刻的值。因此显式欧拉法又称为前向欧拉(Forward Euler)
再从另一个角度看,我们把上面的公式做一下变形可得f(tn,yn)=yn+1−ynh. 即,显示欧拉就是用前向差商代替导数。
2.2 隐式欧拉(Implicit Euler)
隐式欧拉公式:yn=yn−1+hf(tn,yn).之所以称之为隐式,是因为上式是一个隐式方程。
另一种角度看上面的公式:将上式做一下变形可得:yn−1=yn−hf(tn,yn).从当前时刻出发,根据当前时刻的函数值及其导数,可得到前一时刻函数的值。因此隐式欧拉法又称为后向欧拉(Backward Euler)
再从另一个角度看,我们把上面的公式做一下变形可得f(tn,yn)=yn−yn−1h. 即,显示欧拉就是用后向差商代替导数。
2.3 例证欧拉法的稳定性
设有一阶常微分方程dydt=−ay. 我们知道,这个常微分方程的解析解为y=e−at. 当t→∞时,y→0. 那么分别用显式、隐式欧拉法会得到什么呢?1. 显式欧拉法条件稳定(Conditionally Stable)
根据显式欧拉法公式,
yn+1=yn+hf(tn,yn)=yn−ahyn=(1−ah)yn=(1−ah)2yn−1=...=(1−ah)n+1y0.
为了保证上式收敛,需要保证|(1−ah)|<1, 得,h<2a
即,为了保证显式欧拉的稳定性,需要保证时间步长h<2a,即,条件稳定.
2.隐式欧拉法无条件稳定(Unconditionally Stable)
根据隐式欧拉公式,yn+1=yn+hf(tn+1,yn+1)=yn−ahyn+1.
则,yn+1=yn1+ah.
又,a>0,h>0则1+ah恒大于1。即不管时间步长为多大,隐式欧拉始终稳定,即无条件稳定.
注意:实际应用中,隐式欧拉需要求解隐式方程,通常也是使用逼近的方法(例如,Newton-Raphson)求解,因此实际的隐式欧拉方法并不是无条件稳定的。
3.一般形式的稳定性分析,我目前还没有掌握。
相关文章推荐
- 类的隐式继承,显式覆盖------------------类的基础(一)1.1
- PLSql -- 练习2 cursor 显式/隐式游标
- C#的显式接口和隐式接口
- 隐式和显式接口的区别
- 关于显式调用DLL、隐式调用DLL和查看DLL输出函数
- 【Oracle】PL/SQL 显式游标、隐式游标、动态游标
- 显式意图和隐式意图的区别小结
- Activity详解 Intent显式跳转和隐式跳转, 及多个Activity之间传值 总结
- 显式启动Activity和隐式启动Activity
- 【Oracle】PL/SQL 显式游标、隐式游标、动态游标
- C++:显式和隐式初始化、显式和隐式类型转换
- 显式Intent和隐式Intent
- 显式intent和隐式intent的使用
- intent 显式意图以及隐式意图,在Activity、Service和Broadcastreceiver应用
- prototype(显式原型) __proto__(隐式原型)
- 动态链接库(dll) - 隐式加载(载入时加载)和显式加载(运行时加载)
- Android显式意图、隐式意图、意图过滤器(intent-filter)、意图间传值
- C++中构造函数的显式调用和隐式调用
- 我有回来了啊,今天带来了Android 学习之显式激活与隐式激活Activity
- Android显式启动与隐式启动Activity的区别介绍