数值计算,即数值分析,是一门研究各种数学问题数值解法及其理论的学科。在实际中,当精确解析法难以求解数学问题时,数值计算发挥重要作用。它涵盖函数逼近与插值、数值积分与微分、线性方程组求解、非线性方程(组)求解以及常微分方程初值问题数值解法等方面。通过各种特定的方法,如插值法、最小二乘法、梯形法、辛普森法、高斯消元法、迭代法、牛顿法、欧拉法、龙格 - 库塔法等,为科学与工程领域,包括物理学、工程学、计算机科学、经济学等提供强大的解决复杂实际问题的工具,进行模拟、预测和优化。

课程章节
  • CH1 数值计算方法绪论。
  • CH2 插值法。
  • CH3 函数逼近与曲线拟合。
  • CH4 数值积分与数值微分。
  • CH5 线性方程组的直接解法。
  • CH6 线性方程组的迭代解法。
  • CH7 非线性方程(组)的数值解法。
  • CH8 常微分方程初值问题数值解法。
  • CH9 深度学习中的数值问题。

数值计算上_1731553895253

# 误差

在数值计算中可能产生的误差主要有:

  • 模型误差
  • 观测误差
  • 截断误差
  • 舍入误差

在数值计算中将着重研究 截断误差、舍入误差,并对它们的传播与积累作出分析


# 绝对误差

近似值:xx^* ;准确值:xx

绝对误差:近似值与准确值之差

e=xxe^* = x^* - x

绝对误差限:误差绝对值的上界

\begin{align} |e^*|&=|x^*-x|\le \epsilon^*\\ x&= x^*\pm \epsilon^* \end{align}

# 相对误差

相对误差:误差与准确值的比值

er=exex=xxxe^*_r =\frac{e^*}{x}\approx\frac{e^*}{x^*}=\frac{x^*-x}{x^*}

相对误差限:相对误差绝对值的上界 ϵr\epsilon^*_r , 即 erϵr|e^*_r| \le \epsilon^*_r

ϵr=ϵx\epsilon^*_r = \frac{\epsilon^*}{|x^*|}

ϵ\epsilon^* 是绝对误差限

# 有效数字

一、有效数字的定义

在数值计算中,若一个近似值 xx 的误差限是其某一位上的 半个单位 ,且从该位到 xx 的左边第一个非零数字一共有 nn 位,则称近似值 xxnn 位有效数字。

例如,取圆周率 π\pi 的近似值为 3.14,它的误差限不超过 0.005,从左边第一个非零数字 3 到最后一位数字 4 一共有三位,则近似值 3.14 有三位有效数字。

二、有效数字和相对误差限的关系

  1. 设近似值 xx 表示为 x=±0.a1a2an×10mx=\pm0.a_1a_2\cdots a_n\times10^{m},其中 a1,a2,,ana_1,a_2,\cdots,a_n 是 0 到 9 中的数字,a10a_1\neq0mm 为整数。若 xxnn 位有效数字,则其相对误差限为:

    • δ12a1×10(n1)\delta\leq\frac{1}{2a_1}\times10^{-(n - 1)}

    反过来,如果已知近似值 xx 的相对误差限满足上述条件,也可以确定 xx 具有 nn 位有效数字。

  2. 举例说明:

    • 若近似值 x=0.00324x = 0.00324 有三位有效数字,从左边第一个非零数字 3 开始,到最后一位数字 4 一共有三位。此时 a1=3a_1 = 3n=3n = 3,代入相对误差限公式可得:

      δ12×3×10(31)=16×102=0.00167\delta\leq\frac{1}{2\times3}\times10^{-(3 - 1)}=\frac{1}{6}\times10^{-2}=0.00167

    • 若已知一个近似值的相对误差限为 0.0050.005,假设这个近似值为 x=±10m×0.a1a2an×10mx=\pm10^{m}\times0.a_1a_2\cdots a_n\times10^{m},根据相对误差限公式 δ12a1×10(n1)\delta\leq\frac{1}{2a_1}\times10^{-(n - 1)},当 a1=1a_1 = 1 时,0.005=12×1×10(n1)0.005=\frac{1}{2\times1}\times10^{-(n - 1)},通过求解可得 n=2n = 2,即该近似值有两位有效数字。

# 病态问题和条件数

一、病态问题

当一个数学问题的解对数据的微小变化非常敏感时,就称这个问题为病态问题。

例如,考虑线性方程组 Ax=bAx = b,其中 AA 是系数矩阵,xx 是未知向量,bb 是右端项。如果系数矩阵 AA 的微小变化会导致解 xx 发生很大的变化,那么这个线性方程组就是病态的。

病态问题在实际计算中会带来很大的困难,因为数据的测量或计算过程中不可避免地会存在误差,而对于病态问题,这些误差可能会被极大地放大,使得计算结果的可靠性大大降低。

二、条件数

条件数是用来衡量一个问题病态程度的指标。

  1. 对于线性方程组Ax=bAx = b,矩阵 AA 的条件数定义为condv=AvA1vcond_v = \|A\|_v\|A^{-1}\|_v,其中 \|\cdot\| 表示矩阵的vv 范数.

    • 条件数越大,说明问题越病态,解对数据的微小变化就越敏感。
    • 条件数越小,问题的病态程度就越低,解相对比较稳定。
  2. 例如,当条件数非常大时,即使右端项 bb 只有很小的误差,解 xx 可能会产生很大的误差。而当条件数较小时,数据的微小误差对解的影响相对较小。

在数值计算中,了解问题的病态程度是非常重要的,可以通过分析条件数来判断问题是否病态,并采取相应的措施来减少误差的影响,比如使用更稳定的算法、提高数据的精度等。

矩阵为方阵且满秩则存在逆矩阵


  1. 计算函数值问题的条件数定义为:相对误差比值 f(x)f(x)f(x)/Δxxxf(x)f(x)\left|\frac{f(x)-f\left(x^{*}\right)}{f(x)}\right| /\left|\frac{\Delta x}{x}\right| \approx\left|\frac{x f^{\prime}(x)}{f(x)}\right|,记为 CpC_{p}
  2. 如果条件数 CpC_{p} 很大,即使自变量相对误差一般不大,也会引起函数值相对误差很大。出现这种情况的问题被称为病态问题。
  3. 一般情况下,当条件数 Cp10C_{p}\geq10 时,就认为是病态问题,并且条件数越大,病态越严重。
病态问题
  1. 病态问题在数值计算中会带来很大的挑战。因为在实际计算中,数据往往存在一定的误差,而对于病态问题,这些误差会被极大地放大,导致计算结果的可靠性降低。
  2. 为了应对病态问题,可以采取一些措施。例如,使用更稳定的算法、提高数据的精度、进行数据预处理以减少误差等。
  3. 在实际应用中,判断一个问题是否为病态问题是非常重要的。可以通过计算条件数来初步判断问题的病态程度。如果条件数较大,就需要更加谨慎地处理问题,以避免误差的过度放大。
  4. 不同的问题可能具有不同程度的病态性。有些问题可能在特定的参数范围内是病态的,而在其他参数范围内则是良态的。因此,在分析问题时,需要综合考虑各种因素,以确定问题的病态程度。
  5. 除了计算函数值问题,在其他数值计算问题中,也可以类似地定义条件数来衡量问题的病态程度。例如,在求解线性方程组、插值问题、数值积分等问题中,都可以通过分析条件数来判断问题的稳定性和可靠性。

additional : 数值稳定性

# 插值

# 拉格朗日插值

一、基本概念

给定 n+1n+1 个互异的节点 (x0,y0),(x1,y1),,(xn,yn)(x_0,y_0),(x_1,y_1),\cdots,(x_n,y_n),其中 xix_i 互不相同,yiy_i 为对应的函数值。拉格朗日插值的目的是构造一个次数不超过 nn 的多项式 Ln(x)L_n(x),使得在这些节点上,Ln(xi)=yiL_n(x_i)=y_i,即多项式在给定的节点处与函数值相等。

二、插值多项式的形式

拉格朗日插值多项式的形式为:

Ln(x)=i=0nyili(x)L_n(x)=\sum_{i = 0}^{n}y_il_i(x)

其中 Li(x)L_i(x) 为拉格朗日基函数,定义为:

li(x)=j=0,jinxxjxixjl_i(x)=\prod_{j = 0, j\neq i}^{n}\frac{x - x_j}{x_i - x_j}

定义 1:若 nn 次多项式 lj(x)(j=0,1,,n)l_j(x)(j = 0,1,\cdots,n)n+1n + 1 个节点 x0<x1<<xnx_0\lt x_1\lt\cdots\lt x_n 上满足条件:

lj(xk)={1,k=j;0,kj.(j,k=0,1,,n)(2.7)l_{j}\left(x_{k}\right)=\begin{cases}1, & k = j; \\ 0, & k\neq j.\end{cases}\ (j, k = 0,1,\cdots, n)\ (2.7)

就称这 n+1n + 1nn 次多项式 l0(x),l1(x),,ln(x)l_0(x),l_1(x),\cdots,l_n(x) 为节点 x0,x1,,xnx_0,x_1,\cdots,x_n 上的 nn 次插值基函数。

三、计算步骤

  1. 确定插值节点:给定一组互异的节点 (x0,y0),(x1,y1),,(xn,yn)(x_0,y_0),(x_1,y_1),\cdots,(x_n,y_n)
  2. 计算拉格朗日基函数:对于每个 ii,计算 Li(x)L_i(x)
    • 例如,当 n=2n = 2 时,假设有三个节点 (x0,y0),(x1,y1),(x2,y2)(x_0,y_0),(x_1,y_1),(x_2,y_2),则:
      • l0(x)=(xx1)(xx2)(x0x1)(x0x2)l_0(x)=\frac{(x - x_1)(x - x_2)}{(x_0 - x_1)(x_0 - x_2)}
      • l1(x)=(xx0)(xx2)(x1x0)(x1x2)l_1(x)=\frac{(x - x_0)(x - x_2)}{(x_1 - x_0)(x_1 - x_2)}
      • l2(x)=(xx0)(xx1)(x2x0)(x2x1)l_2(x)=\frac{(x - x_0)(x - x_1)}{(x_2 - x_0)(x_2 - x_1)}
  3. 计算插值多项式:将节点的函数值 yiy_i 和对应的基函数 Li(x)L_i(x) 代入插值多项式公式,得到 Ln(x)=i=0nyili(x)L_n(x)=\sum_{i = 0}^{n}y_il_i(x)

四、特点和应用

  1. 特点:

    • 拉格朗日插值多项式在节点处与给定的函数值完全相等,具有较高的精度。
    • 当节点增加时,需要重新计算整个插值多项式,计算量较大
    • 对于高次插值,可能会出现龙格现象,即在插值区间的两端,插值多项式的波动较大,与原函数的差异较大。
  2. 应用:

    • 函数逼近:可以用拉格朗日插值多项式来逼近一个未知的函数。
    • 数据拟合:当只有离散的数据点时,可以通过拉格朗日插值得到一个连续的函数表达式。
    • 数值积分和数值微分:可以利用插值多项式进行数值积分和数值微分的计算。
例题

假设有三个数据点 (1,2)(1,2)(2,5)(2,5)(3,10)(3,10),要求通过拉格朗日插值法构造一个插值多项式来逼近函数关系。

  1. 首先确定插值基函数:

    • 对于三个节点,n=2n = 2
    • j=0j = 0 时,x0=1x_0 = 1,对应的基函数 l0(x)=(xx1)(xx2)(x0x1)(x0x2)=(x2)(x3)(12)(13)=(x2)(x3)2l_0(x)=\frac{(x - x_1)(x - x_2)}{(x_0 - x_1)(x_0 - x_2)}=\frac{(x - 2)(x - 3)}{(1 - 2)(1 - 3)}=\frac{(x - 2)(x - 3)}{2}.
    • j=1j = 1 时,x1=2x_1 = 2,对应的基函数 l1(x)=(xx0)(xx2)(x1x0)(x1x2)=(x1)(x3)(21)(23)=(x1)(x3)l_1(x)=\frac{(x - x_0)(x - x_2)}{(x_1 - x_0)(x_1 - x_2)}=\frac{(x - 1)(x - 3)}{(2 - 1)(2 - 3)}=(x - 1)(x - 3).
    • j=2j = 2 时,x2=3x_2 = 3,对应的基函数 l2(x)=(xx0)(xx1)(x2x0)(x2x1)=(x1)(x2)(31)(32)=(x1)(x2)2l_2(x)=\frac{(x - x_0)(x - x_1)}{(x_2 - x_0)(x_2 - x_1)}=\frac{(x - 1)(x - 2)}{(3 - 1)(3 - 2)}=\frac{(x - 1)(x - 2)}{2}
  2. 然后构造插值多项式:

    • 插值多项式为

      L2(x)=y0l0(x)+y1l1(x)+y2l2(x)L_2(x)= y_0l_0(x)+y_1l_1(x)+y_2l_2(x)

    • 已知 y0=2y_0 = 2y1=5y_1 = 5y2=10y_2 = 10. 则

      L2(x)=2×(x2)(x3)2+5×(x1)(x3)+10×(x1)(x2)2.L_2(x)= 2\times\frac{(x - 2)(x - 3)}{2}+5\times(x - 1)(x - 3)+10\times\frac{(x - 1)(x - 2)}{2}.

    • 化简可得:L2(x)=x2+2x1L_2(x)=x^2 + 2x - 1。 这个插值多项式 L2(x)L_2(x) 在给定的三个节点处与函数值相等,即 L2(1)=2L_2(1)=2L2(2)=5L_2(2)=5L2(3)=10L_2(3)=10。它可以用来逼近这三个数据点所代表的函数关系。

    • 事实上如果这是一个 2 次函数,则二次拉格朗日插值得到的就是 原函数

      在拉格朗日插值中,利用余项表达式(2.12)可知,若被插函数 f(x)Hnf(x)\in H_n,由于 f(n+1)(x)=0f^{(n + 1)}(x)=0,故 Rn(x)=f(x)Ln(x)=0R_n(x)=f(x)-L_n(x)=0,即它的插值多项式 Ln(x)=f(x)L_n(x)=f(x)

在拉格朗日插值中,插值余项与误差估计是评估插值效果的重要指标。

五、插值余项

若在区间 [a,b][a,b] 上用 Ln(x)L_n(x) 近似 f(x)f(x),则截断误差 Rn(x)=f(x)Ln(x)R_n(x)=f(x)-L_n(x) 被称为插值多项式的余项。

六、误差估计

定理 2.red}:({(n)) $f(x)$ 在 [a,b][a,b] 上连续,f(n+1)(x)f^{(n + 1)}(x)(a,b)(a,b) 内存在,节点 ax0<x1<<xnba\leq x_0\lt x_1\lt\cdots\lt x_n\leq bLn(x)L_n(x) 是满足特定条件的插值多项式,则对任何 x[a,b]x\in[a,b],插值余项

Rn(x)=f(x)Ln(x)=f(n+1)(ξ)(n+1)!ωn+1(x).R_{n}(x)= f(x)-L_{n}(x)=\frac{f^{(n + 1)}(\xi)}{(n + 1)!}\omega_{n + 1}(x).

这里 ξ(a,b)\xi\in(a,b) 且依赖于 xxωn+1(x)=j=0n(xxj)\omega_{n + 1}(x)=\prod_{j = 0}^{n}(x - x_j).

  1. 这个公式可以用来估计插值的误差。当 f(n+1)(x)f^{(n + 1)}(x) 在区间上有界时,可以通过余项公式得到误差的上界

    • 例如,如果能确定 f(n+1)(x)f^{(n + 1)}(x) 的一个上界 MM,即对于所有的 x(a,b)x\in(a,b),有

      f(n+1)(x)M\vert f^{(n + 1)}(x)\vert\leq M​

      那么误差

      Rn(x)=f(n+1)(ξ)(n+1)!ωn+1(x)M(n+1)!ωn+1(x).\vert R_n(x)\vert =\vert\frac{f^{(n + 1)}(\xi)}{(n + 1)!}\omega_{n + 1}(x)\vert\leq\frac{M}{(n + 1)!}\vert\omega_{n + 1}(x)\vert.

  2. 从误差估计可以看出以下几点:

    • 插值多项式的次数 nn 越高,理论上误差可能会越小。因为分母 (n+1)!(n + 1)! 随着 nn 的增大而增大。

    • 然而,在实际应用中,高次插值并不一定总是能得到更好的结果。这是因为高次插值可能会出现龙格现象,即在插值区间的两端,插值多项式的波动较大,与原函数的差异较大。

    • 插值节点的分布也会影响误差。如果插值节点分布不均匀或者过于密集,可能会导致误差增大。

# 差商

一、定义

设有函数 f(x)f(x) 以及一系列互不相等的点 x0,x1,,xnx_0,x_1,\cdots,x_n,则 ff 在这些点处的一阶差商定义为:

f[xi,xi+1]=f(xi+1)f(xi)xi+1xif [x_i, x_{i + 1}] =\frac{f(x_{i + 1})-f(x_i)}{x_{i + 1}-x_i}

二阶差商定义为:

f[xi,xi+1,xi+2]=f[xi+1,xi+2]f[xi,xi+1]xi+2xif [x_i, x_{i + 1}, x_{i + 2}] =\frac{f [x_{i + 1}, x_{i + 2}]-f [x_i, x_{i + 1}]}{x_{i + 2}-x_i}

以此类推,nn 阶差商定义为:

f[x0,x1,,xn]=f[x1,x2,,xn]f[x0,x1,,xn1]xnx0f [x_0, x_1,\cdots, x_n] =\frac{f [x_1, x_2,\cdots, x_n]-f [x_0, x_1,\cdots, x_{n - 1}]}{x_n - x_0}

二、性质

  1. 对称性:差商的值与节点的顺序无关。即对于任意的置换 σ\sigma,有 f[xσ(0),xσ(1),,xσ(n)]=f[x0,x1,,xn]f[x_{\sigma(0)},x_{\sigma(1)},\cdots,x_{\sigma(n)}]=f[x_0,x_1,\cdots,x_n]

  2. 可通过 差商表 计算:可以通过构造差商表来方便地计算高阶差商。差商表是一个二维表格,其中第一列是节点,其余列是对应节点的差商。从低阶到高阶逐步计算差商,可以提高计算效率。

  3. f(x)f(x)[a,b][a,b] 上存在 nn 阶导数,且节点 x0,x1,,xn[a,b]x_0,x_1,\cdots,x_n\in[a,b],则 nn 阶均差与导数关系如下:

    f[x0,x1,,xn]=f(n)(ξ)n!f[x_0,x_1,\cdots,x_n]=\frac{f^{(n)}(\xi)}{n!}ξ[a,b]\xi\in[a,b].

    这公式可直接用罗尔定理证明。

    q(x)=f[x,x0,,xn](xx0)(xx1)(xxn)q(x)=f[x,x_0,\cdots,x_n](x - x_0)(x - x_1)\cdots(x - x_n)q(x)q(x)

    x0,,xnx_0,\cdots,x_n 处均为零,所以 q(x)q(x)[a,b][a,b] 上有 n+1n + 1 个零点。

    根据罗尔定理,q(x)q'(x)q(x)q(x) 的两个零点间至少有一个零点,故 q(x)q'(x)[a,b][a,b] 内至少有 nn 个零点;反复应用罗尔定理,可知 q(n)(x)q^{(n)}(x)[a,b][a,b] 内至少有 11 个零点,记为 ξ[a,b]\xi\in[a,b],使

    q(n)(ξ)=f(n)(ξ)n!f[x0,,xn]=0q^{(n)}(\xi)=f^{(n)}(\xi)-n!f[x_0,\cdots,x_n]=0

    所以 f[x0,,xn]=f(n)(ξ)n!f[x_0,\cdots,x_n]=\frac{f^{(n)}(\xi)}{n!}

三、应用

  1. 牛顿插值:差商在牛顿插值法中起着关键作用。牛顿插值多项式的形式为:

Nn(x)=f(x0)+f[x0,x1](xx0)+f[x0,x1,x2](xx0)(xx1)++f[x0,x1,,xn](xx0)(xx1)(xxn1)N_n(x)= f(x_0)+f [x_0, x_1](x - x_0)+f [x_0, x_1, x_2](x - x_0)(x - x_1)+\cdots+f [x_0, x_1,\cdots, x_n](x - x_0)(x - x_1)\cdots(x - x_{n - 1})

通过差商可以确定插值多项式的系数,从而实现对函数的逼近。

  1. 数值微分:可以利用差商来近似计算函数的导数。例如,一阶导数可以近似为一阶差商,即 f(x)f(x+h)f(x)hf^\prime(x)\approx\frac{f(x + h)-f(x)}{h},其中 hh 是一个小的增量。

四、差商表计算

以下是升序下标的差商表示例:

xkx_kf(xk)f(x_k)一阶差商二阶差商三阶差商四阶差商\cdotsnn 阶差商
x0x_0f(x0)f(x_0)\cdots
x1x_1f(x1)f(x_1)f[x0,x1]f[x_0,x_1]\cdots
x2x_2f(x2)f(x_2)f[x1,x2]f[x_1,x_2]f[x0,x1,x2]f[x_0,x_1,x_2]\cdots
x3x_3f(x3)f(x_3)f[x2,x3]f[x_2,x_3]f[x1,x2,x3]f[x_1,x_2,x_3]f[x0,x1,x2,x3]f[x_0,x_1,x_2,x_3]\cdots
x4x_4f(x4)f(x_4)f[x3,x4]f[x_3,x_4]f[x2,x3,x4]f[x_2,x_3,x_4]f[x1,x2,x3,x4]f[x_1,x_2,x_3,x_4]f[x0,x1,x2,x3,x4]f[x_0,x_1,x_2,x_3,x_4]\cdots
\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots
xnx_nf(xn)f(x_n)f[xn1,xn]f[x_{n - 1},x_n]f[xn2,xn1,xn]f[x_{n - 2},x_{n - 1},x_n]f[xn3,xn2,xn1,xn]f[x_{n - 3},x_{n - 2},x_{n - 1},x_n]f[xn4,xn3,xn2,xn1,xn]f[x_{n - 4},x_{n - 3},x_{n - 2},x_{n - 1},x_n]\cdotsf[x0,x1,,xn]f[x_0,x_1,\cdots,x_n]

其中一阶差商计算公式为:

f[xi,xi+1]=f(xi+1)f(xi)xi+1xif[x_i,x_{i + 1}]=\frac{f(x_{i + 1}) - f(x_i)}{x_{i + 1}-x_i}

二阶差商计算公式为:f[xi,xi+1,xi+2]=f[xi+1,xi+2]f[xi,xi+1]xi+2xif[x_i,x_{i + 1},x_{i + 2}]=\frac{f[x_{i + 1},x_{i + 2}] - f[x_i,x_{i + 1}]}{x_{i + 2}-x_i}

以此类推,nn 阶差商计算公式为:f[x0,x1,,xn]=f[x1,x2,,xn]f[x0,x1,,xn1]xnx0f[x_0,x_1,\cdots,x_n]=\frac{f[x_1,x_2,\cdots,x_n]-f[x_0,x_1,\cdots,x_{n - 1}]}{x_n - x_0}

# 牛顿插值

牛顿插值法是一种数值插值方法,它通过差商来构建插值多项式。与拉格朗日插值法不同,牛顿插值法在增加新的插值节点时,不需要重新计算整个插值多项式,只需要计算新节点对应的差商项并加入到原有的多项式中即可

  1. 牛顿插值多项式的形式
    • 设给定 n+1n + 1 个互异的节点 (x0,y0),(x1,y1),,(xn,yn)(x_0,y_0),(x_1,y_1),\cdots,(x_n,y_n)牛顿插值多项式 为:

    • 首先计算差商表:从一阶差商开始,逐步计算高阶差商,形成一个差商表。
    • 然后根据差商表中的数据构建牛顿插值多项式:从最低阶的项开始,依次加入高阶差商项,直到得到所需的插值多项式。

以下是通过差商表达式迭代推出牛顿插值公式的过程

  1. 首先从一阶差商开始:
  • 已知 f[x,x0]=f(x)f(x0)xx0f[x,x_0]= \frac{f(x)-f(x_0)}{x - x_0},变形可得 f(x)=f(x0)+f[x,x0](xx0)f(x)=f(x_0)+f[x,x_0](x - x_0)
  1. 接着引入二阶差商:

    • f[x,x0,x1]=f[x,x0]f[x0,x1]xx1f[x,x_0,x_1]=\frac{f[x,x_0]-f[x_0,x_1]}{x - x_1},将 f[x,x0]=f(x)f(x0)xx0f[x,x_0]=\frac{f(x)-f(x_0)}{x - x_0} 代入可得:
    • f[x,x0,x1]=f(x)f(x0)xx0f[x0,x1]xx1=f(x)f(x0)(xx0)f[x0,x1](xx0)(xx1)f[x,x_0,x_1]=\frac{\frac{f(x)-f(x_0)}{x - x_0}-f[x_0,x_1]}{x - x_1}=\frac{f(x)-f(x_0)-(x - x_0)f[x_0,x_1]}{(x - x_0)(x - x_1)}
    • 进一步变形得到 f(x)=f(x0)+f[x0,x1](xx0)+f[x,x0,x1](xx0)(xx1)f(x)=f(x_0)+f[x_0,x_1](x - x_0)+f[x,x_0,x_1](x - x_0)(x - x_1)
  2. 然后引入三阶差商:

    • f[x,x0,x1,x2]=f[x,x0,x1]f[x0,x1,x2]xx2f[x,x_0,x_1,x_2]=\frac{f[x,x_0,x_1]-f[x_0,x_1,x_2]}{x - x_2},把前面得到的 f[x,x0,x1]f[x,x_0,x_1] 表达式代入可得:
    • f[x,x0,x1,x2]=f(x)f(x0)(xx0)f[x0,x1](xx0)(xx1)f[x0,x1,x2]xx2=f(x)f(x0)(xx0)f[x0,x1](xx0)(xx1)f[x0,x1,x2](xx0)(xx1)(xx2)f[x,x_0,x_1,x_2]=\frac{\frac{f(x)-f(x_0)-(x - x_0)f[x_0,x_1]}{(x - x_0)(x - x_1)}-f[x_0,x_1,x_2]}{x - x_2}=\frac{f(x)-f(x_0)-(x - x_0)f[x_0,x_1]-(x - x_0)(x - x_1)f[x_0,x_1,x_2]}{(x - x_0)(x - x_1)(x - x_2)}
    • 进而得到 f(x)=f(x0)+f[x0,x1](xx0)+f[x0,x1,x2](xx0)(xx1)+f[x,x0,x1,x2](xx0)(xx1)(xx2)f(x)=f(x_0)+f[x_0,x_1](x - x_0)+f[x_0,x_1,x_2](x - x_0)(x - x_1)+f[x,x_0,x_1,x_2](x - x_0)(x - x_1)(x - x_2)
  3. 以此类推:

    • 最终可以得到牛顿插值公式

      Nn(x)=f(x0)+f[x0,x1](xx0)+f[x0,x1,x2](xx0)(xx1)++f[x0,x1,,xn](xx0)(xx1)(xxn1)N_n(x)= f(x_0)+f [x_0, x_1](x - x_0)+f [x_0, x_1, x_2](x - x_0)(x - x_1)+\cdots+f [x_0, x_1,\cdots, x_n](x - x_0)(x - x_1)\cdots(x - x_{n - 1})

已知三个数据点 (1,2)(1,2)(2,5)(2,5)(3,10)(3,10),求牛顿插值多项式。

  1. 计算差商表:
    • 首先列出数据点:
      xxyy
      12
      25
      310
    • 计算一阶差商:
      • f[x0,x1]=f(x1)f(x0)x1x0=5221=3f[x_0,x_1]=\frac{f(x_1)-f(x_0)}{x_1-x_0}=\frac{5 - 2}{2 - 1}=3
      • f[x1,x2]=f(x2)f(x1)x2x1=10532=5f[x_1,x_2]=\frac{f(x_2)-f(x_1)}{x_2-x_1}=\frac{10 - 5}{3 - 2}=5
    • 计算二阶差商:
  • f[x0,x1,x2]=f[x1,x2]f[x0,x1]x2x0=5331=1f[x_0,x_1,x_2]=\frac{f[x_1,x_2]-f[x_0,x_1]}{x_2-x_0}=\frac{5 - 3}{3 - 1}=1

差商表如下:

xxyy一阶差商二阶差商
x0=1x_0=1y0=1y_0=1
x1=2x_1=2y1=5y_1=5f[x0,x1]=3f[x_0,x_1]=3
x2=3x_2=3y2=10y_2=10f[x1,x2]=5f[x_1,x_2]=5f[x0,x1,x2]=f[x1,x2]f[x0,x1]x2x0=1f[x_0,x_1,x_2]=\frac{f[x_1,x_2]-f[x_0,x_1]}{x_2-x_0}=1
  1. 构建牛顿插值多项式:
    • 根据差商表,牛顿插值多项式为:

    N2(x)=f(x0)+f[x0,x1](xx0)+f[x0,x1,x2](xx0)(xx1)N_2(x)= f(x_0)+f [x_0, x_1](x - x_0)+f [x_0, x_1, x_2](x - x_0)(x - x_1)

    • 代入数据点的值和差商:

    N2(x)=2+3(x1)+1(x1)(x2)N_2(x)= 2 + 3(x - 1)+1(x - 1)(x - 2)

    • 化简得:

    N2(x)=2+3x3+x23x+2=x2+1N_2(x)= 2 + 3x - 3 + x^2 - 3x + 2 = x^2 + 1

所以,对于给定的三个数据点,牛顿插值多项式为 N2(x)=x2+1N_2(x)=x^2 + 1.

# 差分

以下是对上述内容的总结:

一、等距节点下的牛顿插值公式简化

在实际应用中常遇到等距节点的情形,即 xk=x0+khx_k = x_0 + khk=0,1,,nk = 0,1,\cdots,n),其中 hh 为常数步长。此时插值公式可以进一步简化且计算更简单。

二、差分的定义与计算

对于等距节点,设 xkx_k 点的函数值为 fk=f(xk)f_k = f(x_k)

  • Δfk=fk+1fk\Delta f_k = f_{k + 1}-f_kxkx_k 处以 hh 为步长的一阶(向前)差分。
  • 类似地,Δ2fk=Δfk+1Δfk\Delta^2 f_k=\Delta f_{k + 1}-\Delta f_kxkx_k 处的二阶差分。
  • 一般地,Δnfk=Δn1fk+1Δn1fk\Delta^{n} f_{k}=\Delta^{n - 1} f_{k + 1}-\Delta^{n - 1} f_{k}xkx_k 处的 nn 阶差分。

三、引入算子符号

为了表示方便,引入两个常用算子符号

  • II 为不变算子,Ifk=fkIf_k = f_k

  • EE 为步长为 hh 的移位算子,Efk=fk+1Ef_k = f_{k + 1}

由此可得

  • Δfk=EfkIfk=(EI)fk\Delta f_k = Ef_k - If_k =(E - I)f_k

进一步有

  • Δnfk=(EI)nfk=j=0n(1)j(nj)Enjfk=j=0n(1)j(nj)fn+kj\Delta^{n} f_{k}=(E - I)^{n}f_{k}=\sum_{j = 0}^{n}(-1)^{j}\binom{n}{j}E^{n - j}f_{k}=\sum_{j = 0}^{n}(-1)^{j}\binom{n}{j}f_{n + k - j}

其中 (nj)=n(n1)(nj+1)j!\binom{n}{j}=\frac{n(n - 1)\cdots(n - j + 1)}{j!} 为二项式展开系数。

fn+k=Enfk=(I+Δ)nfk=[j=0n(nj)Δj]fkf_{n + k}= E^{n}f_{k}=(I+\Delta)^{n}f_{k}=\left [\sum_{j = 0}^{n}\binom{n}{j}\Delta^{j}\right] f_{k}

f[xk,xk+1]=fk+1fkxk+1xk=Δfkhf [x_{k}, x_{k + 1}] =\frac{f_{k + 1}-f_{k}}{x_{k + 1}-x_{k}}=\frac{\Delta f_{k}}{h}

f[xk,xk+1,xk+2]=f[xk+1,xk+2]f[xk,xk+1]xk+2xk=12h2Δ2fkf [x_{k}, x_{k + 1}, x_{k + 2}] =\frac{f [x_{k + 1}, x_{k + 2}]-f [x_{k}, x_{k + 1}]}{x_{k + 2}-x_{k}}=\frac{1}{2h^{2}}\Delta^{2}f_{k}

四、差分与差商的关系及与导数的关系

  1. 一般地有

    f[xk,,xk+m]=1m!1hmΔmfkf [x_k,\cdots, x_{k + m}] =\frac{1}{m!}\frac{1}{h^{m}}\Delta^{m}f_{k}

  2. 由上述关系和前面的公式又可得到差分与导数的关系:

    Δnfk=hnf(n)(ξ)\Delta^{n}f_{k}= h^{n}f^{(n)}(\xi)

    其中 ξ(xk,xk+n)\xi\in(x_k,x_{k + n})

牛顿前插公式可以简单的理解为将 等距均差/差商 替换为 前向差分

# 分段插值

# 函数逼近

  • 插值:在节点处函数值相等
  • 拟合:在数据点处误差平凡和最小

# 内积空间

一、定义

C[a,b]C[a,b] 是区间 [a,b][a,b] 上所有连续函数构成的集合。对于任意的 f(x),g(x)C[a,b]f(x),g(x)\in C[a,b],定义内积为:
(f,g)=abf(x)g(x)dx(f,g)=\int_{a}^{b}f(x)g(x)dx

在这个定义下,C[a,b]C[a,b] 构成一个内积空间。

