数值积分和数值微分
Jackie

数值积分和数值微分

有不少情况,被积函数f(x)没有具体的解析表达式,仅仅用表格或图形给出实验观测的一些点上的函数值。对于这种情况,牛顿-莱布尼兹公式也无法应用。对于上述所举的积分值不能用牛顿-莱布尼兹公式求出的情形,就可用数值积分法,即用数值的方法求出积分的近似值。

本章的另一个内容是数值微分。在微分学中,函数f(x)的导数是通过极限定义的。若函数以表格形式给出,或函数的表达式过于复杂时,就要用数值方法求函数的导数或微分。

当找到一个足够精度的简单函数p(x)代替原来函数f(x)就有

abf(x)dxabp(x)dx\int_{a}^{b} f(x) dx \approx \int_{a}^{b} p(x) \, dx

若存在实数x1,x2,…,xn;A1,A2,…,An且存在任取f(x)∈C[a,b],都有

abf(x)dxi=1nAif(xi)\int_{a}^{b} f(x) dx \approx \sum_{i=1}^{n} A_if(x_i)

数值积分的几何意义

用容易计算面积的图形代替曲边梯形得到

梯形公式:

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

左矩形公式:

abf(x)dxf(a)(ba)\int_{a}^{b} f(x) dx \approx f(a) (b-a)

中矩形公式:

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

抛物线公式(辛普森公式):

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

余项:

R[f]=abf(x)dxk=0nAkf(xk)R[f] = \int_{a}^{b} f(x) dx - \sum_{k=0}^{n} A_k f(x_k)

其中Ak称求积系数,也称伴随节点xk的权

  • 代数精度

求积公式

abf(x)dxk=0nf(xk)Ak\int_{a}^{b} f(x) \, dx \approx \sum_{k=0}^{n} f(x_k) A_k

具有m次代数精度使该公式对于

f(x)=1,x,x2,,xmf(x) = 1, x, x^2,\cdots,x^m

f(x)=a0+a1x+a2x2++amxmf(x) = a_0 + a_1 x + a_2 x^2 + \cdots + a_m x^m

均准确成立,而对于f(x)=xm+1不能准确成立

举例:验证梯形公式具有1次代数精度

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

取f(x)=1时,

abdx=ba,ba2(1+1)=ba\int_{a}^{b} dx = b - a, \quad \frac{b-a}{2}(1+1) = b - a

两端相等;

取f(x)=x时,

abxdx=12(b2a2),ba2(a+b)=12(b2a2)\int_{a}^{b} x \, dx = \frac{1}{2}(b^2 - a^2), \quad \frac{b-a}{2}(a+b) = \frac{1}{2}(b^2 - a^2)

两端相等;

取f(x)=x2时,

abx2dx=13(b3a3),ba2(a2+b2)=12(a2+b2)(ba)\int_{a}^{b} x^2 \, dx = \frac{1}{3}(b^3 - a^3), \quad \frac{b-a}{2}(a^2 + b^2) = \frac{1}{2}(a^2 + b^2)(b - a)

两端不相等,所以梯形公式只有1次代数精度。

辛普森公式有3次代数精度

牛顿——柯特斯公式

牛顿——柯特斯公式是积分区间上等距节点的插值求积公式

取系数Ck=Ak/(b-a)并称之为柯特斯系数,此时求积公式

abf(x)dx(ba)k=0nCkf(a+kh)\int_{a}^{b} f(x) \, dx \approx (b - a) \sum_{k=0}^{n} C_k f(a + kh)

称为牛顿——柯特斯公式

  • 柯特斯系数表:
n Ck
1
梯形
1/2 1/2
2
辛普森
1/6 2/3 1/6
3 1/8 3/8 3/8 1/8
4
柯特斯
7/90 16/45 2/15 16/45 7/90

用三个公式计算定积分

0.51xdx\int_{0.5}^{1} \sqrt{x}dx

  • 梯形公式

0.51xdx10.52(0.5+1)=0.4267767\int_{0.5}^{1} \sqrt{x} dx \approx \frac{1 - 0.5}{2} (\sqrt{0.5} + 1) = 0.4267767

  • 辛普森公式

0.51xdx0.56(0.5+40.75+1)=0.43093403\int_{0.5}^{1} \sqrt{x}dx \approx \frac{0.5}{6} (\sqrt{0.5} + 4\sqrt{0.75} + 1) = 0.43093403

  • 柯特斯公式

0.51xdx0.590(70.5+320.625+120.75+320.875+7)=0.43096407\int_{0.5}^{1} \sqrt{x} \, dx \approx \frac{0.5}{90} (7\sqrt{0.5} + 32\sqrt{0.625} + 12\sqrt{0.75} + 32\sqrt{0.875} + 7) = 0.43096407

  • 牛顿——柯特斯公式的代数精度

当n为偶数时,牛顿——柯特斯公式有n+1次代数精度

余项

  • 梯形公式

RT=(ba)312f(η),aηbR_T = -\frac{(b - a)^3}{12} f''(\eta), \quad a \leq \eta \leq b

  • 辛普森公式

RS=(ba)52880f(4)(η),aηbR_S = -\frac{(b - a)^5}{2880} f^{(4)}(\eta), \quad a \leq \eta \leq b

  • 柯特斯公式

