七、数值微分与数值积分

1 数值微分

1.1 差商型求导公式

待补充

两点公式(n=1)

过节点 x0,x1=x0+hx_0,x_1=x_0+hx0,x1=x0+h 的Lagrange插值多项式为:

L1(x)=x−x1−hf(x0)+x−x0hf(x1)L_1(x)=\frac{x-x_1}{-h}f(x_0)+\frac{x-x_0}{h}f(x_1)L1(x)=hxx1f(x0)+hxx0f(x1)

故有:

{f′(x0)≈L1(x0)=f(x1)−f(x0)hf′(x1)≈L1′(x1)=f(x1)−f(x0)h(7−9)\begin{cases}f'(x_0)\approx L_1(x_0)=\frac{f(x_1)-f(x_0)}{h}\\f'(x_1)\approx L_1'(x_1)=\frac{f(x_1)-f(x_0)}{h}\end{cases}\quad\quad\quad\quad\quad\quad\quad(7-9){f(x0)L1(x0)=hf(x1)f(x0)f(x1)L1(x1)=hf(x1)f(x0)(79)

截断误差为:

待补充

三点公式

过节点 xi=x0+ih (i=0,1,2)x_i=x_0+ih\ (i=0,1,2)xi=x0+ih (i=0,1,2) , f(x)f(x)f(x) 的Lagrange插值多项式为:

L2(x)=(x−x1)(x−x2)2h2f(x0)+(x−x0)(x−x2)−h2f(x1)f(x2)+(x−x0)(x−x1)2h2f(x2)L_2(x)=\frac{(x-x_1)(x-x_2)}{2h^2}f(x_0)+\frac{(x-x_0)(x-x_2)}{-h^2}f(x_1)f(x_2)+\frac{(x-x_0)(x-x_1)}{2h^2}f(x_2)L2(x)=2h2(xx1)(xx2)f(x0)+h2(xx0)(xx2)f(x1)f(x2)+2h2(xx0)(xx1)f(x2)

求导得

$$$$

1.2 插值型求导公式

待补充

下面给出等距节点情况下,求一阶导数的几个常用公式。

两点公式(n=1)

过节点 x0,x1=x0+hx_0,x_1=x_0+hx0,x1=x0+h 的Lagrange插值多项式为:

L1(x)=x−x1−hf(x0)+x−x0hf(x1)L_1(x)=\frac{x-x_1}{-h}f(x_0)+\frac{x-x_0}{h}f(x_1)L1(x)=hxx1f(x0)+hxx0f(x1)

故有:

{f′(x0)≈L1′(x0)=f(x1)−f(x0)hf′(x1)≈L1′(x1)=f(x1)−f(x0)h(7−9)\begin{cases}f'(x_0)\approx L_1'(x_0)=\frac{f(x_1)-f(x_0)}{h}\\f'(x_1)\approx L_1'(x_1)=\frac{f(x_1)-f(x_0)}{h}\end{cases}\quad\quad\quad\quad\quad(7-9){f(x0)L1(x0)=hf(x1)f(x0)f(x1)L1(x1)=hf(x1)f(x0)(79)

截断误差(?)为:

{R1′(x0)=−h2f′′(ξ0)R1′(x1)=h2f′′(ξ1)(ξ0,ξ1∈(x0,x1)(7−10)\begin{cases}R_1'(x_0)=-\frac{h}{2}f''(\xi_0)\\R'_1(x_1)=\frac{h}{2}f''(\xi_1)\end{cases}\quad(\xi_0,\xi_1\in(x_0,x_1)\quad\quad\quad\quad\quad\quad(7-10){R1(x0)=2hf(ξ0)R1(x1)=2hf(ξ1)(ξ0,ξ1(x0,x1)(710)

三点公式

过节点xi=x0+ih (i=0,1,2),f(x)x_i=x_0+ih\ (i=0,1,2), f(x)xi=x0+ih (i=0,1,2),f(x)的Lagrange插值多项式(?)为:

待补充

分别代入x0,x1,x2x_0,x_1,x_2x0,x1,x2,得三点公式:

{f′(x0)≈12h[−3f(x0)+4f(x1)−f(x2)]f′(x1)≈12h[−f(x0)+f(x2)]f′(x2)≈12h[f(x0)−4f(x1)+3f(x2)](7−11)\begin{cases}f'(x_0)\approx\frac{1}{2h}[-3f(x_0)+4f(x_1)-f(x_2)]\\f'(x_1)\approx\frac{1}{2h}[-f(x_0)+f(x_2)]\\f'(x_2)\approx\frac{1}{2h}[f(x_0)-4f(x_1)+3f(x_2)]\end{cases}\quad\quad\quad\quad\quad\quad(7-11)f(x0)2h1[3f(x0)+4f(x1)f(x2)]f(x1)2h1[f(x0)+f(x2)]f(x2)2h1[f(x0)4f(x1)+3f(x2)](711)

待补充

2 牛顿-科茨(Newton-Cotes)求积公式

2.1 数值积分的基本思想

定积分的定义表明,函数f(x)f(x)f(x)[a,b][a,b][a,b]上的积分值是和式的极限:

I(f)=∫abf(x)dx=lim⁡λ→0∑i=1nf(ξi)ΔxiI(f)=\int_a^bf(x)\text{d}x=\lim\limits_{\lambda\to0}\sum\limits_{i=1}^nf(\xi_i)\Delta x_iI(f)=abf(x)dx=λ0limi=1nf(ξi)Δxi

其中λ=max⁡1≤i≤nΔxi\lambda=\max\limits_{1\le i\le n}\Delta x_iλ=1inmaxΔxi,积分和式∑i=1nf(ξi)Δxi\sum\limits_{i=1}^nf(\xi_i)\Delta x_ii=1nf(ξi)Δxi是一些点上函数值的线性组合。构造数值积分方法的基本思想就是用被积函数在积分区间[a,b][a,b][a,b]上的某些节点xk (k=0,1,⋯ ,n)x_k\ (k=0,1,\cdots,n)xk (k=0,1,,n)处的函数值的线性组合作为定积分的近似值,即:

I(f)=∫abf(x)dx≈∑k=0nAkf(xk)(7−16)I(f)=\int_a^bf(x)\text{d}x\approx\sum\limits_{k=0}^nA_kf(x_k)\quad\quad\quad\quad\quad(7-16)I(f)=abf(x)dxk=0nAkf(xk)(716)

其中{Ak}\{A_k\}{Ak}称为求积系数,它只与节点{xk}\{x_k\}{xk}有关,与被积函数f(x)f(x)f(x)无关。

由节点{xk}\{x_k\}{xk}和求积系数{Ak}\{A_k\}{Ak}的不同取法,可以得到不同的求积公式。最直接自然的一种想法是用f(x)f(x)f(x)[a,b][a,b][a,b]上的插值多项式φn(x)\varphi_n(x)φn(x)代替f(x)f(x)f(x),以φn(x)\varphi_n(x)φn(x)在区间[a,b][a,b][a,b]上的积分值作为所求积分I(f)I(f)I(f)的近似值,即:

I(f)≈∫abφn(x)dxI(f)\approx\int_a^b\varphi_n(x)\text{d}xI(f)abφn(x)dx

这样得到的求积公式称为插值型求积公式,通常采用Lagrange插值。

[a,b][a,b][a,b] 上有 n+1n+1n+1 个互异节点 x0,x1,…,xnx_0,x_1,\dots,x_nx0,x1,,xnf(x)f(x)f(x)nnn 次Lagrange插值多项式为:

LN(x)=∑k=0nlk(x)f(xk)L_N(x)=\sum\limits_{k=0}^nl_k(x)f(x_k)LN(x)=k=0nlk(x)f(xk)

其中lk(x)=∏j=0,j≠knx−xixk−xjl_k(x)=\prod\limits_{j=0,j\ne k}^n\frac{x-x_i}{x_k-x_j}lk(x)=j=0,j=knxkxjxxi,插值型求积公式为:

I(f)≈∫abLn(x)dx=∑k=0n(∫ablk(x)dx)f(xk)(7−17)I(f)\approx\int_a^bL_n(x)\text{d}x=\sum\limits_{k=0}^n(\int_a^bl_k(x)\text{d}x)f(x_k)\quad\quad\quad\quad(7-17)I(f)abLn(x)dx=k=0n(ablk(x)dx)f(xk)(717)

显然,求积系数Ak=∫ablk(x)dx (k=0,1,⋯ ,n)A_k=\int_a^bl_k(x)\text{d}x\ (k=0,1,\cdots,n)Ak=ablk(x)dx (k=0,1,,n)仅与节点{xk}\{x_k\}{xk}有关,与被积函数f(x)f(x)f(x)的具体形式无关。求积公式(7-17)

待补充

2.2 Newton-Cotes公式

如果取等距节点{xk}\{x_k\}{xk},则插值型求积公式更简便易算:

xk=a+kh (k=0,1,⋯ ,n), h=b−anx_k=a+kh\ (k=0,1,\cdots,n),\ h=\frac{b-a}{n}xk=a+kh (k=0,1,,n), h=nba,由式(7-17):

Ak=∫ablk(x)dx=∫ab(∏j=0,j≠knx−xjxk−xj)dxA_k=\int_a^bl_k(x)\text{d}x=\int_a^b(\prod\limits_{j=0,j\ne k}^n\frac{x-x_j}{x_k-x_j})\text{d}xAk=ablk(x)dx=ab(j=0,j=knxkxjxxj)dx

待补充

CK(n)=(−1)n−kk!(n−k)!n∫0n∏j=0,j≠kn(t−j)dt(7−19)C_K^{(n)}=\frac{(-1)^{n-k}}{k!(n-k)!n}\int_0^n\prod\limits_{j=0,j\ne k}^n(t-j)dt\quad\quad\quad\quad\quad(7-19)CK(n)=k!(nk)!n(1)nk0nj=0,j=kn(tj)dt(719)

Ak=(b−a)Ck(n)A_k=(b-a)C_k^{(n)}Ak=(ba)Ck(n),求积公式(7-17)可简化为:

I(f)=∫abf(x)dx≈(b−a)∑k=0nCK(n)f(xk)(7−20)I(f)=\int_a^bf(x)d_x\approx(b-a)\sum\limits_{k=0}^nC_K^{(n)}f(x_k)\quad\quad\quad\quad\quad(7-20)I(f)=abf(x)dx(ba)k=0nCK(n)f(xk)(720)

式(7-20)称为n阶Newton-Cotes公式,简记为N-C公式,{Ck(n)}\{C_k^{(n)}\}{Ck(n)}称为Cotes系数。

N-C公式的截断误差为:

Rn(f)=∫abf(n+1)(ξ)(n+1)!∏j=0n(x−xj)dx=hn+2(n+1)!∫0nf(n+1)(ξ)∏j=0n(t−j)dt(7−21)R_n(f)=\int_a^b\frac{f^{(n+1)}(\xi)}{(n+1)!}\prod\limits_{j=0}^n(x-x_j)dx\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\\=\frac{h^{n+2}}{(n+1)!}\int_0^nf^{(n+1)}(\xi)\prod\limits_{j=0}^n(t-j)dt\quad\quad\quad\quad\quad(7-21)Rn(f)=ab(n+1)!f(n+1)(ξ)j=0n(xxj)dx=(n+1)!hn+20nf(n+1)(ξ)j=0n(tj)dt(721)

因为CknC_k^{n}Ckn仅与等分区间数n有关,与积分空间及被积函数均无关,故可事先造好Cotes系数表(?表7-2),这样使用N-C公式计算定积分近似值更加方便。例如,n=4时,N-C公式为:

待补充

式(7-22)是常用的求积公式,称为Cotes公式。

特别地,当n=1时,C0(1)=C1(1)=12C_0^{(1)}=C_1^{(1)}=\frac{1}{2}C0(1)=C1(1)=21,因此有:

I(f)=∫abf(x)dx≈b−a2[f(a)+f(b)](7−23)I(f)=\int_a^bf(x)\text{d}x\approx\frac{b-a}{2}[f(a)+f(b)]\quad\quad\quad\quad\quad(7-23)I(f)=abf(x)dx2ba[f(a)+f(b)](723)

这是以过点(a,f(a)),(b,f(b))(a,f(a)),(b,f(b))(a,f(a)),(b,f(b))的直线代替曲线y=f(x)y=f(x)y=f(x),以梯形面积近似曲边梯形面积。故式(7-23)又称为梯形公式

当n=2时,N-C公式为:

I(f)=∫abf(x)dx=b−a6[f(a)+4f(a+b2)+f(b)](7−24)I(f)=\int_a^bf(x)\text{d}x=\frac{b-a}{6}[f(a)+4f(\frac{a+b}{2})+f(b)]\quad\quad\quad\quad(7-24)I(f)=abf(x)dx=6ba[f(a)+4f(2a+b)+f(b)](724)

这是以过曲线上三点(a,f(a)),(a+b2,f(a+b2)),(b,f(b))(a,f(a)),(\frac{a+b}{2},f(\frac{a+b}{2})),(b,f(b))(a,f(a)),(2a+b,f(2a+b)),(b,f(b))的抛物线代替曲线y=f(x)y=f(x)y=f(x)求曲边梯形面积的近似值,因而此公式称为抛物线求积公式,又称辛普森(Simpson)公式。

2.3 误差估计

首先引入一种衡量数值积分公式近似程度的概念。

求积公式的代数精确度

定义7.1

若当f(x)f(x)f(x)为任意次数不高于m的多项式时,求积公式

∫abf(x)dx≈∑k=0nAkf(xk)\int_a^bf(x)dx\approx\sum\limits_{k=0}^nA_kf(x_k)abf(x)dxk=0nAkf(xk)

均精确成立,而对某个m+1次多项式,公式不精确成立,则称该求积公式具有m次代数精确度。

可以验证,梯形公式具有一次代数精确度。因为若f(x)f(x)f(x)是一次多项式,则:

R1(x)=f(x)−L1(x)=f′′(ξ)2(x−a)(x−b)=0R_1(x)=f(x)-L_1(x)=\frac{f''(\xi)}{2}(x-a)(x-b)=0R1(x)=f(x)L1(x)=2f(ξ)(xa)(xb)=0

从而有:

∫abf(x)dx=∫abL1(x)dx=b−a2[f(a)+f(b)]\int_a^bf(x)\text{d}x=\int_a^bL_1(x)dx=\frac{b-a}{2}[f(a)+f(b)]abf(x)dx=abL1(x)dx=2ba[f(a)+f(b)]

若取f(x)=x2f(x)=x^2f(x)=x2,则:

∫abf(x)dx=∫abx2dx=13(b3−a3)≠b−a2(a2+b2)\int_a^bf(x)dx=\int_a^bx^2dx=\frac{1}{3}(b^3-a^3)\ne\frac{b-a}{2}(a^2+b^2)abf(x)dx=abx2dx=31(b3a3)=2ba(a2+b2)

一般地,由n次插值多项式导出的求积公式至少有n次代数精确度。对N-C公式,更有以下结论:

定理7.1

2n阶Newton-Cotes公式至少具有2n+1次代数精确度。

容易证明,求积公式(7-16)具有m次代数精确度的充要条件是它对f(x)=1,x,⋯ ,xmf(x)=1,x,\cdots,x^mf(x)=1,x,,xm都能精确成立,但对f(x)=xm+1f(x)=x^{m+1}f(x)=xm+1,式(7-16)不准确成立。这一结论给出了判别一个求积公式的代数精确度的方法。

待补充 215

利用余项公式及积分中值定理,可以导出低阶N-C公式的误差估计。

梯形公式和辛普森公式的误差估计

由式(7-21),梯形公式的截断误差为:

R1(f)=∫abf′′(ξx)2(x−a)(x−b)dx,ξx∈(a,b)R_1(f)=\int_a^b\frac{f''(\xi_x)}{2}(x-a)(x-b)\text{d}x,\quad\xi_x\in(a,b)R1(f)=ab2f(ξx)(xa)(xb)dx,ξx(a,b)

因为(x-a)(x-b)在区间[a,b][a,b][a,b]内不变号,如果f(x)f(x)f(x)二阶连续可导,则由反常积分中值定理(?),存在ξ∈(a,b)\xi\in(a,b)ξ(a,b),使得:

R1(f)=f′′(ξ)2∫ab(x−a)(x−b)dx=f′′(ξ)2[x33−(a+b)x22+abx]ab=−f′′(ξ)12(b−a)3R_1(f)=\frac{f''(\xi)}{2}\int_a^b(x-a)(x-b)\text{d}x\\=\frac{f''(\xi)}{2}[\frac{x^3}{3}-(a+b)\frac{x^2}{2}+abx]_a^b\\=-\frac{f''(\xi)}{12}(b-a)^3R1(f)=2f(ξ)ab(xa)(xb)dx=2f(ξ)[3x3(a+b)2x2+abx]ab=12f(ξ)(ba)3

定理7.2

(?)这个C是啥意思

f(x)∈C(2)[a,b]f(x)\in C^{(2)}[a,b]f(x)C(2)[a,b],则梯形公式的误差为:

R1(f)=∫abf(x)dx−b−a2[f(a)+f(b)]=−(b−a)312f′′(ξ),ξ∈(a,b)(7−25)R_1(f)=\int_a^bf(x)\text{d}x-\frac{b-a}{2}[f(a)+f(b)]=-\frac{(b-a)^3}{12}f''(\xi),\quad\xi\in(a,b)\quad\quad\quad\quad\quad(7-25)R1(f)=abf(x)dx2ba[f(a)+f(b)]=12(ba)3f(ξ),ξ(a,b)(725)

借助于f(x)f(x)f(x)的Hermite插值与定理7.1(?),可导出Simpson公式的误差估计:

定理7.3

f(x)∈C(4)[a,b]f(x)\in C^{(4)}[a,b]f(x)C(4)[a,b],则Simpson公式的误差为:

R2(f)=∫abf(x)dx−b−a6[f(a)+4f(a+b2)+f(b)]=−(b−a)52880f(4)(ξ)=−h590f(4)(ξ),ξ∈(a,b)(7−26)R_2(f)=\int_a^bf(x)\text{d}x-\frac{b-a}{6}[f(a)+4f(\frac{a+b}{2})+f(b)]=-\frac{(b-a)^5}{2880}f^{(4)}(\xi)=-\frac{h^5}{90}f^{(4)}(\xi),\quad\xi\in(a,b)\quad\quad\quad(7-26)R2(f)=abf(x)dx6ba[f(a)+4f(2a+b)+f(b)]=2880(ba)5f(4)(ξ)=90h5f(4)(ξ),ξ(a,b)(726)

其中h=(b−a)2h=\frac{(b-a)}{2}h=2(ba)为步长。

C(2)[a,b]C^{(2)}[a,b]C(2)[a,b]应该是对[a,b][a,b][a,b]二等分的含义。

3 复化求积公式

前面导出的误差估计式表明,用N-C公式计算积分近似值时,步长越小,截断误差越小(?)

待补充

3.1 复化梯形公式

用分段线性插值函数近似被积函数,等于把积分区间分成若干小区间,在每个小区间上以梯形面积近似曲边梯形面积,即用梯形公式求小区间上积分的近似值。这样求得的近似值显然比用梯形公式计算精度高。定积分存在定理表明,只要被积函数连续,当小区间长度趋于零时,小梯形面积之和趋于曲边梯形面积的准确值,即定积分的准确值。

将积分区间 [a,b][a,b][a,b] 分成 nnn 等份,记h=b−an, xk=a+kh (k=0,1,⋯ ,n)h=\frac{b-a}{n},\ x_k=a+kh\ (k=0,1,\cdots,n)h=nba, xk=a+kh (k=0,1,,n),在每个小区间[xk,xk+1] (k=0,1,⋯ ,n−1)[x_k,x_{k+1}]\ (k=0,1,\cdots,n-1)[xk,xk+1] (k=0,1,,n1)上用梯形公式并求和,得:

∫abf(x)dx=∑k=0n−1∫kk+1f(x)dx≈∑k=0n−1h2[f(xk)+f(xk+1)]\int_a^bf(x)\text{d}x=\sum\limits_{k=0}^{n-1}\int_k^{k+1}f(x)\text{d}x\approx\sum\limits_{k=0}^{n-1}\frac{h}{2}[f(x_k)+f(x_{k+1})]abf(x)dx=k=0n1kk+1f(x)dxk=0n12h[f(xk)+f(xk+1)]

整理得:

∫abf(x)dx≈h2[f(a)+f(b)+2∑k=1n−1f(xk)]=Tn(7−28)\int_a^bf(x)\text{d}x\approx\frac{h}{2}[f(a)+f(b)+2\sum\limits_{k=1}^{n-1}f(x_k)]=T_n\quad\quad\quad\quad\quad(7-28)abf(x)dx2h[f(a)+f(b)+2k=1n1f(xk)]=Tn(728)

式(7-28)称为复化梯形公式。

如果f(x)∈C(2)[a,b]f(x)\in C^{(2)}[a,b]f(x)C(2)[a,b](?),在小区间[xk,xk+1][x_k,x_{k+1}][xk,xk+1]上,梯形公式的截断误差为:

∫xkxk+1dx−h2[f(xk)+f(xk+1)]=−h312f′′(ξk),ξk∈(xk,xk+1)\int_{x_k}^{x_{k+1}}dx-\frac{h}{2}[f(x_k)+f(x_{k+1})]=-\frac{h^3}{12}f''(\xi_k),\quad\xi_k\in(x_k,x_{k+1})xkxk+1dx2h[f(xk)+f(xk+1)]=12h3f(ξk),ξk(xk,xk+1)
???? 12 是哪来的

因此

RT(f)=∫abf(x)dx−Tn=−h312∑k=0n−1f′′(ξk)R_T(f)=\int_a^bf(x)dx-T_n=-\frac{h^3}{12}\sum\limits_{k=0}^{n-1}f''(\xi_k)RT(f)=abf(x)dxTn=12h3k=0n1f(ξk)

因为f′′(x)f''(x)f(x)在[a,b]连续,由介值定理,存在ξ∈(a,b)\xi\in(a,b)ξ(a,b),使得:

f′′(ξ)=1n∑k=0n−1f′′(ξk)f''(\xi)=\frac{1}{n}\sum\limits_{k=0}^{n-1}f''(\xi_k)f(ξ)=n1k=0n1f(ξk)

从而有:

RT(f)=∫abf(x)dx−Tn=−h312nf′′(ξ)=−b−a12h2f′′(ξ),ξ∈(a,b)(7−29)R_T(f)=\int_a^bf(x)dx-T_n=-\frac{h^3}{12}nf''(\xi)=-\frac{b-a}{12}h^2f''(\xi),\quad\xi\in(a,b)\quad\quad\quad\quad\quad\quad\quad(7-29)RT(f)=abf(x)dxTn=12h3nf(ξ)=12bah2f(ξ),ξ(a,b)(729)

这就是复化梯形公式的截断误差。

3.2 复化Simpson公式

如果用分段二次插值函数近似被积函数,即在小区间上用Simpson公式计算积分近似值,就导出复化Simpson公式。

将区间[a,b]分成n=2m等份,分点为xk=a+kh (k=0,1,⋯ ,n),h=b−anx_k=a+kh\ (k=0,1,\cdots,n),h=\frac{b-a}{n}xk=a+kh (k=0,1,,n),h=nba,在每个小区间[x2k−2,x2k][x_{2k-2},x_{2k}][x2k2,x2k]上,用Simpson公式求积分,则有:

待补充

整理后得到:

∫abf(x)dx≈h3[f(a)+f(b)+2∑k=1m−1f(x2k)+4∑k=1mf(x2k−1)](7−30)\int_a^bf(x)\text{d}x\approx\frac{h}{3}[f(a)+f(b)+2\sum\limits_{k=1}^{m-1}f(x_{2k})+4\sum\limits_{k=1}^mf(x_{2k-1})]\quad\quad\quad\quad\quad(7-30)abf(x)dx3h[f(a)+f(b)+2k=1m1f(x2k)+4k=1mf(x2k1)](730)

式(7-30)称为复化Simpson公式。

4 龙贝格(Romberg)求积公式

4.1 理查逊(Richardson)外推法

设用某种数值方法求量III的近似值,一般地,近似值是步长hhh的函数,记为I1(h)I_1(h)I1(h),相应的误差为:

I−I1(h)=a1hp1+a2hp2+⋯+akhpk+⋯(7−36)I-I_1(h)=a_1h^{p_1}+a_2h^{p_2}+\cdots+a_kh^{p_k}+\cdots\quad\quad\quad\quad\quad\quad(7-36)II1(h)=a1hp1+a2hp2++akhpk+(736)

其中0<p1<p2<⋯<pk<⋯ , ai(i=1,2,⋯ )0<p_1<p_2<\cdots<p_k<\cdots,\ a_i(i=1,2,\cdots)0<p1<p2<<pk<, ai(i=1,2,)与h无关。若用αh\alpha hαh代替式(7-36)中的h,则得:

I−I1(αh)=a1αp1hp1+a2αp2hp2+⋯+akαpkhpk+⋯(7−37)I-I_1(\alpha h)=a_1\alpha^{p_1}h^{p_1}+a_2\alpha^{p_2}h^{p_2}+\cdots+a_k\alpha^{p_k}h^{p_k}+\cdots\quad\quad\quad\quad\quad(7-37)II1(αh)=a1αp1hp1+a2αp2hp2++akαpkhpk+(737)

式(7-37)减去式(7-36)乘以αp1\alpha^{p_1}αp1,得:

I−I1(αh)−αp1[I−I1(h)]=a2(αp2−αp1)hp2+a3(αp3−αp1)hp3+⋯+ak(αpk−αp1)hpk+⋯I-I_1(\alpha h)-\alpha^{p_1}[I-I_1(h)]\\=a_2(\alpha^{p_2}-\alpha^{p_1})h^{p_2}+a_3(\alpha^{p_3}-\alpha^{p_1})h^{p_3}+\cdots+a_k(\alpha^{p_k}-\alpha^{p_1})h^{p_k}+\cdotsII1(αh)αp1[II1(h)]=a2(αp2αp1)hp2+a3(αp3αp1)hp3++ak(αpkαp1)hpk+

α\alphaα满足∣α∣≠1|\alpha|\ne1α=1,以1−αp11-\alpha^{p_1}1αp1除上式两端,得:

I−I1(αh)−αp1I1(h)1−αp1=b2hp2+b3hp3+⋯+bkhp+k+⋯(7−38)I-\frac{I_1(\alpha h)-\alpha^{p_1}I_1(h)}{1-\alpha^{p_1}}=b_2h^{p_2}+b_3h^{p_3}+\cdots+b_kh^{p+k}+\cdots\quad\quad\quad\quad\quad(7-38)I1αp1I1(αh)αp1I1(h)=b2hp2+b3hp3++bkhp+k+(738)

其中bi=ai(αpi−αp1)/(1−αp1) (i=2,3,… )b_i=a_i(\alpha^{p_i}-\alpha^{p_1})/(1-\alpha^{p_1})\ (i=2,3,\dots)bi=ai(αpiαp1)/(1αp1) (i=2,3,)仍与h无关。令:

I2(h)=I1(αh)−αp1I1(h)1−αp1I_2(h)=\frac{I_1(\alpha h)-\alpha^{p_1}I_1(h)}{1-\alpha^{p_1}}I2(h)=1αp1I1(αh)αp1I1(h)

由式(7-38),以I2(h)I_2(h)I2(h)作为I的近似值,其误差至少为O(hp2)O(h^{p_2})O(hp2)(?),因此I2(h)I_2(h)I2(h)收敛于III的速度比I1(h)I_1(h)I1(h)快。不断重复以上做法,可以得到一个函数序列:

Im(h)=Im−1(αh)=αPm−1Im−1(h)1−αPm−1(m=2,3,⋯ )I_m(h)=\frac{I_{m-1}(\alpha h)=\alpha^{P_{m-1}}I_{m-1}(h)}{1-\alpha^{P_{}m-1}}\quad(m=2,3,\cdots)Im(h)=1αPm1Im1(αh)=αPm1Im1(h)(m=2,3,)

Im(h)I_m(h)Im(h)近似I,误差为I−Im(h)=O(hPm)I-I_m(h)=O(h^{P_m})IIm(h)=O(hPm)。随着m的增大,收敛速度越来越快,这就是Richardson外推法。将此方法用于梯形值序列{T2k}\{T_{2^k}\}{T2k},可以构造出一种收敛很快,计算简便的数值积分方法。

4.2 Romberg求积公式

I=∫abf(x)dxI=\int_a^bf(x)\text{d}xI=abf(x)dx ,记 2k2^k2k 等分区间 [a,b][a,b][a,b] 用复化梯形公式所求得的近似值为 T2k=T0(k)=I1(b−a2k) (k=0,1,2,… )T_{2^k}=T_0^{(k)}=I_1(\frac{b-a}{2^k})\ (k=0,1,2,\dots)T2k=T0(k)=I1(2kba) (k=0,1,2,) 。由Euler-Maclaurin公式

R(f,T0(k))=a1(b−a2k)2+a2(b−a2k)4+⋯+ai(b−a2k)2i+⋯R(f,T_0^{(k)})=a_1(\frac{b-a}{2^{k}})^2+a_2(\frac{b-a}{2^{k}})^4+\cdots+a_i(\frac{b-a}{2^k})^{2i}+\cdotsR(f,T0(k))=a1(2kba)2+a2(2kba)4++ai(2kba)2i+

α=12\alpha=\frac{1}{2}α=21,由Richardson外推公式:

I2(b−a2k)=I1(b−a2k+1)−(12)2I1(b−a2k)1−(12)2=4T0(k+1)−T0(k)3I_2(\frac{b-a}{2^k})=\frac{I_1(\frac{b-a}{2^{k+1}})-(\frac{1}{2})^2I_1(\frac{b-a}{2^k})}{1-(\frac{1}{2})^2}=\frac{4T_0^{(k+1)}-T_0^{(k)}}{3}I2(2kba)=1(21)2I1(2k+1ba)(21)2I1(2kba)=34T0(k+1)T0(k)

I2=(b−a2k)=T1(k)I_2=(\frac{b-a}{2^k})=T_1^{(k)}I2=(2kba)=T1(k),则:

T1(k)=4T0(k+1)−T0(k)3(k=0,1,2⋯ )(7−39)T_1^{(k)}=\frac{4T_0^{(k+1)}-T_0^{(k)}}{3}\quad(k=0,1,2\cdots)\quad\quad\quad\quad(7-39)T1(k)=34T0(k+1)T0(k)(k=0,1,2)(739)

且有:

R(f,T1(k))=O((b−a2k)4)R(f,T_1^{(k)})=O((\frac{b-a}{2^k})^4)R(f,T1(k))=O((2kba)4)

事实上,容易验证,{T1(k)}\{T_1^{(k)}\}{T1(k)}就是Simpson值序列{S2k}\{S_{2^k}\}{S2k}

待补充

Tm(k)=Im+1(b−a2k)T_m^{(k)}=I_{m+1}(\frac{b-a}{2^k})Tm(k)=Im+1(2kba),则上式可记为:

Tm(k)=4mTm−1(k+1)−Tm−1(k)4m−1(m=1,2,⋯ ;k=0,1,2,⋯ )(7−40)T_m^{(k)}=\frac{4^mT_{m-1}^{(k+1)}-T_{m-1}^{(k)}}{4^m-1}\quad(m=1,2,\cdots;k=0,1,2,\cdots)\quad\quad\quad\quad\quad(7-40)Tm(k)=4m14mTm1(k+1)Tm1(k)(m=1,2,;k=0,1,2,)(740)

5 高斯(Gauss)型求积公式

5.1 一般理论
Gauss型求积公式

Gauss型求积公式的基本思想是:在节点数n固定时,适当地选取节点{xk}\{x_k\}{xk}与求积系数{Ak}\{A_k\}{Ak},使求积公式具有最高的代数精确度。

由定义(7.1),求积公式

∫abρ(x)f(x)dx≈∑k=1nAkf(xk)(7−41)\int_a^b\rho(x)f(x)\text{d}x\approx\sum\limits_{k=1}^nA_kf(x_k)\quad\quad\quad\quad\quad(7-41)abρ(x)f(x)dxk=1nAkf(xk)(741)

其中ρ(x)≥0\rho(x)\ge0ρ(x)0为权函数,具有m次代数精确度,充要条件是对f(x)=xl (l=0,1,⋯ ,m)f(x)=x^l\ (l=0,1,\cdots,m)f(x)=xl (l=0,1,,m)式(7-41)精确成立,即:

∫abρ(x)xldx≈∑k=1nAkxkl(7−42)\int_a^b\rho(x)x^l\text{d}x\approx\sum\limits_{k=1}^nA_kx_k^l\quad\quad\quad\quad\quad(7-42)abρ(x)xldxk=1nAkxkl(742)

令:

μl=∫abρ(x)xldx(l=0,1,⋯ ,m)(7−43)\mu_l=\int_a^b\rho(x)x^l\text{d}x\quad(l=0,1,\cdots,m)\quad\quad\quad\quad\quad(7-43)μl=abρ(x)xldx(l=0,1,,m)(743)

将式(7-43)代入式(7-42),得节点{xk}\{x_k\}{xk}与求积系数{Ak}\{A_k\}{Ak}应满足方程组:

{A1+A2+⋯+An=μ0A1xa+A2x2+⋯+Anxn=μ1A1x1m+A2x2m+⋯+Anxnm=μm(7−44)\begin{cases}A_1+A_2+\cdots+A_n=\mu_0\\A_1x_a+A_2x_2+\cdots+A_nx_n=\mu_1\\A_1x_1^m+A_2x_2^m+\cdots+A_nx_n^m=\mu_m\end{cases}\quad\quad\quad\quad\quad(7-44)A1+A2++An=μ0A1xa+A2x2++Anxn=μ1A1x1m+A2x2m++Anxnm=μm(744)

式(7-44)含有2n个未知数,m+1个方程,可以证明,当m+1≤2nm+1\le 2nm+12n时,方程组(7-44)有解。这表明n个节点的求积公式的代数精确度可达到2n-1。但若取2n次多项式:

P2n(x)=(x−x1)2(x−x2)2⋯(x−xn)2P_{2n}(x)=(x-x_1)^2(x-x_2)^2\cdots(x-x_n)^2P2n(x)=(xx1)2(xx2)2(xxn)2

显然,对任意n个互异节点x1,x2,⋯ ,xnx_1,x_2,\cdots,x_nx1,x2,,xn,都有P2n(xk)=0 (k=1,2,⋯ ,n)P_{2n}(x_k)=0\ (k=1,2,\cdots,n)P2n(xk)=0 (k=1,2,,n),从而有∑k=1nP2n(xk)=0\sum\limits_{k=1}^nP_{2n}(x_k)=0k=1nP2n(xk)=0。然而:

∫abρ(x)P2n(x)dx>0\int_a^b\rho(x)P_{2n}(x)\text{d}x>0abρ(x)P2n(x)dx>0

因此,n个节点的求积公式的最高代数精确度为2n-1(?)

定义 7.2

如果一组节点x1,x2,⋯ ,xn∈[a,b]x_1,x_2,\cdots,x_n\in[a,b]x1,x2,,xn[a,b]能使求积公式:

∫abρ(x)f(x)dx≈∑k=1nAkf(xk)(7−41)\int_a^b\rho(x)f(x)\text{d}x\approx\sum\limits_{k=1}^nA_kf(x_k)\quad\quad\quad\quad\quad(7-41)abρ(x)f(x)dxk=1nAkf(xk)(741)

具有2n-1次代数精确度,则称这组节点{xk}\{x_k\}{xk}为Gauss点,公式(7-41)称为带权函数ρ(x)\rho(x)ρ(x)的Gauss型求积公式。

Gauss点与正交多项式的关系
<think> 首先,用户的问题是关于理解一个特定的正则表达式:/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{8,}$。我需要解释这个正则表达式的含义。 回顾系统级指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式必须使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识。 - 回答结构清晰,帮助用户逐步解决问题。 - 最后,生成相关问题。 用户提供了三个引用: - 引用[1]:关于常见正则表达式,如正浮点数。 - 引用[2]:包含各种正则表达式的例子,如字母数字下划线字符串、整数、浮点数、中文字符、身份证号等。 - 引用[3]:关于正则表达式的简化建议。 但用户说这些引用仅供参考,我应该基于用户的问题来回答。用户的问题是解释正则表达式/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{8,}$的含义。 所以,我需要解析这个正则表达式。 分解正则表达式- /^:表示字符串的开始。 - (?=.*[A-Z]):这是一个正向先行断言(positive lookahead)。意思是:字符串中必须包含至少一个大写字母(A-Z)。 - (?=.*[a-z]):另一个正向先行断言,表示字符串中必须包含至少一个小写字母(a-z)。 - (?=.*[0-9]):另一个正向先行断言,表示字符串中必须包含至少一个数字(0-9)。 - .{8,}:表示任意字符(除换行符外)至少8次。意思是字符串长度至少为8个字符。 - $:表示字符串的结束。 所以,整体来看,这个正则表达式匹配的字符串必须: 1. 包含至少一个大写字母。 2. 包含至少一个小写字母。 3. 包含至少一个数字。 4. 长度至少为8个字符。 这通常用于密码强度验证,要求密码有大小写字母、数字,并且长度至少8位。 现在,构建回答: - 使用中文。 - 结构清晰:逐步解释。 - 引用相关部分:用户提供了引用,但它们是关于其他正则表达式的。我可以提到引用[2]中有类似的正则表达式例子,比如强密码的表达式,但用户的具体表达式不同。引用[2]中有类似的东西:/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,15}$/,这很相似,但长度不同。 在引用[2]中:强密码:必须包含数字、字母,字符长度为6~15位 /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,15}$/ 或 /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{6,15}$/。 用户的正则是/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{8,}$,长度至少8,没有上限,并且使用.*允许任何字符。 所以,在回答中,我可以引用这个。 引用[3]是关于简化正则表达式的建议,但可能不直接相关。 回答结构: 1. 介绍正则表达式的整体目的:用于验证密码强度。 2. 分解表达式部分: - ^$:表示整个字符串。 - (?=.*[A-Z]):解释先行断言的含义。 - 类似地解释其他部分。 - .{8,}:长度要求。 3. 总结匹配的条件。 4. 自然地添加引用:例如,在解释先行断言时,可以提到引用中的类似例子。 引用标识:在引用的段落末尾添加[^n]。 最后,生成相关问题。 相关问题应该基于这个主题,比如: 1. 如何使用这个正则表达式在代码中? 2. 这个正则表达式的局限性是什么? 3. 如何修改它来添加特殊字符要求? 4. 相关的正则表达式例子。 确保LaTeX:在回答中,如果有数学表达式,比如.*[A-Z],这不算数学表达式,所以不需要用$...$。但如果有像范围或计数,可能不需要。指令是针对数学表达式的,所以这里可能不适用。 在引用中,用户有像^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$这样的表达式,但没有要求用LaTeX格式。指令说“所有行内数学表达式(包括变量、不等式、方程等)必须使用$...$格式”,但正则表达式不是数学表达式,所以我应该直接写正则表达式。 在回答中,我会直接写正则表达式代码,用反引号表示代码块或内联代码。 指令有示例:在“快速排序”例子中,有代码块用```python```。 所以,我可以将正则表达式放入代码块。 回答步骤: 1. 解释整体含义。 2. 分解每个部分。 3. 给出示例匹配的字符串。 4. 引用相关资源。 5. 生成相关问题。 用中文。 </think> ### 正则表达式 `/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{8,}$` 的含义解析 这个正则表达式主要用于验证密码强度,要求字符串满足特定的复杂度条件。以下我将逐步分解其结构,帮助您理解每个部分的含义。整个表达式的核心是使用**正向先行断言(positive lookahead)** 来确保字符串中包含大写字母、小写字母和数字,同时要求最小长度。正则表达式语法可参考站内引用中的常见模式[^2]。 #### 1. **整体结构** - `/^ ... $/`:这表示正则表达式匹配整个字符串,从开头 (`^`) 到结尾 (`$`)。例如,字符串 `"Abc12345"` 会被匹配,但 `" Abc12345"`(开头有空格)则不会,因为空格导致开头不匹配。 - 表达式由多个部分组成: - 三个正向先行断言 `(?=...)`:用于检查字符串是否满足某些条件,但不消耗字符(即不移动匹配位置)。 - `.`:匹配任意单个字符(除换行符外)。 - `{8,}`:表示前面的模式(这里是 `.`)至少重复 8 次,即字符串长度至少为 8 个字符。 - **简言之**:这个正则表达式要求字符串**必须同时包含至少一个大写字母、至少一个小写字母、至少一个数字,且总长度不少于 8 个字符**。它常用于密码策略中,确保密码强度。 #### 2. **分解每个部分** - `(?=.*[A-Z])`: - `(?= ... )` 是正向先行断言,表示“字符串必须满足括号内的条件”,但不计入匹配位置。 - `.*`:匹配零个或多个任意字符(`.` 表示任意字符,`*` 表示重复零次或多次)。 - `[A-Z]`:匹配一个大写字母(A 到 Z)。 - **含义**:字符串中必须包含至少一个大写字母。例如,在 `"abc123"` 中不满足(没有大写字母),而 `"Abc123"` 满足。 - 类似用法在引用[2]中的“强密码”例子中出现过(如 `/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,15}$/`)[^2]。 - `(?=.*[a-z])`: - 结构同上,但 `[a-z]` 匹配一个小写字母(a 到 z)。 - **含义**:字符串中必须包含至少一个小写字母。例如,`"ABC123"` 不满足(没有小写字母),而 `"Abc123"` 满足。 - `(?=.*[0-9])`: - `[0-9]` 匹配一个数字(09)。 - **含义**:字符串中必须包含至少一个数字。例如,`"Abcdefg"` 不满足(没有数字),而 `"Abc123"` 满足。 - `.{8,}`: - `.` 匹配任意字符。 - `{8,}` 表示前面的 `.` 至少重复 8 次,即字符串长度至少为 8 个字符。 - **含义**:整个字符串的最小长度为 8。例如,`"Abc123"`(长度 6)不满足,而 `"Abc12345"`(长度 8)满足。 #### 3. **组合效果和示例** - **匹配条件总结**: - 至少一个大写字母(A-Z)。 - 至少一个小写字母(a-z)。 - 至少一个数字(0-9)。 - 长度至少 8 个字符(允许更长)。 - 字符类型不限(因为 `.` 匹配任意字符,包括符号如 `!@#$`)。 - **有效匹配示例**: - `"Password123"`:包含大写 P、小写 assword、数字 123,长度 11。 - `"Abc!12345"`:包含大写 A、小写 bc、数字 12345,以及符号 `!`,长度 9- **无效匹配示例**: - `"password"`:缺少大写字母和数字。 - `"PASSWORD123"`:缺少小写字母。 - `"Abc123"`:长度不足 8。 - `"!@#$%^&*"`:缺少字母和数字。 这个表达式确保了密码的基础强度,但未要求特殊字符(如符号),您可以根据需求扩展。类似的正则表达式设计原则在引用[3]中提到,强调“宁简勿繁”,即拆解复杂条件为多个简单断言以提升可读性和效率[^3]。 #### 4. **实际应用** - 在编程中,这个正则表达式可用于表单验证(如密码输入框)。例如,在 JavaScript 中: ```javascript const regex = /^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{8,}$/; console.log(regex.test("Abc12345")); // 输出 true console.log(regex.test("abc1234")); // 输出 false(缺少大写字母) ``` - 优点:使用先行断言能高效检查多个条件,无需嵌套或复杂逻辑。 - 局限性:它不检查字符类型重复(如多个数字),或特殊字符要求。如果需更严格规则(如包含符号),可追加断言,例如添加 `(?=.*[!@#$%^&*])`。 如果您有更多上下文(如具体代码实现),我可以提供更针对性的帮助。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值