二、性质

  1. 对称性:(f,g)=(g,f)(f,g)=\overline{(g,f)},其中 (g,f)\overline{(g,f)} 表示 (g,f)(g,f) 的共轭。对于实函数,即 (f,g)=(g,f)(f,g)=(g,f)
  2. 线性性:对于任意的函数 f(x),g(x),h(x)C[a,b]f(x),g(x),h(x)\in C[a,b] 和实数 α,β\alpha,\beta,有 (αf+βg,h)=α(f,h)+β(g,h)(\alpha f+\beta g,h)=\alpha(f,h)+\beta(g,h)
  3. 正定性:(f,f)0(f,f)\geq0,且 (f,f)=0(f,f)=0 当且仅当 f(x)=0f(x)=0

在数值计算中,函数的范数是一个重要的概念。

# 范数

一、定义

f(x)f(x) 是定义在区间 [a,b][a,b] 上的函数,函数的范数通常有以下几种定义:

  1. LpL_p 范数:

    • 对于 p1p\geq1f(x)f(x)LpL_p 范数定义为 fLp=(abf(x)pdx)1p\|f\|_{L_p}=\left(\int_{a}^{b}|f(x)|^{p}dx\right)^{\frac{1}{p}}
    • p=2p = 2 时,称为 L2L_2 范数,也记为 f2=abf(x)2dx\|f\|_{2}=\sqrt{\int_{a}^{b}f(x)^{2}dx}
  2. 无穷范数:

    • f(x)f(x) 的无穷范数定义为 f=maxaxbf(x)\|f\|_{\infty}=\max_{a\leq x\leq b}|f(x)|

二、性质

  1. 正定性:对于任意函数 f(x)f(x)f0\|f\|\geq0,且 f=0\|f\|=0 当且仅当 f(x)=0f(x)=0

  2. 齐次性:对于任意实数 α\alpha 和函数 f(x)f(x)αf=αf\|\alpha f\|=|\alpha|\|f\|.

  3. 三角不等式:对于任意函数 f(x)f(x)g(x)g(x)f+gf+g\|f + g\|\leq\|f\|+\|g\|.

  4. 平行四边形定理:f+g22+fg22=2(f22+g22)\|f + g\|_2^{2}+\|f - g\|_2^{2}=2(\|f\|_2^{2}+\|g\|_2^{2}).

    证明如下
    1. 首先计算 f+g22\|f + g\|_2^{2}:

      f+g22=ab(f(x)+g(x))2dx=ab(f(x)2+2f(x)g(x)+g(x)2)dx=abf(x)2dx+ab2f(x)g(x)dx+abg(x)2dx=f22+2abf(x)g(x)dx+g22\|f + g\|_2^{2}=\int_{a}^{b}(f(x)+g(x))^{2}dx =\int_{a}^{b}(f(x)^{2}+2f(x)g(x)+g(x)^{2})dx =\int_{a}^{b}f(x)^{2}dx+\int_{a}^{b}2f(x)g(x)dx+\int_{a}^{b}g(x)^{2}dx =\|f\|_2^{2}+2\int_{a}^{b}f(x)g(x)dx+\|g\|_2^{2}

    2. 接着计算 fg22\|f - g\|_2^{2}

      fg22=ab(f(x)g(x))2dx=ab(f(x)22f(x)g(x)+g(x)2)dx=abf(x)2dxab2f(x)g(x)dx+abg(x)2dx=f222abf(x)g(x)dx+g22\|f - g\|_2^{2}=\int_{a}^{b}(f(x)-g(x))^{2}dx =\int_{a}^{b}(f(x)^{2}-2f(x)g(x)+g(x)^{2})dx =\int_{a}^{b}f(x)^{2}dx-\int_{a}^{b}2f(x)g(x)dx+\int_{a}^{b}g(x)^{2}dx =\|f\|_2^{2}-2\int_{a}^{b}f(x)g(x)dx+\|g\|_2^{2}

    3. 最后计算 \|f + g\|_2^{2}+\|f - g\|_2^

      f+g22+fg22=(f22+2abf(x)g(x)dx+g22)+(f222abf(x)g(x)dx+g22)=2(f22+g22)\|f + g\|_2^{2}+\|f - g\|_2^{2}=(\|f\|_2^{2}+2\int_{a}^{b}f(x)g(x)dx+\|g\|_2^{2})+(\|f\|_2^{2}-2\int_{a}^{b}f(x)g(x)dx+\|g\|_2^{2})= 2(\|f\|_2^{2}+\|g\|_2^{2})

# 向量矩阵

一、向量范数

  1. 定义:
    对于一个 nn 维向量 x=(x1,x2,,xn)\boldsymbol{x}=(x_1,x_2,\cdots,x_n),向量范数是一个非负实数 x\|\boldsymbol{x}\|,满足以下三个性质:

    • 正定性:x0\|\boldsymbol{x}\|\geq0,且 x=0\|\boldsymbol{x}\|=0 当且仅当 x=0\boldsymbol{x}=\boldsymbol{0}
    • 齐次性:对于任意实数 α\alpha,有 αx=αx\|\alpha\boldsymbol{x}\|=|\alpha|\|\boldsymbol{x}\|
    • 三角不等式:对于任意两个向量 x\boldsymbol{x}y\boldsymbol{y},有 x+yx+y\|\boldsymbol{x}+\boldsymbol{y}\|\leq\|\boldsymbol{x}\|+\|\boldsymbol{y}\|.
  2. 常见的向量范数:

    • pp - 范数:xp=(i=1nxip)1p\|\boldsymbol{x}\|_p=\left(\sum_{i = 1}^{n}|x_i|^p\right)^{\frac{1}{p}},其中 p1p\geq1。当 p=2p = 2 时,称为欧几里得范数或 22 - 范数,x2=i=1nxi2\|\boldsymbol{x}\|_2=\sqrt{\sum_{i = 1}^{n}x_i^2}
    • 11 - 范数:x1=i=1nxi\|\boldsymbol{x}\|_1=\sum_{i = 1}^{n}|x_i|
    • \infty - 范数:x=max1inxi\|\boldsymbol{x}\|_{\infty}=\max_{1\leq i\leq n}|x_i|
  3. 应用:

    • 用于衡量向量的大小和长度,在数值分析、优化问题、机器学习等领域有广泛应用。例如,在优化算法中,向量范数可以用来衡量迭代过程中解的变化程度。

二、矩阵范数

  1. 定义:
    对于一个 m×nm\times n 的矩阵 A\boldsymbol{A},矩阵范数是一个非负实数 A\|\boldsymbol{A}\|,满足以下四个性质:

    • 正定性:A0\|\boldsymbol{A}\|\geq0,且 A=0\|\boldsymbol{A}\|=0 当且仅当 A=0\boldsymbol{A}=\boldsymbol{0}
    • 齐次性:对于任意实数 α\alpha,有 αA=αA\|\alpha\boldsymbol{A}\|=|\alpha|\|\boldsymbol{A}\|
    • 三角不等式:对于任意两个矩阵 A\boldsymbol{A}B\boldsymbol{B},有 A+BA+B\|\boldsymbol{A}+\boldsymbol{B}\|\leq\|\boldsymbol{A}\|+\|\boldsymbol{B}\|
    • 相容性:对于任意两个矩阵 A\boldsymbol{A}B\boldsymbol{B},有 ABAB\|\boldsymbol{A}\boldsymbol{B}\|\leq\|\boldsymbol{A}\|\|\boldsymbol{B}\|
  2. 常见的矩阵范数:

    • Frobenius 范数:AF=i=1mj=1naij2\|\boldsymbol{A}\|_F=\sqrt{\sum_{i = 1}^{m}\sum_{j = 1}^{n}|a_{ij}|^2},其中 aija_{ij} 是矩阵 A\boldsymbol{A} 的第 ii 行第 jj 列元素。
    • 诱导范数:由向量范数诱导而来,对于给定的向量范数 \|\cdot\|,矩阵 A\boldsymbol{A} 的诱导范数定义为 A=maxx0Axx\|\boldsymbol{A}\|=\max_{\boldsymbol{x}\neq\boldsymbol{0}}\frac{\|\boldsymbol{A}\boldsymbol{x}\|}{\|\boldsymbol{x}\|}。例如,由 22 - 范数诱导的矩阵范数也称为谱范数,A2=λmax(ATA)\|\boldsymbol{A}\|_2=\sqrt{\lambda_{\max}(\boldsymbol{A}^{\mathrm{T}}\boldsymbol{A})},其中 λmax(ATA)\lambda_{\max}(\boldsymbol{A}^{\mathrm{T}}\boldsymbol{A}) 表示矩阵 ATA\boldsymbol{A}^{\mathrm{T}}\boldsymbol{A} 的最大特征值。

# 正交

在数值计算中,带权正交是内积空间中一种特殊的正交关系。

一、定义

C[a,b]C[a,b] 是区间 [a,b][a,b] 上所有连续函数构成的内积空间,对于任意的 f(x),g(x)C[a,b]f(x),g(x)\in C[a,b],定义带权内积为 (f,g)w=abw(x)f(x)g(x)dx(f,g)_w=\int_{a}^{b}w(x)f(x)g(x)dx,其中 w(x)w(x) 是一个在区间 [a,b][a,b] 上的非负函数,称为权函数。

如果两个函数 f(x)f(x)g(x)g(x) 满足 (f,g)w=0(f,g)_w=0,则称函数 f(x)f(x)g(x)g(x) 在带权内积空间中带权 w(x)w(x) 正交。

二、举例

例如,在区间 [1,1][-1,1] 上,取权函数 w(x)=1x2w(x)=1-x^2,函数 f(x)=xf(x)=xg(x)=x2g(x)=x^2

(f,g)w=11(1x2)xx2dx=11(x3x5)dx=[x44x66]11=1416(1416)=0(f,g)_w=\int_{-1}^{1}(1-x^2)x\cdot x^2dx=\int_{-1}^{1}(x^3 - x^5)dx=\left[\frac{x^4}{4}-\frac{x^6}{6}\right]_{-1}^{1}=\frac{1}{4}-\frac{1}{6}-\left(\frac{1}{4}-\frac{1}{6}\right)=0

所以在这个带权内积空间中,函数 xx 与函数 x2x^2 带权 w(x)w(x) 正交。

三、性质

  1. 性质:
    • 带权正交也具有类似普通正交的一些性质,如对称性(若 ffgg 带权正交,则 ggff 也带权正交)、线性性(若 f1f_1gg 带权正交,f2f_2gg 带权正交,则 αf1+βf2\alpha f_1+\beta f_2gg 也带权正交,其中 α,β\alpha,\beta 为实数)等。
    • 零函数与任何函数在带权内积空间中都带权正交。

# 最佳一致逼近

最佳一致逼近是数值分析中的一个重要概念。

一、基本概念

  1. f(x)C[a,b]f(x)\in C[a,b],即 f(x)f(x) 是区间 [a,b][a,b] 上的连续函数。pn(x)Hnp_n(x)\in H_n,其中 HnH_n 是次数不超过 nn 的多项式集合。

    Δ(f,pn)=fpn=maxaxbf(x)pn(x)\Delta(f, p_n)=\|f - p_n\|_{\infty}=\max_{a\leq x\leq b}|f(x)-p_n(x)|

    被称为 f(x)f(x)pn(x)p_n(x)[a,b][a,b] 上的偏差。

    这个偏差衡量了多项式 pn(x)p_n(x) 与函数 f(x)f(x) 在区间 [a,b][a,b] 上的最大差异程度.

    En=infpnHn{Δ(f,pn)}=infpnHnmaxaxbf(x)pn(x)E_n =\inf_{p_n\in H_n}\{\Delta(f, p_n)\}=\inf_{p_n\in H_n}\max_{a\leq x\leq b}|f(x)-p_n(x)|

    称为 f(x)f(x)[a,b][a,b] 上的最小偏差。也就是要在所有次数不超过 nn 的多项式中,找到与 f(x)f(x) 偏差最小的那个值。

  2. 若存在 pn(x)Hnp_n^*(x)\in H_n,使得 Δ(f,pn)=En\Delta(f,p_n^*)=E_n,则称 pn(x)p_n^*(x)f(x)f(x)[a,b][a,b] 上的 nn 次最佳一致逼近多项式,也称为最小偏差逼近多项式或最佳逼近多项式。它是在次数不超过 nn 的多项式中最接近函数 f(x)f(x) 的那个多项式。

# 最佳平方逼近

最佳平方逼近是一种重要的函数逼近方法。

一、基本概念

  1. 对于函数 f(x)C[a,b]f(x)\in C[a,b],如果存在一个 nn 次多项式 s(x)=j=0najφjs^*(x)=\sum_{j = 0}^{n}a_j\varphi_j(其中 φj\varphi_j 是一组基函数),使得

    ab[f(x)s(x)]2dx=mins(x)Hnab[f(x)s(x)]2dx\int_{a}^{b}[f(x)-s^*(x)]^{2}dx =\min_{s(x)\in H_n}\int_{a}^{b}[f(x)-s(x)]^{2}dx

    那么称 s(x)s^*(x)f(x)f(x) 在区间 [a,b][a,b] 上的 nn 次最佳平方逼近多项式。

    • 这里的目标是找到一个多项式,使得它与原函数 f(x)f(x) 在区间 [a,b][a,b] 上的 平方误差积分 最小。
  2. f(x)C[a,b]f(x)\in C[a,b]Φ=span{φ0,,φn}C[a,b]\Phi=\text{span}\{\varphi_0,\cdots,\varphi_n\}\subset C[a,b],存在 s(x)Φs^*(x)\in\Phi 满足

    abρ(x)[f(x)s(x)]2dx=mins(x)Φabρ(x)[f(x)s(x)]2dx\int_{a}^{b}\rho(x)[f(x)-s^*(x)]^{2}dx =\min_{s(x)\in\Phi}\int_{a}^{b}\rho(x)[f(x)-s(x)]^{2}dx

    则称 s(x)s^*(x) 为函数 f(x)f(x) 在集合 Φ\Phi 上的最佳平方逼近函数。

    • 这里引入了权函数 ρ(x)\rho(x),可以根据不同的需求对不同点的误差进行加权。

二、求解方法

  1. 问题归结为 求系数 aja_j 使得

    I(a0,,an)=abρ(x)[f(x)j=0najφj]2dxI(a_0,\cdots, a_n)=\int_{a}^{b}\rho(x)[f(x)-\sum_{j = 0}^{n}a_j\varphi_j]^2dx

    取得极小值.

    II 关于 aka_k 求偏导,并令偏导数为 00,得到:

    Iak(a0,,an)=2abρ(x)[f(x)j=0najφj]φkdx=0.\frac{\partial I}{\partial a_{k}}(a_0,\cdots, a_n)= 2\int_{a}^{b}\rho(x)[f(x)-\sum_{j = 0}^{n}a_j\varphi_j]\varphi_{k}dx = 0.

    将积分转为内积的形式得到
    j=0najφjφk\sum_{j = 0}^{n}a_j\varphi_j\varphi_{k}

  2. 由此得到法方程:

[(φ0,φ0)(φ0,φ1)(φ0,φn)(φ1,φ0)(φ1,φ1)(φ1,φn)(φn,φ0)(φn,φ1)(φn,φn)][a0a1an]=[(f,φ0)(f,φ1)(f,φn)]\begin{bmatrix}(\varphi_0,\varphi_0)&(\varphi_0,\varphi_1)&\cdots&(\varphi_0,\varphi_n)\\(\varphi_1,\varphi_0)&(\varphi_1,\varphi_1)&\cdots&(\varphi_1,\varphi_n)\\\vdots&\vdots&\cdots&\vdots\\(\varphi_n,\varphi_0)&(\varphi_n,\varphi_1)&\cdots&(\varphi_n,\varphi_n)\end{bmatrix}\begin{bmatrix}a_0\\a_1\\\vdots\\a_n\end{bmatrix}=\begin{bmatrix}(f,\varphi_0)\\(f,\varphi_1)\\\vdots\\(f,\varphi_n)\end{bmatrix}

  • 其中 (φk,φj)=abρ(x)φk(x)φj(x)dx(\varphi_k,\varphi_j)=\int_{a}^{b}\rho(x)\varphi_k(x)\varphi_j(x)dx(f,φj)=abρ(x)f(x)φj(x)dx(f,\varphi_j)=\int_{a}^{b}\rho(x)f(x)\varphi_j(x)dx

三、性质与意义

  1. 由于 φ0,,φn\varphi_0,\cdots,\varphi_n 线性无关,所以法方程系数行列式 Gn0G_n\neq0,法方程有唯一解。这意味着可以确定唯一的最佳平方逼近函数。

  2. 平方误差为:

    δ(x)22=(fs,fs)=(f,f)(f,s)=f(x)22k=0nak(f,φk).\parallel\delta(x)\parallel_{2}^{2}=(f-s^*, f-s^*)=(f, f)-(f, s^*)=\parallel f(x)\parallel_{2}^{2}-\sum_{k = 0}^{n}a_k^{*}(f,\varphi_k).

# 曲线拟合

# 最小二乘法

最小二乘法是一种曲线拟合方法,用于在给定的数据点集上找到一个最佳的拟合函数。

一、误差度量

首先定义误差的不同度量方式,包括

  • 无穷范数误差

    δ=maxiδi=maxiS(xi)f(xi)\parallel\delta\parallel_{\infty}=\max_{i}\vert\delta_{i}\vert=\max_{i}\vert S(x_{i}) - f(x_{i})\vert

  • 1 - 范数误差

    δ1=i=0nδi=i=0nS(xi)f(xi)\parallel\delta\parallel_{1}=\sum_{i = 0}^{n}\vert\delta_{i}\vert=\sum_{i = 0}^{n}\vert S(x_{i}) - f(x_{i})\vert.

  • 2 - 范数误差 δ2=(i=0nδi2)12={i=0n[S(xi)f(xi)]2}12\parallel\delta\parallel_{2}=\left(\sum_{i = 0}^{n}\delta_{i}^{2}\right)^{\frac{1}{2}}=\left\{\sum_{i = 0}^{n}[S(x_{i}) - f(x_{i})]^{2}\right\}^{\frac{1}{2}}

  • 其中 δi=S(xi)f(xi)\delta_{i}=S(x_{i}) - f(x_{i}) 表示在点 xix_{i} 处拟合函数 S(x)S(x) 与实际函数 f(x)f(x) 的偏差。最小二乘法要求 2 - 范数误差平方最小,即 δ22=i=0nδi2=i=0n[S(xi)f(xi)]2\parallel\delta\parallel_{2}^{2}=\sum_{i = 0}^{n}\delta_{i}^{2}=\sum_{i = 0}^{n}[S(x_{i}) - f(x_{i})]^{2} 最小。

二、一般提法

对于给定的数据 (xi,yi)(i=0,1,,m)(x_{i},y_{i})(i = 0,1,\cdots,m),要求在给定函数类 Φ=span{φ0,,φn}\Phi=\text{span}\{\varphi_{0},\cdots,\varphi_{n}\} 中找一函数 s(x)=j=0najφjs^{*}(x)=\sum_{j = 0}^{n}a_{j}^{*}\varphi_{j},其中 n<mn\lt m,使得 s(x)s^{*}(x) 满足

δ22=i=0mδi2=i=0m[s(xi)f(xi)]2=mins(x)Φi=0m[s(xi)f(xi)]2\parallel\delta\parallel_{2}^{2}=\sum_{i = 0}^{m}\delta_{i}^{2}=\sum_{i = 0}^{m}[s^{*}(x_{i}) - f(x_{i})]^{2}=\min_{s(x)\in\Phi}\sum_{i = 0}^{m}[s(x_{i}) - f(x_{i})]^{2}

三、更一般提法

更一般地,要求 δ22=i=0mω(xi)δi2=i=0mω(xi)[s(xi)f(xi)]2=mins(x)Φi=0mω(xi)[s(xi)f(xi)]2\parallel\delta\parallel_{2}^{2}=\sum_{i = 0}^{m}\omega(x_{i})\delta_{i}^{2}=\sum_{i = 0}^{m}\omega(x_{i})[s^{*}(x_{i}) - f(x_{i})]^{2}=\min_{s(x)\in\Phi}\sum_{i = 0}^{m}\omega(x_{i})[s(x_{i}) - f(x_{i})]^{2},其中引入了权重函数 ω(xi)\omega(x_{i}),可以根据不同的数据点重要性进行调整。

四、问题归结

将最小二乘法问题归结为求 s(x)=k=0nakφk(x)s(x)=\sum_{k = 0}^{n}a_{k}\varphi_{k}(x) 的系数 aka_{k},使得

I(a0,,an)=i=0mω(xi)[k=0nakφk(xi)f(xi)]2I(a_{0},\cdots, a_{n})=\sum_{i = 0}^{m}\omega(x_{i})[\sum_{k = 0}^{n}a_{k}\varphi_{k}(x_{i}) - f(x_{i})]^{2}

取得极小值。

引入内积记号

(φk,φj)=i=0mω(xi)φk(xi)φj(xi)(\varphi_{k},\varphi_{j})=\sum_{i = 0}^{m}\omega(x_{i})\varphi_{k}(x_{i})\varphi_{j}(x_{i})

(f,φj)=j=0mω(xi)f(xi)φj(xi)(f,\varphi_{j})=\sum_{j = 0}^{m}\omega(x_{i})f(x_{i})\varphi_{j}(x_{i})

五、多项式拟合及法方程

常用多项式拟合,即 Φ=span{φ0,,φn}=span{1,x,,xn}\Phi=\text{span}\{\varphi_{0},\cdots,\varphi_{n}\}=\text{span}\{1,x,\cdots,x^{n}\}, s(x)=k=0nakxks^{*}(x)=\sum_{k = 0}^{n}a_{k}^{*}x^{k}. 此时可以得到法方程为:

[ωiωixiωixinωixiωixi2ωixin+1ωixinωixin+1ωixi2n][a0a1an]=[ωiyiωixiyiωixinyi]\left[\begin{array}{ccccc} \sum\omega_{i} & \sum\omega_{i}x_{i} & \cdots & \sum\omega_{i}x_{i}^{n}\\ \sum\omega_{i}x_{i} & \sum\omega_{i}x_{i}^{2} & \cdots & \sum\omega_{i}x_{i}^{n + 1}\\ \vdots & \vdots & \cdots & \vdots\\ \sum\omega_{i}x_{i}^{n} & \sum\omega_{i}x_{i}^{n + 1} & \cdots & \sum\omega_{i}x_{i}^{2n} \end{array}\right]\left[\begin{array}{c} a_{0}\\ a_{1}\\ \vdots\\ a_{n} \end{array}\right]=\left[\begin{array}{c} \sum\omega_{i}y_{i}\\ \sum\omega_{i}x_{i}y_{i}\\ \vdots\\ \sum\omega_{i}x_{i}^{n}y_{i} \end{array}\right]

