切换科目
重点科目
主要科目
次要科目
科数网
首页
刷题
学习
VIP会员
赞助
组卷
集合
教材
VIP
写作
游客,
登录
注册
在线学习
数值分析
第六篇 常微分方程的数值解法
数值微分
最后
更新:
2026-06-27 17:15
查看:
2
次
纠错
评论(0)
课件
开VIP
数值微分
科学研究和工程技术中的许多问题均可利用微分方程来刻画。只含一个自变量的微分方程称为常微分方程,包含多个自变量的微分方程称为偏微分方程,简称 PDE.微分方程的求解是十分困难的。因此,近似解法就显得更为重要。从不同的角度出发,人们发展了丰富的数值方法。本章主要介绍求解各类典型微分方程定解问题的有限差分方法. 有限差分方法自20世纪50年代以来,在微分方程数值求解中得到了广泛的应用,该方法概念清晰、方法简单、直观,为数值求解偏微分方程定解问题提供了简单有效的工具。有限差分法的基本思想是:先对求解区域作网格剖分,将自变量的连续变化区域用有限离散点(网格点)集代替;将问题中出现的连续变量函数用定义在网格点上离散变量值来代替;通过用网格点上函数的差商代替导数,将含连续变量的偏微分方程定解问题化成只含有限个未知数的差分格式,通常为代数方程组.最后根据差分方程组解出各离散点处的函数值——离散解。如果差分格式有解,且当网格无限变小时其解收敛于原微分方程定解问题的解,则差分格式的解就作为原问题的近似解(数值解)。 8.1 数 值 微 分 8.1.1 差商与数值微分 当函数是以离散点列给出或函数的表达式过于复杂时,常用数值微分近似计算函数的导数.由于在微积分中一般用差商的极限来定义导数,那么在数值计算中则可把导数用差商来近似,于是可以得到最简单的计算数值微分的方法. 设函数 $f(x)$ 的自变量 $x$ 有一小增量 $\Delta x=h$ ,则 $f(x)$ 的增量为 $$ \begin{equation*} \Delta f(x)=f(x+h)-f(x) \tag{8.1} \end{equation*} $$ 称 $\Delta f(x)$ 为函数 $f(x)$ 的一阶差分.当自变量的增量 $h$ 足够小时,差分 $\Delta f$ 与微分 $\mathrm{d} f$ 之间的差才可能足够小。 一阶差分 $\Delta f$ 是自变量 $x$ 的函数,若再按式(8.1)计算 $\Delta f(x)$ 的差分,称二阶差分,记为 $\Delta^2 f(x)$ ,有 $$ \begin{equation*} \Delta^2 f(x)=\Delta f(x+h)-\Delta f(x) . \tag{8.2} \end{equation*} $$ 利用差分,函数 $f(x)$ 的一阶导数 $f^{\prime}(x)$ 可表示为 $$ f^{\prime}(x)=\frac{\mathrm{d} f(x)}{\mathrm{d} x}=\lim _{\Delta x \rightarrow 0} \frac{\Delta f(x)}{\Delta x} . $$ 应用上面定义的差分,$f^{\prime}(x)$ 可近似为 $$ \begin{equation*} f^{\prime}(x) \approx \frac{\Delta f(x)}{\Delta x}=\frac{f(x+h)-f(x)}{h} . \tag{8.3} \end{equation*} $$ 故 $f^{\prime}(x)$ 可近似为函数的差分 $\Delta f(x)$ 除以自变量的差分 $\Delta x$ 的商,称为差商.在数值分析里面,$h$ 一般指大于 0 的增量.于是对于函数 $f(x)$ 的一阶导数 $f^{\prime}(x)$ 有如下的近似关系。 一阶向后差商:$\quad \frac{\mathrm{d} f(x)}{\mathrm{d} x} \approx \frac{\Delta f(x)}{\Delta x}=\frac{f(x)-f(x-h)}{h}$ , 一阶向前差商:$\frac{\mathrm{d} f(x)}{\mathrm{d} x} \approx \frac{\Delta f(x)}{\Delta x}=\frac{f(x+h)-f(x)}{h}$ , 一阶中心差商:$\frac{\mathrm{d} f(x)}{\mathrm{d} x} \approx \frac{\Delta f(x)}{\Delta x}=\frac{f(x+h)-f(x-h)}{2 h}$ . 下面利用泰勒公式讨论近似关系式(8.4)-(8.6)引入误差.由泰勒展开 $$ f\left(x_0+h\right)=f\left(x_0\right)+h f^{\prime}\left(x_0\right)+\frac{h^2}{2!} f^{\prime \prime}(\xi), \quad x_0 \leqslant \xi \leqslant x_0+h, $$ 得一阶向前差商的截断误差 $$ R(x)=f^{\prime}\left(x_0\right)-\frac{f\left(x_0+h\right)-f\left(x_0\right)}{h}=-\frac{h}{2} f^{\prime \prime}(\xi)=O(h) . $$ 一阶向后差商的分析与向前差商类似,由泰勒展开得向后差商的截断误差 $$ R(x)=f^{\prime}\left(x_0\right)-\frac{f\left(x_0\right)-f\left(x_0-h\right)}{h}=\frac{h}{2} f^{\prime \prime}(\xi)=O(h) . $$ 对于中心差商由 $f(x)$ 的泰勒展开 $$ \begin{aligned} & f\left(x_0+h\right)=f\left(x_0\right)+h f^{\prime}\left(x_0\right)+\frac{h^2}{2!} f^{\prime \prime}\left(x_0\right)+\frac{h^3}{3!} f^{\prime \prime \prime}\left(\xi_1\right), \\ & f\left(x_0-h\right)=f\left(x_0\right)-h f^{\prime}\left(x_0\right)+\frac{h^2}{2!} f^{\prime \prime}\left(x_0\right)-\frac{h^3}{3!} f^{\prime \prime \prime}\left(\xi_2\right), \end{aligned} $$ 得中心差商的截断误差 $$ \begin{aligned} R(x) & =f^{\prime}\left(x_0\right)-\frac{f\left(x_0+h\right)-f\left(x_0-h\right)}{2 h}=\frac{h^2}{12}\left[f^{\prime \prime \prime}\left(\xi_1\right)+f^{\prime \prime \prime}\left(\xi_2\right)\right] \\ & =\frac{h^2}{6} f^{\prime \prime \prime}(\xi)=O\left(h^2\right), \quad x_0-h \leqslant \xi \leqslant x_0+h \end{aligned} $$ 通过上面的分析,我们得到向前差商和向后差商的误差约与 $h$ 的一次方成正比,式(8.6)的引入误差约与 $h$ 的二次方成正比,因此就纯粹的关于导数的近似来讲,中心差商的截断误差小些.我们类似可以构造关于二阶及二阶以上导数的有限差分近似,这里就不再详述. 8.1.2 步长对有限差分近似的影响 在计算数值导数时,它的误差由截断误差和舍入误差两部分组成.用差商或插值公式近似导数产生截断误差,由原始值 $y_i$ 的数值近似产生舍入误差.在差商计算中,从截断误差的逼近值的角度看,$|h|$ 越小,则误差也越小;但是太小的 $|h|$ 会带来较大的舍入误差.怎样选择最佳步长,使截断误差与舍入误差之和最小呢? 下面以中心差商为例进行分析,截断误差不超过 $$ \frac{h^2}{6} M_3=\frac{h^2}{6} \max \left|f^{\prime \prime \prime}(x)\right| . $$ 可以证明舍入误差可用量 $e / h$ 来估计,其中 $e$ 是函数 $y_i$ 的原始值的绝对误差限,总误差为 $$ \frac{h^2}{6} M_3+\frac{e}{h} . $$ 当 $\left(\frac{h^2}{6} M_3+\frac{e}{h}\right)^{\prime}=\frac{h}{3} M_3-\frac{e}{h^2}=0$ 时,总误差达到最小值,即 $h=\sqrt[3]{\frac{3 e}{M_3}}$ . 可以看到用误差的表达式来确定步长,难度较大且难以操作.通常用事后估计方法选取步长 $h$ ,例如,分别用 $D(h), D\left(\frac{h}{2}\right)$ 来表示步长等于 $h, \frac{h}{2}$ 的差商计算公式,给定误差界 $\varepsilon$ ,当 $\left|D(h)-D\left(\frac{h}{2}\right)\right|<\varepsilon$ 时,$\frac{h}{2}$ 就是合适的步长. 例 8.1 对函数 $y=\mathrm{e}^x$ ,取不同的步长计算 $f^{\prime}(1.15)$ ,观察误差变化规律,从而确定最佳步长. 解 通过计算,结果如表 8.1.  表 8.1 中数据显示,当步长 $h$ 从 0.10 减少到 0.03 时,数值微分误差的绝对值从 0.0048 减少到 0.0001 ,而随着 $h$ 的进一步减少,误差的绝对值又有所反弹,表明当步长 $h$ 小于 0.03 时,舍入误差起了主要作用. 在实际计算中是无法得到误差的准确数值的,这时以 $\left|D\left(h_i\right)-D\left(h_{i+1}\right)\right|$ 最小为标准确定步长,本例中取 $h=0.04$ . 8.1.3 插值型数值微分 对于给定的 $f(x)$ 或 $f(x)$ 的函数表,我们可以建立插值函数 $L(x)$ ,从而利用插值函数 $L(x)$ 的导数近似函数 $f(x)$ 的导数.下面我们介绍一下. 设 $x_i, i=0,1, \cdots, n$ 为区间 $[a, b]$ 上的节点,给定 $\left(x_i, f\left(x_i\right)\right), i=0,1, \cdots, n$ ,以 $\left(x_i, f\left(x_i\right)\right)$为插值点构造插值多项式 $L_n(x)$ ,以 $L_n(x)$ 的各阶导数近似 $f(x)$ 的相应阶的导数,即 $$ \begin{aligned} & f(x)=L_n(x)=\sum_{i=0}^n l_i(x) f\left(x_i\right), \\ & f^{\prime}(x)=L_n^{\prime}(x)=\sum_{i=0}^n l_i^{\prime}(x) f\left(x_i\right) . \end{aligned} $$ 当 $x=x_i$ 时, $$ \begin{equation*} f^{\prime}\left(x_j\right) \approx \sum_{i=0}^n l_i^{\prime}\left(x_j\right) f\left(x_i\right), \quad j=0,1, \cdots, n . \tag{8.7} \end{equation*} $$ 误差项为 $$ R(x)=\frac{\mathrm{d}}{\mathrm{~d} x}\left(\frac{f^{(n+1)}(\xi)}{(n+1)!} \prod_{i=0}^n\left(x-x_i\right)\right), \quad R\left(x_j\right)=\prod_{i=0}^n\left(x-x_i\right) \frac{f^{(n+1)}(\xi)}{(n+1)!} . $$ 例8.2 给定 $\left(x_i, f\left(x_i\right)\right), i=0,1,2$ .若 $x_2-x_1=x_1-x_0=h$ ,计算 $f^{\prime}\left(x_0\right), f^{\prime}\left(x_1\right)$ , $f^{\prime}\left(x_2\right)$ . 解 作过 $\left(x_i, f\left(x_i\right)\right), i=0,1,2$ 的插值多项式 $$ L_2(x)=\frac{\left(x-x_1\right)\left(x-x_2\right)}{2 h^2} f\left(x_0\right)+\frac{\left(x-x_0\right)\left(x-x_2\right)}{-h^2} f\left(x_1\right)+\frac{\left(x-x_0\right)\left(x-x_1\right)}{2 h^2} f\left(x_2\right) . $$ 上面插值多项式的导数为 $$ L_2^{\prime}(x)=\frac{f\left(x_0\right)}{2 h^2}\left(x-x_1+x-x_2\right)-\frac{f\left(x_1\right)}{h^2}\left(x-x_0+x-x_2\right)+\frac{f\left(x_2\right)}{2 h^2}\left(x-x_0+x-x_1\right) . $$ 将 $x=x_i$ 代入 $f^{\prime}(x)$ 得三点端点公式和三点中点公式 $$ \begin{aligned} & f^{\prime}\left(x_0\right)=\frac{1}{2 h}\left(-3 f\left(x_0\right)+4 f\left(x_1\right)-f\left(x_2\right)\right), \\ & f^{\prime}\left(x_1\right)=\frac{1}{2 h}\left(-f\left(x_0\right)+f\left(x_2\right)\right), \\ & f^{\prime}\left(x_2\right)=\frac{1}{2 h}\left(f\left(x_0\right)-4 f\left(x_1\right)+3 f\left(x_2\right)\right) . \end{aligned} $$ 利用泰勒展开进行比较和分析,可得三点公式的截断误差是 $O\left(h^2\right)$ 。类似地,可得到基于插值函数的其他类型的微分近似公式,在此就不展开说明了. 8.1.4 关于边界条件处理 上面讨论的是在区域内部差分的离散格式,如果遇到边界,离散点的布置将受到边界的限制,需要特别处理.为方便起见,这里设 $h$ 表示自变量的步长.下面讨论含导数的边界条件的三种处理方式,这里主要针对第二、三类边界条件进行讨论,它们主要出现在高阶方程中 $$ \begin{equation*} \left.\left(\frac{\mathrm{d} u}{\mathrm{~d} x}-\lambda_1 u\right)\right|_{x=0}=g_1,\left.\quad\left(\frac{\mathrm{~d} u}{\mathrm{~d} x}-\lambda_2 u\right)\right|_{x=L}=g_2 . \tag{8.8} \end{equation*} $$ (1)直接用向前或向后差商近似 $\frac{\mathrm{d} u}{\mathrm{~d} x}$ 。比如在左边界 $(x=0)$ 处用向前差商近似偏导数 $\frac{\mathrm{d} u}{\mathrm{~d} x}$ ,在右边界 $(x=L)$ 处用向后差商近似 $\frac{\mathrm{d} u}{\mathrm{~d} x}$ ,则得边界条件的差分近似为 $$ \left\{\begin{array}{l} \frac{u_1-u_0}{h}-\lambda_1 u_0=g_1, \tag{8.9}\\ \frac{u_n-u_{n-1}}{h}+\lambda_2 u_n=g_2, \end{array} \quad j=0,1, \cdots, m\right. $$ 上述近似(8.9)是一阶精度的.有时候一阶精度不能和内部的二阶精度相匹配,需用高阶差分近似。下面介绍两种处理方法。 (2)用中心差商近似 $\frac{\mathrm{d} u}{\mathrm{~d} x}$ ,则得边界条件的差分近似为 $$ \left\{\begin{array}{l} \frac{u_1-u_{-1}}{2 h}-\lambda_1 u_0=g_1, \tag{8.10}\\ \frac{u_{n+1}-u_{n-1}}{2 h}+\lambda_2 u_n=g_2, \end{array} \quad j=0,1, \cdots, m .\right. $$ 其精度为二阶。不过,虽然误差的阶数提高了,但出现定解区域外的节点 $u_{-1}$ 和 $u_{n+1}$ ,这就需要将解拓展到定解区域外。这可以通过用内节点上的 $u$ 值插值求出 $u_{-1}$ 和 $u_{n+1}$ ,也可以假定微分方程在边界上也成立,将差分方程扩展到边界节点上,由此消去 $u_{-1}$ 和 $u_{n+1}$ 。 (3)多项式展开法。 另外一种是采用多项式展开的方法,该方法和前面的插值法类似。假设图 8.1 中,边界上的 $u$值可以用多项式表示为 $$ \begin{equation*} u=a+b x+c x^2 \tag{8.11} \end{equation*} $$  将式(8.11)用于图8.1中的点,可以知道 点 1 处 $x=0$ , $$ \begin{equation*} u_1=a \tag{8.12} \end{equation*} $$ 点 2 处 $x=h$ , $$ \begin{equation*} u_2=a+b h+c h^2 \tag{8.13} \end{equation*} $$ 点 3 处 $x=2 h$ , $$ \begin{equation*} u_3=a+2 b h+4 c h^2 \tag{8.14} \end{equation*} $$ 求解式(8.12)-(8.14)得到 $$ b=\frac{-3 u_1+4 u_2-u_3}{2 h} $$ 利用上式对 $u$ 求导得到 $$ \begin{equation*} \frac{\mathrm{d} u}{\mathrm{~d} x}=b+2 c x \tag{8.15} \end{equation*} $$ 考虑到 $x=0$ ,从式(8.15)可以得到 $$ \begin{equation*} \left(\frac{\mathrm{d} u}{\mathrm{~d} x}\right)_1=b \tag{8.16} \end{equation*} $$ 从而得到 $$ \begin{equation*} \left(\frac{\mathrm{d} u}{\mathrm{~d} x}\right) \approx \frac{-3 u_1+4 u_2-u_3}{2 h} \tag{8.17} \end{equation*} $$ 最终得左、右边界条件的差分近似为 $$ \left\{\begin{array}{l} \frac{-3 u_0+4 u_1-u_2}{2 h}-\lambda_1 u_1=g_1, \tag{8.18}\\ \frac{-3 u_n+4 u_{n-1}-u_{n-2}}{2 h}-\lambda_2 u_n=g_2, \end{array} \quad j=0,1, \cdots, m\right. $$ 式(8.18)是一边界处的有限差分形式.因为式(8.18)中所有信息都是边界一边的节点,所以称为"单侧差分"。同时,式(8.18)用到了多项式的形式,这给出构造有限差分的另一种取得途径.另外,需要说明的是,可以证明式(8.18)在边界上也具有二阶精度的差分形式。此外,这些形式是通用的,它们不只局限于边界处,还可以用于网格的内部.
科数题库(单机版)
会议室预约系统(book)
今日还可看
0
篇 未注册用户每天查看4篇,
注册
用户每天8篇,
开通VIP
会员无限制查看。
免费注册
《高等数学》难点解析
高数教程
泰勒公式
切线与法线
切平面与法平面
驻点·拐点·极值点·零点
间断点
渐进线
瑕积分
欧拉方程
伯努利方程
Abel 收敛定理
偏导数的几何意义
偏导数的几何意义
梯度
数量场与向量场
多元函数极值
拉格朗日算子
通量与散度
环流量与旋度
格林公式
高斯公式
斯托克斯公式
三大公式比较
傅里叶级数
极坐标微元
点法式方程
变上限定积分
X型计算面积
Y型计算面积
微分的意义
渐近线
间断点
y''+py'+qy=f(x)方程
高斯
黎曼
傅里叶变换(复数)
拉普拉斯变换(复数)
《线性代数》难点解析
线代教程
近世代数对数学的整体思考
线性的意义
矩阵乘法(列视角)
矩阵乘法(行视角)
矩阵左乘
矩阵右乘
逆矩阵求解方程组
阶梯形矩阵的求法
方程组解的判定
四阶行列式的计算
线性变换的意义
线性空间
向量组的等价
线性空间的几何意义
基础解系的求法
施密特正交化
特征值与特征向量的意义
矩阵相似的几何意义
矩阵可对角化的理解
秩的意义(向量版)
秩的意义(方程版)
二次型的意义
《概率论与数理统计》难点解析
概率教程
置信区间与上a分位数
概率中的“取”与“放”
贝叶斯公式
全概率公式
泊松分布
指数分布
伽玛分布
二维密度图的意义
卷积的意义
相关系数的意义
k阶矩是与矩母函数
卡方分布的作用
单正态区间估计理解
假设检验理解
切比雪夫不等式
中心极限定理
上一篇:
没有了
下一篇:
欧拉格式与改进欧拉法
本文对您是否有用?
有用
(
0
)
无用
(
0
)
赞助:
知乎 Mathhub
启明星
商务合作
赞助本站
科数网
是专业的数学网站,为您提供题库与教程 版权所有 禁止镜像
部分内容采用AI辅助生成,请注意识别
如果页面无法显示请联系 18155261033 或 983506039@qq.com