RC=8945(ba4)7f(6)(η),aηbR_C = -\frac{8}{945} \left(\frac{b - a}{4}\right)^7 f^{(6)}(\eta), \quad a \leq \eta \leq b

复化求积法

将积分区间分成n等份,对每等份分别用梯形公式、辛普森公式和柯特斯公式,然后将结果加起来,作为积分的近似值

  • 复化梯形公式

在子区间[xk,xk+1]上利用梯形公式则有复化梯形公式

Tn=h2[f(a)+2k=1n1f(xk)+f(b)]T_n = \frac{h}{2} \left[ f(a) + 2 \sum_{k=1}^{n-1} f(x_k) + f(b) \right]

  • 余项

RT=h312nf(η)=(ba)12h2f(η),aηbR_{T} = -\frac{h^3}{12} n f''(\eta) = -\frac{(b-a)}{12} h^2 f''(\eta), \quad a \leq \eta \leq b

  • 复化辛普森公式

记子区间[xk,xk+1]的中点为xk+1/2,有复化辛普森公式

Sn=k=0n1h6[f(xk)+4f(xk+12)+f(xk+1)]=h6[f(a)+4k=0n1f(xk+12)+2k=1n1f(xk)+f(b)]S_{n} = \sum_{k=0}^{n-1} \frac{h}{6} \left[ f(x_{k}) + 4 f\left(x_{k+\frac{1}{2}}\right) + f(x_{k+1}) \right] = \frac{h}{6} \left[ f(a) + 4 \sum_{k=0}^{n-1} f\left(x_{k+\frac{1}{2}}\right) + 2 \sum_{k=1}^{n-1} f(x_{k}) + f(b) \right]

为了便于编写程序,可将其改写成

Sn=h6{f(a)f(b)+k=1n[4f(xk12)+2f(xk)]}S_{n} = \frac{h}{6} \left\{ f(a) - f(b) + \sum_{k=1}^{n} \left[ 4 f\left(x_{k-\frac{1}{2}}\right) + 2 f(x_{k}) \right] \right\}

  • 余项

RS=ba2880h4f(4)(η),aηbR_{S} = -\frac{b-a}{2880} h^4 f^{(4)}(\eta), \quad a \leq \eta \leq b

  • 复化柯特斯公式

把每个子区间[xk,xk+1]四等分,内分点依次记为xk+1/4,xk+1/2,xk+3/4,有复化柯特斯公式

Cn=h90[7f(a)+32k=0n1f(xk+14)+12k=0n1f(xk+12)+32k=0n1f(xk+34)+14k=1n1f(xk)+7f(b)]C_n = \frac{h}{90} \left[ 7f(a) + 32 \sum_{k=0}^{n-1} f\left(x_{k+\frac{1}{4}}\right) + 12 \sum_{k=0}^{n-1} f\left(x_{k+\frac{1}{2}}\right) + 32 \sum_{k=0}^{n-1} f\left(x_{k+\frac{3}{4}}\right) + 14 \sum_{k=1}^{n-1} f(x_k) + 7f(b) \right]

  • 余项

RC=2(ba)945(h4)6f(6)(η),aηbR_C = -\frac{2(b - a)}{945} \left(\frac{h}{4}\right)^6 f^{(6)}(\eta), \quad a \leq \eta \leq b

插值求导公式

两点公式

设已给出两个节点x0和x1上的函数值f(x0)和f(x1),进行线性插值

P(x)=xx1x0x1f(x0)+xx0x1x0f(x1)P(x) = \frac{x - x_1}{x_0 - x_1} f(x_0) + \frac{x - x_0}{x_1 - x_0} f(x_1)

对上式两端求导,记h=x1-x0,有

前差公式:

f(x0)=1h[f(x1)f(x0)]h2f(ξ)f'(x_0) = \frac{1}{h} [f(x_1) - f(x_0)] - \frac{h}{2} f''(\xi)

后差公式:

f(x1)=1h[f(x1)f(x0)]+h2f(ξ)f'(x_1) = \frac{1}{h} [f(x_1) - f(x_0)] + \frac{h}{2} f''(\xi)

三点公式

设已给出三个节点x0,x1=x0+h,x2=x0+2h上的函数值,有三点公式

  • 前差公式

f(x0)P(x0)=12h[3f(x0)+4f(x1)f(x2)]+h23f(ξ)f'(x_0) \approx P'(x_0) = \frac{1}{2h} [-3f(x_0) + 4f(x_1) - f(x_2)]+\frac{h^2}{3}f'''(\xi)

  • 中心公式

f(x1)P(x1)=12h[f(x0)+f(x2)]h26f(ξ)f'(x_1) \approx P'(x_1) = \frac{1}{2h} [-f(x_0) + f(x_2)]-\frac{h^2}{6}f'''(\xi)

  • 后差公式

f(x2)P(x2)=12h[f(x0)4f(x1)+3f(x2)]+h23f(ξ)f'(x_2) \approx P'(x_2) = \frac{1}{2h} [f(x_0) - 4f(x_1) + 3f(x_2)]+\frac{h^2}{3}f'''(\xi)

其中,中心公式由于少用了一个函数值f(x1)而常被采用

 评论
评论插件加载失败
正在加载评论插件