通过求解这个法方程,可以得到多项式拟合的系数 aka_{k},从而确定最小二乘解 s(x)s^{*}(x)

可以通过线性变换将非线性拟合转化为线性拟合

# 数值积分

imphasis

插值型求积公式的概念,求积系数及相关性质

掌握基本的数值求积公式,中矩形求积公式,梯形求积公式,辛普森公式及对应的复化求积公式

自适应求积的基本思想

掌握龙贝格求积的思想及龙贝格求积公式

针对具体的问题会计算代数精度,会用具体的求积公式进行计算求解

# 插值求积与代数精度

一、插值求积

  1. 基本概念

    • 插值求积是基于插值多项式来近似计算定积分的方法。其核心思想是先利用已知节点上的函数值构造一个插值多项式,然后对这个插值多项式进行积分来近似原函数的定积分
  2. 具体方法

    • 设给定区间[a,b][a,b] 上的n+1n+1 个节点x0,x1,,xnx_0,x_1,\cdots,x_n 及对应的函数值f(x0),f(x1),,f(xn)f(x_0),f(x_1),\cdots,f(x_n)
    • 通过这些节点构造一个插值多项式Ln(x)L_n(x),使得Ln(xi)=f(xi)L_n(x_i)=f(x_i)i=0,1,,ni = 0,1,\cdots,n
    • 然后计算插值多项式的积分abLn(x)dx\int_{a}^{b}L_n(x)dx 作为原函数定积分abf(x)dx\int_{a}^{b}f(x)dx 的近似值。

二、代数精度

  1. 定义

    • 若一个数值求积公式对于所有次数不超过mm 的多项式都能准确成立,而对于某个m+1m+1 次多项式不成立,则称该求积公式具有mm 次代数精度。
  2. 意义

    • 代数精度是衡量数值求积公式准确性的一个重要指标。代数精度越高,说明该求积公式在对多项式函数进行积分时的准确性越高。
    • 通过确定求积公式的代数精度,可以评估不同求积公式的优劣,为选择合适的求积方法提供依据。
  3. 与插值求积的关系

    • 对于插值求积法,其代数精度与所使用的插值多项式的次数有关。一般来说,插值多项式的次数越高,插值求积公式的代数精度也越高。
    • 例如,梯形公式是基于一次插值多项式的求积公式,其代数精度为 1;辛普森公式是基于二次插值多项式的求积公式,其代数精度为 3。

