4.8 微分方程
微分方程是数值计算中常见的问题,MATLAB提供了多种函数来计算微分方程的解。
4.8.1 常微分方程
众所周知,对一些典型的常微分方程,能求解出它们的一般表达式,并用初始条件确定表达式中的任意常数。但实际中存在有这种解析解的常微分方程的范围十分狭窄,往往只局限在线性常系数微分方程(含方程组),以及少数的线性变系数方程。对于更加广泛的、非线性的一般的常微分方程,通常不存在初等函数解析解。由于实际问题求解的需要,求近似的数值解成为了解决问题的主要手段。常见的求数值解的方法有欧拉折线法、阿当姆斯法、龙格-库塔法与吉尔法等。其中由于龙格-库塔法的精度较高,计算量适中,所以使用的较广泛。
数值解的最大优点是不受方程类型的限制,即可以求任何形式常微分方程的特解(在解存在的情况下),但是求出的解只能是数值解。
1.龙格-库塔方法简介
对于一阶常微分方程的初值问题,在求解未知函数时,在点的值是已知的,并且根据高等数学中的中值定理,应有:
一般而言,在任意点,有:
当确定后,根据上述递推公式能算出未知函数在点的一列数值解:
当然在递推的过程中同样存在着一个误差累计的问题,实际计算中的递推公式一般都进行过改造,龙格-库塔公式为: