第 6 章:数值积分和数值微分(一)

主要内容

  • 6.1 数值微分
  • 6.2 数值积分
  • 6.3 复化数值积分
  • 6.4 重积分
  • 6.5 高斯型积分

6.1 数值微分

当函数\(f(x)\)是以离散点列给出时,或当函数的表达式过于复杂时,常用数值微分近似计算\(f(x)\)的导数\(f'(x)\)

我们知道,导数是由差商的极限来定义的,有如下三种

\[\begin{align*} f'(x) &= \lim_{h \to 0} \frac{f(x+h) - f(x)}{h} \\ &= \lim_{h \to 0} \frac{f(x) - f(x-h)}{h} \\ &= \lim_{h \to 0} \frac{f(x+h) - f(x-h)}{2h} \end{align*}\]

  • 当极限无法求得时,一种自然的想法是用差商作为极限的近似值,也就是使用函数的差商作为函数导数的近似值
  • 相应的有三种差商形式的数值微分公式,都是用平均的变化率来近似导数
向前差商
  • 使用向前差商近似导数有

\[f'(x_0) \approx \frac{f(x_0 + h) - f(x_0)}{h} \]

  • \(h\)是一个增量,称为步长,\(x_0+h\)的位置在\(x_0\)的前面,因此称为向前差商。同理有向后、中心差商的定义
  • 由泰勒公式展开

\[f(x_0 + h) = f(x_0) + h f'(x_0) + \frac{h^2}{2!} f''(\xi), \quad \xi \in [x_0, x_0 + h] \]

  • 得到

\[f'(x_0) = \frac{f(x_0 + h) - f(x_0)}{h} - \frac{h}{2} f''(\xi) \]

  • 则向前差商的截断误差阶

\[R(x) = f'(x_0) - \frac{f(x_0 + h) - f(x_0)}{h} = -\frac{h}{2} f''(\xi) = O(h) \]

向后差商
  • 用向后差商近似导数有

\[f'(x_0) \approx \frac{f(x_0) - f(x_0 - h)}{h} \]

  • 与计算向前差商的方法类似,由泰勒展开得到向后差商的截断误差阶

\[R(x) = f'(x_0) - \frac{f(x_0) - f(x_0 - h)}{h} = O(h) \]

中心差商

\[f'(x_0) \approx \frac{f(x_0 + h) - f(x_0 - h)}{2h} = D(h, x_0) \]

  • 由泰勒展开

\[f(x_0 + h) = f(x_0) + h f'(x_0) + \frac{h^2}{2!} f''(x_0) + \frac{h^3}{3!} f'''(\xi_1) \]

\[f(x_0 - h) = f(x_0) - h f'(x_0) + \frac{h^2}{2!} f''(x_0) - \frac{h^3}{3!} f'''(\xi_2) \]

  • 两式相减得

\[\begin{align*} R(x) &= f'(x_0) - \frac{f(x_0 + h) - f(x_0 - h)}{2h} \\ &= -\frac{h^2}{12} \left( f'''(\xi_1) + f'''(\xi_2) \right) \\ &= -\frac{h^2}{6} f'''(\xi) = O(h^2) \\ &\quad x_0 - h \leq \xi \leq x_0 + h \end{align*}\]

  • 中心差商公式可以视为前两种方式的算数平均值,但误差阶由\(O(h)\)提高到\(O(h^2)\),因此也更加常用
差商的几何意义
  • 定义极限\(f'(x) = \lim_{h \to 0} \frac{f(x_0 + h) - f(x_0)}{h}\),表示\(f(x)\)\(x=x_0\)处切线的斜率,差商\(\frac{f(x_0 + h) - f(x_0)}{h}\)表示过\(x_0,f(x_0)\)\((x_0+h,f(x_0+h))\)两点直线的斜率,是一条通过\(x_0\)的割线,用割线的斜率代替切线的斜率
    image
设定最佳步长
  • 由上述对截断误差的分析,\(h\)越小,逼近效果约好,那么实际计算结果是不是随着\(h\)的减少,精度越高呢?

image

  • 计算结果见下表(精确值\(f'(2)=0.353553\)
    image
  • 由上表可以看到\(h=0.1\)时,逼近的效果最好,进一步缩小步长,逼近效果反而更差
  • 一般对导数的近似公式进行分析可得到截断误差的表达式,以中心差商为例子,截断误差不超过

\[\frac{h^2}{8} M_3 = \frac{h^2}{6} |f'''(x)| \]

  • 而对于舍入误差,可设\(f(x_0-h)\)\(f(x_0+h)\)分别有舍入误差\(\varepsilon_1\)\(\varepsilon_2\),令\(\varepsilon = \max\{|\varepsilon_1|, |\varepsilon_2|\}\),若忽略\(h\)的舍入误差,则:

\[\delta(D(h, x_0)) = |D^*(h, x_0) - D(h, x_0)| \leq \frac{|\varepsilon_1| + |\varepsilon_2|}{2h} \leq \frac{\varepsilon}{h} \]

  • 其中\(D(h,x_0)\)为中心差商公式。即舍入误差可以用\(\frac{\varepsilon}{h}\)估计
  • 总误差为

\[\frac{h^2}{6} M_3 + \frac{\varepsilon}{h} \]

  • \(h = \sqrt[3]{\frac{3\varepsilon}{M_3}}\)时,误差达到最小,即

\[\overline{M_3} \]

  • 可以看到用误差的表达式确定步长,难度较大,可行性差
  • 实际应用中,通常用事后估计的方法来确定步长\(h\)
    • 基本思想是,如果步长减半,所得的计算结果与原结果的误差在给定的误差范围内,则认为是合适的步长
    • 例如,记 $ D(h, x), D\left(\frac{h}{2}, x\right) $ 是步长为 $ h, \frac{h}{2} $ 时由差商得到的 $ f'(x) $ 的近似值,给定误差界 $ \varepsilon $,当 $ \left|D(h, x) - D\left(\frac{h}{2}, x\right)\right| < \varepsilon $ 时,步长 $ h $就是合适的步长。
差商与数值微分

我们先前讨论了用插值函数来近似函数的方法,自然的对于给定的\(f(x)\)的函数表,建立插值函数\(P(x)\)后,可以用插值函数\(P(x)\)的导数近似函数\(f(x)\)的导数
image
image
image
image
image

  • 与差商法相比,插值型求导方法更灵活,也可以用更复杂的插值技术如三次样条插值作为数值微分

6.2 数值积分

  • 对于积分

\[I = \int_{a}^{b} f(x) \, \text{d}x \]

  • 只要找到被积函数\(f(x)\)的原函数\(F(x)\),根据牛顿莱布尼兹公式有

\[I = \int_{a}^{b} f(x) \, \text{d}x = F(b) - F(a) \]

  • 但这种方法求积分经常遇到困难
    • 被积的原函数不能用初等函数表示
    • 被积函数是以点列的形式给出
    • 被积函数的原函数虽然可以用初等函数表示,但过于复杂

建立数值积分公式的思路很多,最常见的有两种

  1. 根据积分中值定理,在区间内\([a,b]\)存在一点\(\xi\),使得
  • \[\int_{a}^{b} f(x) \, dx = (b - a) f(\xi) \]

    • 即底为\((b-a)\)而高为\(f(\xi)\)的矩形的面积恰好等于所求曲边梯形的面积。但\(\xi\)的位置一般是未知的,因而\(f(\xi)\)也是未知的,我们将\(f(\xi)\)称为\(f(x)\)在区间\([a,b]\)上的平均高度。那么,只要对平均高度\(f(\xi)\)提供一种算法,相应地就获得一种数值求积的方法
  • 比如,用中点公式代替\(\xi\),即$\xi = \frac{a+b}{2}$,则可得到中点公式或称为中矩形公式(或简称矩形公式)

\[\int_{a}^{b} f(x) \, dx \approx f\left(\frac{a+b}{2}\right)(b-a) \]

  • 若用区间端点处函数值的算术平均值作为平均高度的近似,即\(f(\xi) \approx \frac{f(a) + f(b)}{2}\),则可得到梯形公式

\[\int_{a}^{b} f(x) \, dx \approx \frac{f(a) + f(b)}{2}(b-a) \]

  • 若用函数值\(f(a),f(b),f(\frac{a+b}{2})\)的加权平均值\(\frac{1}{6} \left[ f(a) + 4f\left(\frac{a+b}{2}\right) + f(b) \right]\)作为平均高度的近似值,则可得到辛普森公式或称为抛物线公式

\[\int_{a}^{b} f(x) \, dx \approx \frac{b-a}{6} \left[ f(a) + 4f\left(\frac{a+b}{2}\right) + f(b) \right] \]

  • 更一般的,可以在区间\([a,b]\)上适当选取某些节点\(x_i\),然后用\(f(x_i)\)的加权平均得到平均高度\(f(\xi)\)的近似值,这样构造出的求积公式具有以下形式

\[I(f) = \int_{a}^{b} f(x) \, dx \approx \sum_{i=0}^{n} \alpha_i f(x_i) = I_n(f) \]

  • 其中\(x_i\)称为求积节点,\(α_i\)称为求积系数。\(α_i\)仅与节点\(x_i\)的选取有关,而不依赖于被积函数\(f(x)\)的具体形式。本章中用\(I(f)\)表示积分的精确值,用\(I_n(f)\)表示近似积分值
  1. 先用某个简单函数\(\varphi(x)\)近似逼近\(f(x)\),用\(\varphi(x)\)代替\(f(x)\)计算定积分值,即

\[\int_{a}^{b} f(x) \, dx \approx \int_{a}^{b} \varphi(x) \, dx \]

  • 考虑到逼近效果和是否容易计算积分值,常将\(\varphi(x)\)选取为插值多项式,即\(f(x)\)的积分用插值多项式的积分来近似代替,相应的求积公式称为插值型求积公式
  • 事实上,上述梯形公式、辛普森公式都是插值型求积方法的特殊情况
代数精度

怎么判断数值积分公式的效果?
image

  • 该定义也可写为以下形式:
    image
代数精度例题

image
image
image
image
image

注意,代数精度这一概念只是定性描述一个求积公式的精度高低,并不能定量表示求积公式的误差大小

插值型数值积分

image
image
image

  • \(f(x)\)是一个不高于\(n\)次的多项式,由于\(f^{(n+1)}(x)=0\),则\(E_n(f)=0\)。因此,\(n\)阶插值型的数值积分至少有\(n\)阶代数精度
  • 反之,如果求积公式至少具有\(n\)次代数精度,则它必定是插值型的。
  • 综上有以下结论
例题


牛顿-科特斯积分

  1. 梯形积分
  • \((a,f(a))\)\((b,f(b))\)为插值点构造的线性函数\(L_1(x)\),有

\[\int_{a}^{b} f(x) \, dx \approx \int_{a}^{b} L_{1}(x) \, dx \]

  • 那么
  • 提取公因子\((b-a)\)后,得到的牛顿-科特斯积分的组合系数\(C^{(1)}_0=\frac{1}{2},c_1^{(1)}=\frac{1}{2}\),它们已经与积分区间没任何关系了,即

\[\int_{a}^{b} f(x) \, dx \approx \frac{b-a}{2} (f(a) + f(b)) \]

\[T(f) = \frac{b-a}{2} (f(a) + f(b)) \]

  • \(T(f)\)为梯形积分公式
  • 容易验证梯形积分公式具有一阶代数精度

\[f(x) = L_1(x) + \frac{f''(\xi)}{2!}(x-a)(x-b), \quad a \leq \xi \leq b \]

\[E_1(x) = \int_{a}^{b} \frac{f''(\xi)}{2!}(x-a)(x-b) \, dx \]

  • 因为\((x-a)(x-b)\)\([a,b]\)上不变号,由积分第一中值定理得到梯形积分公式的截断误差

\[E_1(x) = \frac{f''(\eta)}{2!} \int_{a}^{b} (x-a)(x-b) \, dx = -\frac{f''(\eta)}{12}(b-a)^3, \quad a \leq \eta \leq b \]

  1. 辛普森积分


  • \(s(f)\)为辛普森积分公式或抛物线积分公式。它的几何意义是用过三点的抛物线近似代替积分区域原来的曲边,以新曲边梯形的面积代替原曲边梯形的面积
  • 辛普森公式的误差
  1. 牛顿-科特斯积分系数




posted @ 2024-12-23 09:05  韦飞  阅读(194)  评论(0)    收藏  举报