一、插值求积公式的表达式与性质

  1. 插值基函数:
  • lk(x)=j=0jknxxjxkxjl_{k}(x)=\prod_{\substack{j = 0\\j\neq k}}^{n}\frac{x - x_{j}}{x_{k}-x_{j}}k=0,1,,nk = 0,1,\cdots,n

    • 插值求积公式定义:

      求积公式

      abf(x)dxk=0nAkf(xk)\int_{a}^{b}f(x)dx\approx\sum_{k = 0}^{n}A_{k}f(x_{k})

      其系数Ak=ablk(x)dxA_{k}=\int_{a}^{b}l_{k}(x)dx 时,则称求积公式为插值求积公式。

  1. 求积公式推导:
    • 对于积分ablk(x)dx=j=0nAjlk(xj)\int_{a}^{b}l_{k}(x)dx=\sum_{j = 0}^{n}A_{j}l_{k}(x_{j}),其中lk(xj)=δkj={1k=j0kjl_{k}(x_{j})=\delta_{kj}=\begin{cases}1&k = j\\0&k\neq j\end{cases}
    • f(x)=lk(x)f(x)=l_{k}(x) 时,abf(x)dx=ablk(x)dx=j=0nAjlk(xj)\int_{a}^{b}f(x)dx=\int_{a}^{b}l_{k}(x)dx=\sum_{j = 0}^{n}A_{j}l_{k}(x_{j}),所以有Ak=ablk(x)dxA_{k}=\int_{a}^{b}l_{k}(x)dx,此时求积公式为插值型求积公式。

插值求积公式的余项

  1. 余项表达式:

    • 设插值求积公式的余项为R(f)R(f),由插值余项定理得

      R(f)=ab[f(x)P(x)]dx=abf(n+1)(ξ)(n+1)!ω(x)dxR(f)=\int_{a}^{b}[f(x)-P(x)]dx=\int_{a}^{b}\frac{f^{(n + 1)}(\xi)}{(n + 1)!}\omega(x)dx

      其中ξ[a,b]\xi\in[a,b]
  2. f(x)f(x) 是次数不高于nn 的多项式时,f(n+1)(x)=0f^{(n + 1)}(x)=0R(f)=0R(f)=0,求积公式能成为准确的等式。

插值型求积公式的充要条件与代数精度

  1. 定理:
  • n+1n + 1 个节点的求积公式abf(x)dxk=0nAkf(xk)\int_{a}^{b}f(x)dx\approx\sum_{k = 0}^{n}A_{k}f(x_{k}) 为插值型求积公式的充要条件是公式至少具有nn 次代数精度。
  1. 证明:
    • 必要性:若求积公式为插值型求积公式,求积系数为Ak=ablk(x)dxA_{k}=\int_{a}^{b}l_{k}(x)dx。又f(x)=P(x)+R(x)f(x)=P(x)+R(x),当f(x)f(x) 为不高于nn 次的多项式时,f(x)=P(x)f(x)=P(x),其余项R(f)=0R(f)=0,因而这时求积公式至少具有nn 次代数精度。

    • 充分性:若求积公式至少具有nn 次代数精度,则对nn 次多项式

      l_{k}(x_{j})=\delta_{kj}=\begin{cases}1&k = j\\0&k\neq j\end

      精确成立.f(x)=lk(x)f(x)=l_{k}(x) 时,abf(x)dx=ablk(x)dx=j=0nAjlk(xj)\int_{a}^{b}f(x)dx=\int_{a}^{b}l_{k}(x)dx=\sum_{j = 0}^{n}A_{j}l_{k}(x_{j}),所以有Ak=ablk(x)dxA_{k}=\int_{a}^{b}l_{k}(x)dx,此时求积公式为插值型求积公式。

代数精度:若求积公式至少具有nn 次代数精度,则对nn 次多项式,可得方程组

{A0+A1++An=baA0x0+A1x1++Anxn=b2a22A0x0n+A1x1n++Anxnn=bn+1an+1n+1\begin{cases}A_{0}+A_{1}+\cdots+A_{n}=b - a\\A_{0}x_{0}+A_{1}x_{1}+\cdots+A_{n}x_{n}=\frac{b^{2}-a^{2}}{2}\\\cdots\cdots\\A_{0}x_{0}^{n}+A_{1}x_{1}^{n}+\cdots+A_{n}x_{n}^{n}=\frac{b^{n + 1}-a^{n + 1}}{n + 1}\end{cases}

这是关于AkA_{k} 的线性方程组,其系数矩阵是范得蒙矩阵,当xk(k=0,1,,n)x_{k}(k = 0,1,\cdots,n) 互异时非奇异,故AkA_{k} 有唯一解。

四、求积系数与定义

Ak=ablk(x)dx=abω(x)(xxk)ω(xk)dxA_{k}=\int_{a}^{b}l_{k}(x)dx=\int_{a}^{b}\frac{\omega(x)}{(x - x_{k})\omega'(x_{k})}dx

称为求积系数。

# 求积公式

梯形和中矩形只有 1 次代数精度,辛普森有 3 次代数精度

一、牛顿 - 柯特斯公式

  1. 梯形公式

    • 对于区间 [a,b][a,b] 上的定积分 abf(x)dx\int_{a}^{b}f(x)dx,将区间分为两部分,用连接两点 (a,f(a))(a,f(a))(b,f(b))(b,f(b)) 的直线(即梯形的上下底)来近似代替曲线 f(x)f(x),得到梯形公式:

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

  2. 中矩形公式

    abf(x)dx(ba)f(a+b2)\int_{a}^{b}f(x)dx\approx(b-a)f(\frac{a+b}{2})

  3. 辛普森公式

    • 将区间 [a,b][a,b] 分为三部分,用二次抛物线来近似代替曲线 f(x)f(x)。辛普森公式为:

      abf(x)dxba6[f(a)+4f(a+b2)+f(b)]\int_{a}^{b}f(x)dx\approx\frac{b - a}{6}[f(a)+4f(\frac{a + b}{2})+f(b)]

  4. 牛顿 - 柯特斯公式一般形式:

    • 对于 n+1n+1 个节点的牛顿 - 柯特斯公式为, abf(x)dx(ba)k=0nCk(n)f(xk)\int_{a}^{b}f(x)dx\approx(b - a)\sum_{k = 0}^{n}C_{k}^{(n)}f(x_{k}) 其中 Ck(n)C_{k}^{(n)} 是柯特斯系数,xk=a+kbanx_{k}=a + k\frac{b - a}{n}

二、高斯型求积公式

  1. 基本思想:
  • 高斯型求积公式是在积分区间上选取适当的节点和权系数,使得求积公式具有尽可能高的代数精度。
  1. 公式形式:

    abf(x)dxk=1nAkf(xk)\int_{a}^{b}f(x)dx\approx\sum_{k = 1}^{n}A_{k}f(x_{k})

    其中 xkx_{k} 是求积节点,AkA_{k} 是求积系数。

代数精度:插值积分至少有 n 次精度

# 复化求积公式

  1. 复化梯形公式:

    将区间 [a,b][a,b] 分成 nn 个子区间,在每个子区间上应用梯形公式,然后将结果相加。复化梯形公式为:

    abf(x)dxh2[f(a)+2i=1n1f(xi)+f(b)]\int_{a}^{b}f(x)dx\approx\frac{h}{2}[f(a)+2\sum_{i = 1}^{n - 1}f(x_{i})+f(b)]

    其中 h=banh=\frac{b - a}{n}xi=a+ihx_{i}=a + ih

  2. 复化辛普森公式:

    类似地,将区间分成 nn 个子区间,在每个子区间上应用辛普森公式,然后相加。复化辛普森公式为:

    abf(x)dxh6[f(a)+4i=0n1f(xi+12)+2i=1n1f(xi)+f(b)]\int_{a}^{b}f(x)dx\approx\frac{h}{6}[f(a)+4\sum_{i = 0}^{n - 1}f(x_{i+\frac{1}{2}})+2\sum_{i = 1}^{n - 1}f(x_{i})+f(b)]

# 低阶求积公式余项

具有 n 阶代数精度的求积公式都可认为是 n 阶的插值求积公式

R=II=abSSdx=abRsdx=abf(n+1)(ξ)(n+1)!ωn+1(x)dxR=I - I^*=\int_a^bS-S^*dx=\int_a^bR_sdx=\int_{a}^{b}\frac{f^{(n+1)}(\xi)}{(n+1)!}\omega_{n+1}(x) dx

# 梯形公式的余项

  1. 梯形公式(4.1.1)的余项为

    RT=IT=abf(ξ)2(xa)(xb)dxR_{T}=I - T=\int_{a}^{b}\frac{f''(\xi)}{2}(x - a)(x - b)dx

    取的左右端点,做的一阶插值

  2. 由于积分的核函数(xa)(xb)(x - a)(x - b) 在区间[a,b][a,b] 上保号(非正),应用积分中值定理,在(a,b)(a,b) 内存在一点η\eta,使得

RT=f(η)2ab(xa)(xb)dx=f(η)12(ba)3,η(a,b)R_{T}=\frac{f''(\eta)}{2}\int_{a}^{b}(x - a)(x - b)dx=-\frac{f''(\eta)}{12}(b - a)^{3},\quad \eta\in(a,b)

# Simpson 公式的余项

  1. Simpson 公式(4.2.3)的余项RS=IS=ab[f(x)H(x)]dxR_{S}=I - S=\int_{a}^{b}[f(x)-H(x)]dx,其中H(x)H(x) 是构造的次数不大于三的多项式,满足

    H(a)=f(a)H(a)=f(a)H(b)=f(b)H(b)=f(b)H(c)=f(c)H(c)=f(c)H(c)=f(c)H'(c)=f'(c)c=a+b2c=\frac{a + b}{2}

  2. 由于 Simpson 公式具有三次代数精度,对于这样构造出的三次式H(x)H(x) 是准确的,即abH(x)dx=ba6[H(a)+4H(c)+H(b)]\int_{a}^{b}H(x)dx=\frac{b - a}{6}[H(a)+4H(c)+H(b)] ,上式右端实际上等于按 Simpson 公式(4.2.3)求得的积分值SS

  3. 对于满足条件(4.2.6)的多项式H(x)H(x),其插值余项

    f(x)H(x)=f(4)(ξ)4!(xa)(xc)2(xb)f(x)-H(x)=\frac{f^{(4)}(\xi)}{4!}(x - a)(x - c)^{2}(x - b)

    所以

RS=abf(4)(ξ)4!(xa)(xc)2(xb)dxR_{S}=\int_{a}^{b}\frac{f^{(4)}(\xi)}{4!}(x - a)(x - c)^{2}(x - b)dx

  1. 积分核(xa)(xc)2(xb)(x - a)(x - c)^{2}(x - b)[a,b][a,b] 上保号(非正),用积分中值定理有

RS=f(4)(η)4!ab(xa)(xc)2(xb)dx=ba180(ba2)4f(4)(η)R_{S}=\frac{f^{(4)}(\eta)}{4!}\int_{a}^{b}(x - a)(x - c)^{2}(x - b)dx=-\frac{b - a}{180}\left(\frac{b - a}{2}\right)^{4}f^{(4)}(\eta)

# Cotes 公式的余项

Cotes 公式(4.2.4)的积分余项仅列出结果为

RC=IC=2(ba)945(ba4)6f(6)(η)R_{C}=I - C=-\frac{2(b - a)}{945}\left(\frac{b - a}{4}\right)^{6}f^{(6)}(\eta)

# 复化梯形余项

Rn=ITn=ba12(ban)2f(ξ)R_n=I-T_n=-\frac{b - a}{12}\left(\frac{b-a}{n}\right)^2f''(\xi)

# 复化辛普森余项

Rn=ba180(h)4f(4)(ξ),h=banR_n=-\frac{b - a}{180}\left(h\right)^{4}f^{(4)}(\xi), \quad h=\frac{b-a}{n}

# 自适应求积

一、基本思想

  1. 从一个较粗的积分步长开始,计算积分的近似值。
  2. 然后将积分步长减半再次计算积分近似值
  3. 比较两次计算结果的差异,如果差异较大,则继续减小步长进行计算,直到满足一定的精度要求。

二、变步长梯形公式

  1. 首先用梯形公式计算积分的近似值:
  • 对于区间[a,b][a,b] 上的定积分abf(x)dx\int_{a}^{b}f(x)dx,梯形公式为T(h)=h2[f(a)+f(b)]+i=1n1hf(xi)T(h)=\frac{h}{2}[f(a)+f(b)]+\sum_{i = 1}^{n - 1}hf(x_{i}),其中h=banh=\frac{b - a}{n}xi=a+ihx_{i}=a + ih
  1. 将步长减半,得到新的近似值:
  • h=h2h'=\frac{h}{2},新的梯形公式为T(h)=h2[f(a)+f(b)]+i=12n1hf(xi)T(h')=\frac{h'}{2}[f(a)+f(b)]+\sum_{i = 1}^{2n - 1}h'f(x_{i}')
  1. 计算两次近似值的差异:
    • 可以得到

T2n=12Tn+h2i=0n1f(xi+12)T_{2n}=\frac{1}{2}T_n+\frac{h}{2}\sum_{i = 0}^{n-1}f(x_{i+\frac{1}{2}})

三、变步长辛普森公式

  1. 类似地,可以从辛普森公式出发,逐步减小步长进行计算。

    辛普森公式为

    S(h)=h6[f(a)+f(b)+4i=0n1f(xi+12)+2i=1n1f(xi)]S(h)=\frac{h}{6}[f(a)+f(b)+4\sum_{i = 0}^{n - 1}f(x_{i+\frac{1}{2}})+2\sum_{i = 1}^{n - 1}f(x_{i})]

  2. 递推公式为

S2n=Sn4+2hi=0n1[f(xi+14)+f(xi+34)]+h8i=0n1f(xi)S_{2n}=\frac{S_n}{4}+2h\sum_{i=0}^{n-1}\left[f(x_{i+\frac{1}{4}})+f(x_{i+\frac{3}{4}})\right]+\frac{h}{8}\sum_{i=0}^{n-1}f(x_{i})

# Romberg 算法

龙贝格

龙贝格算法是一种用于数值积分的高效方法,以下是对图片内容的整理:

一、龙贝格算法计算步骤

  1. 按变步长梯形公式计算积分近似值:

    • 对于区间[a,b][a,b],先进行区间划分,区间长度h=banh=\frac{b - a}{n}n=2kn = 2^{k})。
    • 变步长梯形公式为T2n=Tn2+h2k=0n1f(xk+12)T_{2n}=\frac{T_{n}}{2}+\frac{h}{2}\sum_{k = 0}^{n - 1}f(x_{k+\frac{1}{2}}),其中xk+12=a+(k+12)hx_{k+\frac{1}{2}}=a+(k+\frac{1}{2})h
  2. 按加速公式求加速值:

    • 梯形公式加速:Sn=T2n+T2nTn3S_{n}=T_{2n}+\frac{T_{2n}-T_{n}}{3}(此处以整理后的正确公式为准,图片中可能有误)。
    • Simpson 加速公式:Cn=S2n+S2nSn15C_{n}=S_{2n}+\frac{S_{2n}-S_{n}}{15}
    • 龙贝格求积公式:Rn=C2n+C2nCn63R_{n}=C_{2n}+\frac{C_{2n}-C_{n}}{63}

二、公式推导过程

  1. 从柯特斯公式的误差公式进一步导出龙贝格公式:Rn=6463C2n163CnR_{n}=\frac{64}{63}C_{2n}-\frac{1}{63}C_{n}

  2. 考察 Simpson 法,其截断误差与h4h^{4} 成正比,若将步长折半,则误差减至116\frac{1}{16},即IS2nISn116\frac{I - S_{2n}}{I - S_{n}}\approx\frac{1}{16},由此可得I=1615S2n115SnI=\frac{16}{15}S_{2n}-\frac{1}{15}S_{n},可以验证上式右端的值等于CnC_{n},即Cn=1615S2n115SnC_{n}=\frac{16}{15}S_{2n}-\frac{1}{15}S_{n}

  3. 用梯形法二分前后两个积分值TnT_{n}T2nT_{2n} 作线性组合,可得到复化 Simpson 公式计算得到的积分值SnS_{n},即Sn=43T2n13TnS_{n}=\frac{4}{3}T_{2n}-\frac{1}{3}T_{n}

三、精度控制

直到相邻两次积分值R2nRn<ε\vert R_{2n}-R_{n}\vert<\varepsilon(其中ε\varepsilon 为允许的误差限),则终止计算并取RnR_{n} 作为积分的近似值。

龙贝格算法通过变步长将粗糙的梯形值逐步加工成精度较高的 Simpson 值、柯特斯值和龙贝格值,将收敛缓慢的梯形值序列加工成收敛迅速的龙贝格值序列。

# 例题

  1. 计算向量 $x=(1, -2, 3)^T $ 的各种范数

    x1=6\parallel x \parallel_1 = 6, x=3\parallel x \parallel_\infin = 3, \parallel x \parallel_2 = \sqrt

  2. 题目:设 f(x)=1+x2f(x)=\sqrt{1 + x^{2}},求在区间 [0,1][0,1] 上的一次最佳平方逼近多项式。

    解析

    1. 首先计算内积:
      • (f,φ0)=011+x2dx=12ln(1+2)+221.147(f,\varphi_{0})=\int_{0}^{1}\sqrt{1 + x^{2}}dx=\frac{1}{2}\ln(1+\sqrt{2})+\frac{\sqrt{2}}{2}\approx1.147
      • (f,φ1)=01x1+x2dx=13(1+x2)3201=22130.609(f,\varphi_{1})=\int_{0}^{1}x\sqrt{1 + x^{2}}dx=\left.\frac{1}{3}(1 + x^{2})^{\frac{3}{2}}\right|_{0}^{1}=\frac{2\sqrt{2}-1}{3}\approx0.609
    2. 得到方程组:
      • [11/21/21/3][a0a1]=[1.1470.609]\begin{bmatrix}1 & 1/2\\1/2 & 1/3\end{bmatrix}\begin{bmatrix}a_{0}\\a_{1}\end{bmatrix}=\begin{bmatrix}1.147\\0.609\end{bmatrix}
    3. 解方程组得:a0=0.934a_{0}=0.934a1=0.426a_{1}=0.426
      • 故一次最佳平方逼近多项式为 S1(x)=0.934+0.426xS_{1}^{*}(x)=0.934 + 0.426x
    4. 计算平方误差:
      • δ(x)22=(f(x),f(x))(S1(x),f(x))=01(1+x2)dx0.426d10.934d0=0.0026\parallel\delta(x)\parallel_{2}^{2}=(f(x),f(x))-(S_{1}^{*}(x),f(x))=\int_{0}^{1}(1 + x^{2})dx - 0.426d_{1}-0.934d_{0}=0.0026,其中 d0=(S1(x),φ0)d_{0}=(S_{1}^{*}(x),\varphi_{0})d1=(S1(x),φ1)d_{1}=(S_{1}^{*}(x),\varphi_{1})
    5. 计算最大误差:
      • δ(x)=max0x11+x2S1(x)0.066\parallel\delta(x)\parallel_{\infty}=\max_{0\leq x\leq1}|\sqrt{1 + x^{2}}-S_{1}^{*}(x)|\approx0.066
  3. 试确定一个至少具有 2 次代数精度的公式04f(x)dxAf(0)+Bf(1)+Cf(3)\int_{0}^{4}f(x)dx\approx Af(0)+Bf(1)+Cf(3)

    • 解:要使公式具有 2 次代数精度,则对f(x)=1,x,x2f(x)=1,x,x^2 求积公式准确成立,即得方程组{A+B+C=4B+3C=8B+9C=643\begin{cases}A+B+C=4\\B+3C=8\\B+9C=\frac{64}{3}\end{cases},解得A=143,B=43,C=83A=\frac{14}{3},B=\frac{4}{3},C=\frac{8}{3}。因此,所求公式为04f(x)dx143f(0)+43f(1)+83f(3)\int_{0}^{4}f(x)dx\approx\frac{14}{3}f(0)+\frac{4}{3}f(1)+\frac{8}{3}f(3)
  4. 试确定求积系数 A、B、C 使11f(x)dxAf(1)+Bf(0)+Cf(1)\int_{-1}^{1}f(x)dx\approx Af(-1)+Bf(0)+Cf(1) 具有最高的代数精度。

    • 解:分别取f(x)=1,x,x2f(x)=1,x,x^2 使求积公式准确成立,即得{A+B+C=2A+C=0A+C=23\begin{cases}A+B+C=2\\-A+C=0\\A+C=\frac{2}{3}\end{cases},所得求积公式为11f(x)dx13f(1)+43f(0)+13f(1)\int_{-1}^{1}f(x)dx\approx\frac{1}{3}f(-1)+\frac{4}{3}f(0)+\frac{1}{3}f(1)。可验证该求积公式对于f(x)=1,x,x2,x3f(x)=1,x,x^2,x^3 都准确成立,对于f(x)=x4f(x)=x^4 不能准确成立,所以求积公式具有 3 次代数精度。
  5. 考察求积公式11f(x)dx12[f(1)+2f(0)+f(1)]\int_{-1}^{1}f(x)dx\approx\frac{1}{2}[f(-1)+2f(0)+f(1)] 的代数精度。

    • 解:可以验证,对于f(x)=1,xf(x)=1,x 时,公式两端相等;再将f(x)=x2f(x)=x^2 代入公式,左端为11x2dx=23\int_{-1}^{1}x^{2}dx=\frac{2}{3},右端为12[f(1)+2f(0)+f(1)]=12[1+1]=1\frac{1}{2}[f(-1)+2f(0)+f(1)]=\frac{1}{2}[1+1]=1,左端不等于右端,所以求积公式具有 1 次代数精度。且三个节点不一定具有 2 次代数精度,因为不是插值型的。
  6. 给定求积式01f(x)dx13[2f(14)f(12)+2f(34)]\int_{0}^{1}f(x)dx\approx\frac{1}{3}[2f(\frac{1}{4})-f(\frac{1}{2})+2f(\frac{3}{4})],求证此求积公式是插值型求积公式。

    解:

    • 首先计算插值基函数:
      • l0(x)=(x12)(x34)/(1412)(1434)=8(x12)(x34)l_{0}(x)=\left(x-\frac{1}{2}\right)\left(x-\frac{3}{4}\right)/\left(\frac{1}{4}-\frac{1}{2}\right)\left(\frac{1}{4}-\frac{3}{4}\right)=8\left(x-\frac{1}{2}\right)\left(x-\frac{3}{4}\right)
      • l1(x)=(x14)(x34)/(1214)(1234)=16(x14)(x34)l_{1}(x)=\left(x-\frac{1}{4}\right)\left(x-\frac{3}{4}\right)/\left(\frac{1}{2}-\frac{1}{4}\right)\left(\frac{1}{2}-\frac{3}{4}\right)=-16\left(x-\frac{1}{4}\right)\left(x-\frac{3}{4}\right)
      • l2(x)=(x14)(x12)/(3414)(3412)=8(x14)(x12)l_{2}(x)=\left(x-\frac{1}{4}\right)\left(x-\frac{1}{2}\right)/\left(\frac{3}{4}-\frac{1}{4}\right)\left(\frac{3}{4}-\frac{1}{2}\right)=8\left(x-\frac{1}{4}\right)\left(x-\frac{1}{2}\right)
    • 然后计算积分:
      • 01l0(x)dx=801(x254x+38)dx=8(1354×12+38)=832=23\int_{0}^{1}l_{0}(x)dx=8\int_{0}^{1}\left(x^{2}-\frac{5}{4}x+\frac{3}{8}\right)dx=8\left(\frac{1}{3}-\frac{5}{4}\times\frac{1}{2}+\frac{3}{8}\right)=\frac{8}{3}-2=\frac{2}{3}
      • 01l1(x)dx=(16)01(x2x+316)dx=(16)(1312+316)=1663=13\int_{0}^{1}l_{1}(x)dx=(-16)\int_{0}^{1}\left(x^{2}-x+\frac{3}{16}\right)dx=(-16)\left(\frac{1}{3}-\frac{1}{2}+\frac{3}{16}\right)=\frac{16}{6}-3=-\frac{1}{3}
      • 01l2(x)dx=801(x234x+18)dx=8(1334×12+18)=832=23\int_{0}^{1}l_{2}(x)dx=8\int_{0}^{1}\left(x^{2}-\frac{3}{4}x+\frac{1}{8}\right)dx=8\left(\frac{1}{3}-\frac{3}{4}\times\frac{1}{2}+\frac{1}{8}\right)=\frac{8}{3}-2=\frac{2}{3}
    • 由插值型求积公式的定义知,所给的求积公式是插值型求积公式。
  7. 题目
    计算定积分I=01lnxdxI=\int_{0}^{1}\ln x dx,依次用n=8n = 8 的复化梯形公式和n=4n = 4 的复化 Simpson 公式进行计算。

    1. n=8n = 8 时:
      • h=18=0.125h=\frac{1}{8}=0.125
      • 由复化梯形公式可得计算公式:
        T8=116[f(0)+2f(0.125)+2f(0.25)+2f(0.375)+2f(0.5)+2f(0.625)+2f(0.75)+2f(0.875)+f(1)]=0.9456909T_{8}=\frac{1}{16}[f(0)+2f(0.125)+2f(0.25)+2f(0.375)+2f(0.5)+2f(0.625)+2f(0.75)+2f(0.875)+f(1)]=0.9456909
    2. n=4n = 4 时:
      • 由复化 Simpson 公式可得计算公式:
        S4=124[f(0)+f(1)+2(f(0.25)+f(0.5)+f(0.75))+4(f(0.125)+f(0.375)+f(0.625)+f(0.875))]=0.9460832S_{4}=\frac{1}{24}[f(0)+f(1)+2(f(0.25)+f(0.5)+f(0.75))+4(f(0.125)+f(0.375)+f(0.625)+f(0.875))]=0.9460832
    3. 积分准确值I=0.9460831I = 0.9460831
    4. 两种方法都需要提供 9 个点上的函数值,计算量基本相同,但精度差别较大。与积分准确值比较,复化梯形公式只有两位有效数字,而复化 Simpson 公式却有六位有效数字。
  8. 题目
    用变步长梯形求积公式计算定积分I=01sinxxdxI=\int_{0}^{1}\frac{\sin x}{x}dx

    1. 先对整个区间[0,1][0,1] 用梯形公式:
      • 已知f(x)=sinxxf(x)=\frac{\sin x}{x}f(0)=1f(0)=1f(1)=0.8410709f(1)=0.8410709
      • 所以T1=12[f(0)+f(1)]=0.9207355T_{1}=\frac{1}{2}[f(0)+f(1)]=0.9207355
    2. 然后将区间二等分:
      • 由于f(12)=0.958851f(\frac{1}{2})=0.958851,故有T2=12T1+12f(12)=0.9397933T_{2}=\frac{1}{2}T_{1}+\frac{1}{2}f(\frac{1}{2})=0.9397933
    3. 进一步二分求积区间,并计算新分点上的函数值:
      • f(14)=0.9896158f(\frac{1}{4})=0.9896158f(34)=0.9088516f(\frac{3}{4})=0.9088516
      • T4=12T2+14[f(14)+f(34)]=0.9445135T_{4}=\frac{1}{2}T_{2}+\frac{1}{4}[f(\frac{1}{4})+f(\frac{3}{4})]=0.9445135
    4. 这样不断二分下去,积分准确值为0.94608310.9460831,从计算结果表中可看出用变步长二分 10 次可得此结果。
  9. 题目:用龙贝格算法计算定积分I=0141+x2dxI=\int_{0}^{1}\frac{4}{1 + x^{2}}dx,要求相邻两次龙贝格值的偏差不超过10510^{-5}

    1. 已知a=0a = 0b=1b = 1f(x)=41+x2f(x)=\frac{4}{1 + x^{2}}
    2. 首先计算梯形值:
      • T1=12[f(0)+f(1)]=12(4+2)=3T_{1}=\frac{1}{2}[f(0)+f(1)]=\frac{1}{2}(4 + 2)=3
      • T2=12T1+12f(12)=12×3+12×165=3.1T_{2}=\frac{1}{2}T_{1}+\frac{1}{2}f(\frac{1}{2})=\frac{1}{2}×3+\frac{1}{2}×\frac{16}{5}=3.1
      • T4=12T2+14[f(14)+f(34)]=12×3.1+14(3.764+2.56)=3.13118T_{4}=\frac{1}{2}T_{2}+\frac{1}{4}[f(\frac{1}{4})+f(\frac{3}{4})]=\frac{1}{2}×3.1+\frac{1}{4}(3.764 + 2.56)=3.13118
      • T8=12T4+18[f(18)+f(38)+f(58)+f(78)]=3.13899T_{8}=\frac{1}{2}T_{4}+\frac{1}{8}[f(\frac{1}{8})+f(\frac{3}{8})+f(\frac{5}{8})+f(\frac{7}{8})]=3.13899
      • T16=12T8+116[f(116)+f(316)+f(516)+f(716)+f(916)+f(1116)+f(1316)+f(1316)+f(1516)]=3.1409T_{16}=\frac{1}{2}T_{8}+\frac{1}{16}[f(\frac{1}{16})+f(\frac{3}{16})+f(\frac{5}{16})+f(\frac{7}{16})+f(\frac{9}{16})+f(\frac{11}{16})+f(\frac{13}{16})+f(\frac{13}{16})+f(\frac{15}{16})]=3.1409
    3. 然后计算 Simpson 值:
      • S1=43T213T1=3.1333S_{1}=\frac{4}{3}T_{2}-\frac{1}{3}T_{1}=3.1333
      • S2=43T413T2=3.14157S_{2}=\frac{4}{3}T_{4}-\frac{1}{3}T_{2}=3.14157
      • S4=43T813T4=3.14159S_{4}=\frac{4}{3}T_{8}-\frac{1}{3}T_{4}=3.14159
      • S8=43T1613T8=3.14159S_{8}=\frac{4}{3}T_{16}-\frac{1}{3}T_{8}=3.14159
    4. 接着计算柯特斯值:
      • C1=1615S2115S1=3.14212C_{1}=\frac{16}{15}S_{2}-\frac{1}{15}S_{1}=3.14212
      • C2=1615S4115S2=3.14159C_{2}=\frac{16}{15}S_{4}-\frac{1}{15}S_{2}=3.14159
      • C4=1615S8115S4=3.14159C_{4}=\frac{16}{15}S_{8}-\frac{1}{15}S_{4}=3.14159
    5. 最后计算龙贝格值:
      • R1=6463C2163C1=3.14158R_{1}=\frac{64}{63}C_{2}-\frac{1}{63}C_{1}=3.14158
      • R2=6463C4163C2=3.14159R_{2}=\frac{64}{63}C_{4}-\frac{1}{63}C_{2}=3.14159
    6. 由于R2R10.00001\vert R_{2}-R_{1}\vert\leq0.00001,于是有I=0141+x2dx3.14159I=\int_{0}^{1}\frac{4}{1 + x^{2}}dx\approx3.14159.