前言
这章主要介绍解决常微分方程,微分方程组合和边值问题的方法。
学习过程
<1>初值问题 initial value problem
常微分方程的一般形式:
方程会因为初值不同有变化。
<2>Lipschitz条件
给出矩形区域,假设在上连续,且存在一个常量满足性质,其中任意,那么可以说是在上满足条件。而也可以叫作常量。
为了更好的判断,我们一般使用下面的方法。
在上定义,如果这里存在常量使得所有,则在上满足条件。
如果满足条件且有初值,那么在子区间上有唯一解。
<3>Euler法
微分方程不总是那么容易求解的,为此,我们会在接下来提出很多方法来求解,其中之一就是Euler法。但是Euler法实际上使用是有限的因为它有很大误差,但它具有教育意义。
我们提出一个函数满足初值问题,即在区间下 ,。在我们无法找出函数的情况下,我们可以找出一系列点来逼近函数。
设,我们将区间分为个子区间,并假设,,在区域连续,然后使用泰勒定理,我们可以得到以下公式:
把代入,且十分小时,二次项可以忽略不计,公式就会变为:
递推下去就是:
这就是Euler法。
我们把微分方程求解的方法叫做微分方法或者是离散变量方法。这些方法都是找出一系列逼近函数的离散点集。其中一步法有这种形式,叫做增量函数。
当使用这种离散变量方法来求解初值问题时,误差会有两种来源:离散化,四舍五入。
假设点集,初值问题有唯一解。
全局离散误差:
局部离散误差:
Euler法中,在满足以上初值问题条件,且时,有:
最终全局误差
<4>Heun法
我们使用积分的方法来解决初值问题。一开始有。于是我们利用梯形规则假设。再结合Euler法。
即Heun法为:
Heun法中,在满足以上初值问题条件,且时,有:
最终全局误差
<5>泰勒序列方法
假设,并且在上有阶展开:
泰勒序列法中,在满足以上初值问题条件,且时,有:
最终全局误差
<6>Runge-Kutta法
在该方法中,我们假设一个区间内再取出多个点,计算它们的加权平均斜率。并且使得它们精度和泰勒序列 前几项一致。这个方法的好处就是不需要计算更高阶的导数。
阶通式:
之和为1,等于之和。
Runge-Kutta法中,在满足以上初值问题条件,且时,即4阶,有:
最终全局误差
例子:
RK4:模仿了四阶泰勒
RKF45:可以知道步长越小,误差会越小,但是这会导致大量的计算。因此我们提出了RKF45,它是找到一个恰当步长的程序。在每步中,对解的两种不同逼近会用来比较,如果两个解答案很近,则步长是可以接受的。如果两个解答案准确率不太一致,则继续缩小步长。当需要更多有效位数的解时,则增加步长。
上述的方法都是一步法。
<7>Adams-Bashforth-Moulton 法
该方法是基于积分公式来推的:
在内积分。
先使用Adams-Bashforth预测,在内积分:
再用Adams-Moulton矫正,在内积分:
其中预测和矫正的误差都是。
当需要更精确时,就缩小步长,而缩小步长,就需要新的初始值。
<8>Milne-Simpson法
该方法是基于积分公式来推的:
在内积分。
先使用Milne预测,在内积分:
再用Simpson矫正,在内积分:
其中预测和矫正的误差都是。
<9>微分方程组
在本小节,我们考虑到以下的初值问题:
如果使用Euler法来解决这个问题的话,有:
其中
于是,
分为步长为的个子区间后,
遇到更高阶的微分方程组时,我们可以设置多个未知量对应不同阶的导数,相当于n维求欧拉公式。在这里,龙格库塔公式也是可以的,一般4阶的效果比较好。
<10>边值问题
<11>初值问题
词汇学习
modification 修改
trajectory 弹道
conjecture 推测
interpretation 解释
mesh 网眼
discrete 离散的
increment 增量
predominate 占主导地位
trapezoidal 梯形的
trade-off 交易
elaborate 详尽的
omit 忽略