当前位置: 首页 > news >正文

数值分析—数值积分

研究背景

积分的数学解法为牛顿莱布尼兹公式,数学表示为 ∫ a b f ( x ) d x = F ( b ) − F ( a ) \int_{a}^{b} f(x)dx=F(b)-F(a) abf(x)dx=F(b)F(a),但应用该方法有如下困难:
1, f ( x ) f(x) f(x)的原函数有时不能用初等函数表示,如 e − x 2 e^{-x^2} ex2 s i n x x \frac{sinx}{x} xsinx
2,原函数可以用初等函数表示,但很复杂,如 x 2 1 + 2 x 2 x^2\sqrt{1+2x^2} x21+2x2
3, f ( x ) f(x) f(x)本身无表达式,只有在若干点上的值。

针对这些问题,本章介绍几种近似求解积分的方法。

数值积分公式

数值积分

由中值定理 ∫ a b f ( x ) d x = f ( ξ ) ( b − a ) , \int_{a}^{b} f(x)dx=f(\xi)(b-a), abf(x)dx=f(ξ)(ba)其中 f ( ξ ) f(\xi) f(ξ) f ( x ) f(x) f(x)在[a,b]上的平均高度,可以不求原函数计算积分,但 ξ \xi ξ未知,故基于该方法,提出数值积分公式——用a代替 ξ \xi ξ,即 ∫ a b f ( x ) d x ≈ f ( a ) ( b − a ) \int_{a}^{b} f(x)dx\approx f(a)(b-a) abf(x)dxf(a)(ba),计算左端点为宽的矩阵公式,称为左矩阵公式,同理还有右矩阵公式 f ( b ) ( b − a ) f(b)(b-a) f(b)(ba)和中矩阵公式 f ( a + b 2 ) ( b − a ) f(\frac{a+b}{2})(b-a) f(2a+b)(ba)

矩形的误差可能过于大了,该方法则再次修正为 f ( a ) + f ( b ) 2 ( b − a ) \frac{f(a)+f(b)}{2}(b-a) 2f(a)+f(b)(ba),即根据端点函数值计算梯形面积近似积分值。

该方法的再次改进为近似计算函数的平均值, f ( ξ ) ( b − a ) ≈ ∑ k = 0 n f ( x k ) n + 1 ( b − a ) f(\xi)(b-a)\approx \frac{\sum_{k=0}^{n}f(x_{k})}{n+1}(b-a) f(ξ)(ba)n+1k=0nf(xk)(ba),用多个点的平均值代替 f ( ξ ) f(\xi) f(ξ),上式可抽象为 ∑ k = 0 n A k f ( x k ) \sum_{k=0}^{n}A_{k}f(x_{k}) k=0nAkf(xk),其中 A k A_{k} Ak称为权,该算法关键在于如何确定 A k A_{k} Ak x k x_{k} xk,取点越多一定越精确,但如何衡量精确程度呢?

误差分析 R ( x ) = ∫ a b f ( x ) d x − ∑ k = 0 n A k f ( x k ) R(x)=\int_{a}^{b} f(x)dx-\sum_{k=0}^{n}A_{k}f(x_{k}) R(x)=abf(x)dxk=0nAkf(xk)

代数精度

定义:若数值积分公式对一切 ≤ m \le m m次的多项式均能精确成立,则称次求积公式至少具有m次代数精度,若求积公式对一切 ≤ m \le m m次的多项式均能精确成立,但对 m + 1 m+1 m+1次多项式不能精确成立,则称此公式的代数精度为m次。

求积公式代数精度越高,使公式精确成立的多项式次数越高。

定理
求积公式具有m次代数精度的充要条件,当 f ( x ) = 1 , x , x 2 . . . x m f(x)=1,x,x^{2}...x^{m} f(x)=1,x,x2...xm时公式均能准确成立,但 f ( x ) = x m + 1 f(x)=x^{m+1} f(x)=xm+1时不能准确成立。

例题:梯形公式的代数精度为多少?
解:梯形公式 ∫ a b f ( x ) d x = f ( a ) + f ( b ) 2 ( b − a ) \int_{a}^{b} f(x)dx=\frac{f(a)+f(b)}{2}(b-a) abf(x)dx=2f(a)+f(b)(ba)
f ( x ) = 1 f(x)=1 f(x)=1,左边=b-a=右边
f ( x ) = x f(x)=x f(x)=x,左= b 2 − a 2 2 \frac{b^{2}-a^{2}}{2} 2b2a2=右
f ( x ) = x 2 f(x)=x^{2} f(x)=x2 b 3 − a 3 2 ! = ( a 2 + b 2 ) 2 ( b − a ) \frac{b^3-a^3}{2}!=\frac{(a^2+b^2)}{2}(b-a) 2b3a3!=2(a2+b2)(ba)=右边
故该公式的代数精度为1。

插值型求积公式及Newton-Cotes公式

插值型求积公式

利用Lagrange插值求n次多项式的 L n ( x ) = ∑ k = 0 n f ( x k ) l k ( x ) L_{n}(x)=\sum_{k=0}^{n}f(x_{k})l_{k}(x) Ln(x)=k=0nf(xk)lk(x)
其中 f ( x ) = L n ( x ) + R n ( x ) , R n x = f n + 1 ( ξ ) ( n + 1 ) ! w n + 1 ( x ) f(x)=L_{n}(x)+R_{n}(x),R_n{x}=\frac{f^{n+1}(\xi)}{(n+1)!}w_{n+1}(x) f(x)=Ln(x)+Rn(x),Rnx=(n+1)!fn+1(ξ)wn+1(x)
∫ a b f ( x ) d x = ∫ a b L n ( x ) d x + ∫ a b R n ( x ) d x = ∫ a b ∑ k = 0 n f ( x k ) l k ( x ) d x + ∫ a b R n ( x ) d x = ∑ k = 0 n f ( x k ) ∫ a b l k ( x ) d x + ∫ a b R n ( x ) d x A k \int_{a}^{b} f(x)dx=\int_{a}^{b} L_{n}(x)dx+\int_{a}^{b}R_{n}(x)dx=\int_{a}^{b} \sum_{k=0}^{n}f(x_{k})l_{k}(x)dx+\int_{a}^{b}R_{n}(x)dx=\sum_{k=0}^{n}f(x_{k})\frac{\int_{a}^{b}l_{k}(x)dx+\int_{a}^{b}R_{n}(x)dx}{A_{k}} abf(x)dx=abLn(x)dx+abRn(x)dx=abk=0nf(xk)lk(x)dx+abRn(x)dx=k=0nf(xk)Akablk(x)dx+abRn(x)dx
即用插值多项式代替被积函数。

若定义求积公式 ∫ a b f ( x ) d x ≈ ∑ k = 0 n A k f ( x k ) \int_{a}^{b} f(x)dx\approx\sum_{k=0}^{n}A_{k}f(x_{k}) abf(x)dxk=0nAkf(xk)中的求积公式用插值公式 A k = ∫ a b l k ( x ) d x A_{k}=\int_{a}^{b}l_{k}(x)dx Ak=ablk(x)dx表示,则称该数值积分公式为插值型求积公式

定理:插值型数值积分公式的代数精度至少有n阶精度。
注: ∑ k = 0 n A k = ∑ k = 0 n ∫ a b l k ( x ) d x = ∫ a b ∑ k = 0 n A k d x = ∫ a b 1 d x = b − a \sum_{k=0}^{n}A_{k}=\sum_{k=0}^{n}\int_{a}^{b}l_{k}(x)dx=\int_{a}^{b}\sum_{k=0}^{n}A_{k}dx=\int_{a}^{b}1dx=b-a k=0nAk=k=0nablk(x)dx=abk=0nAkdx=ab1dx=ba

Newton-Cotes公式

该公式主要研究具体节点的取法,若取[a,b]上n+1个等距节点, x 0 , x 1 . . . x n x_{0},x_{1}...x_{n} x0,x1...xn即第k个节点的值为初始值加上k步步长 x k = x 0 + k h x_{k}=x_{0}+kh xk=x0+kh,其中 h = b − a h , x 0 = a h=\frac{b-a}{h},x_{0}=a h=hba,x0=a,利用这些节点作n次Lagrange插值多项式,有如下公式:

∫ a b f ( x ) d x ≈ ∫ a b l k ( x ) f ( x k ) d x \int_{a}^{b}f(x)dx\approx \int_{a}^{b}l_{k}(x)f(x_{k})dx abf(x)dxablk(x)f(xk)dx

A k = ∫ a b ( x − x 0 ) ( x − x 1 ) . . . ( x − x k − 1 ) ( x − x k + 1 ) . . . ( x − x n ) ( x k − x 0 ) ( x k − x 1 ) . . . ( x k − x k k − 1 ) ( x k − x k + 1 ) . . . ( x k − x n ) d x A_{k}=\int_{a}^{b}\frac{(x-x_{0})(x-x_{1})...(x-x_{k-1})(x-x_{k+1})...(x-x_{n})}{(x_{k}-x_{0})(x_{k}-x_{1})...(x_{k}-x_{kk-1})(x_{k}-x_{k+1})...(x_{k}-x_{n})}dx Ak=ab(xkx0)(xkx1)...(xkxkk1)(xkxk+1)...(xkxn)(xx0)(xx1)...(xxk1)(xxk+1)...(xxn)dx

x = a + t h , x k = a + k h x=a+th,x_{k}=a+kh x=a+th,xk=a+kh,原式= ∫ a b ( b − a ) ( − 1 ) n − k n k ! ( n − k ) ! ∫ 0 n t ( t − 1 ) . . . ( t − k + 1 ) ( t − k − 1 ) . . . ( t − n ) d t \int_{a}^{b}\frac{(b-a)(-1)^n-k}{nk!(n-k)!}\int_{0}^{n}t(t-1)...(t-k+1)(t-k-1)...(t-n)dt abnk!(nk)!(ba)(1)nk0nt(t1)...(tk+1)(tk1)...(tn)dt

C k n = ( b − a ) ( − 1 ) n − k n k ! ( n − k ) ! ∫ 0 n t ( t − 1 ) . . . ( t − k + 1 ) ( t − k − 1 ) . . . ( t − n ) d t C_{k}^{n}=\frac{(b-a)(-1)^n-k}{nk!(n-k)!}\int_{0}^{n}t(t-1)...(t-k+1)(t-k-1)...(t-n)dt Ckn=nk!(nk)!(ba)(1)nk0nt(t1)...(tk+1)(tk1)...(tn)dt则为Cotes系数, A k = ( b − a ) C k n A_{k}=(b-a)C_{k}^{n} Ak=(ba)Ckn

最终Newton-Cotes公式为 ∫ a b f ( x ) d x ≈ ( b − a ) ∑ k = 0 n C k n f ( x k ) \int_{a}^{b} f(x)dx\approx (b-a)\sum_{k=0}^{n}C_{k}^{n}f(x_{k}) abf(x)dx(ba)k=0nCknf(xk),即节点均匀分割的求和公式。

例如当n=1,
C o 1 = ( − 1 ) 1 1 ! 0 ! 1 ! , ∫ 0 1 ( t − 1 ) d t = 1 2 C_{o}^{1}=\frac{(-1)^1}{1!0!1!},\int_{0}^{1}(t-1)dt=\frac{1}{2} Co1=1!0!1!(1)1,01(t1)dt=21
C 1 1 = ( − 1 ) 1 1 ! 1 ! 0 ! , ∫ 0 1 t d t = − 1 2 C_{1}^{1}=\frac{(-1)^1}{1!1!0!},\int_{0}^{1}tdt=-\frac{1}{2} C11=1!1!0!(1)1,01tdt=21
∫ a b f ( x ) d x ≈ b − a 2 [ f ( a ) + f ( b ) ] \int_{a}^{b}f(x)dx\approx \frac{b-a}{2}[f(a)+f(b)] abf(x)dx2ba[f(a)+f(b)]
即在[a,b]区间整体运算,此时计算方法为梯形公式,代数精度为1.

当n=2时,
分别计算 C 0 2 , C 1 2 , C 2 2 C_{0}^{2},C_{1}^{2},C_{2}^{2} C02,C12,C22
∫ a b f ( x ) d x ≈ b − a 6 [ f ( a ) + 4 f ( a + b 2 ) + f ( b ) ] \int_{a}^{b}f(x)dx\approx \frac{b-a}{6}[f(a)+4f(\frac{a+b}{2})+f(b)] abf(x)dx6ba[f(a)+4f(2a+b)+f(b)]
该公式为Sinpson公式,至少精度为2

n=4时为Cotes公式,具有至少5次代数精度。

定理:n为偶数时,其代数精度至少为n+1次,n表示区间个数,而非节点个数,如5个节点将区间分为四个区间,精度为5。

例题 f ( x ) = x 2 时,用梯形公式和 S i m p s o n 计算 ∫ 0 2 x 2 d x f(x)=x^2时,用梯形公式和Simpson计算\int_{0}^{2}x^2dx f(x)=x2时,用梯形公式和Simpson计算02x2dx
解:
梯形公式 ∫ 0 2 x 2 d x ≈ 2 − 0 2 ( 0 + 4 ) = 4 \int_{0}^{2}x^2dx\approx \frac{2-0}{2}(0+4)=4 02x2dx220(0+4)=4
Simpson ∫ 0 2 x 2 d x ≈ 2 − 0 6 ( 0 + 4 + 4 ) = 8 3 \int_{0}^{2}x^2dx\approx \frac{2-0}{6}(0+4+4)=\frac{8}{3} 02x2dx620(0+4+4)=38
可以看到梯形公式的误差还是比较大的,而Simpson甚至得到了精确答案。

性质:
1,对称性。 C k n = C n − k n C_{k}^{n}=C_{n-k}^n Ckn=Cnkn
2, ∑ k = 0 n C k n = 1 \sum_{k=0}^{n}C_{k}^{n}=1 k=0nCkn=1

Newton-Cotes余项:
梯形公式下 R ( f ) = ∫ a b f ′ ′ ( ξ ) 2 ( x − a ) ( x − b ) d x R(f)=\int_{a}^{b}\frac{f''(\xi)}{2}(x-a)(x-b)dx R(f)=ab2f′′(ξ)(xa)(xb)dx,存在 η ∈ [ 0 , 1 ] ,使 R ( f ) = 1 2 f ′ ′ ( η ) ∫ a b ( x − a ) ( x − b ) d x = − f ′ ′ ( η ) 12 ( b − a ) 3 \eta \in [0,1],使R(f)=\frac{1}{2}f''(\eta)\int_{a}^{b}(x-a)(x-b)dx=-\frac{f''(\eta)}{12}(b-a)^3 η[0,1],使R(f)=21f′′(η)ab(xa)(xb)dx=12f′′(η)(ba)3

同理:
Simpson余项 R ( f ) = − 1 90 ( b − a 2 ) 5 f 4 ( η ) R(f)=-\frac{1}{90}(\frac{b-a}{2})^5f^4(\eta) R(f)=901(2ba)5f4(η)
Cotes余项 R ( f ) = 2 ( b − a ) 945 ( b − a 4 ) 6 f 6 ( η ) R(f)=\frac{2(b-a)}{945}(\frac{b-a}{4})^6f^6(\eta) R(f)=9452(ba)(4ba)6f6(η)

复化求积公式

为了克服容格现象,用分段函数代替原函数,用于求积分时同样应用分治思想,划分区间应用梯形或Simpson公式,使用分段线性插值代替原函数,数学公式表示为 ∫ a b f ( x ) d x = ∑ k = 0 n − 1 ∫ x k x k + 1 f ( x ) d x ≈ ∑ k = 0 n − 1 I k \int_{a}^{b}f(x)dx= \sum_{k=0}^{n-1}\int_{x_k}^{x_{k+1}}f(x)dx\approx \sum_{k=0}^{n-1}I_k abf(x)dx=k=0n1xkxk+1f(x)dxk=0n1Ik,其中 I k = ∫ x k x k + 1 f ( x ) d x ≈ h 2 [ f ( x k ) + f ( x k + 1 ) ] I_k=\int_{x_k}^{x_{k+1}}f(x)dx\approx \frac{h}{2}[f(x_k)+f(x_{k+1})] Ik=xkxk+1f(x)dx2h[f(xk)+f(xk+1)] 或用Simpson

复化的梯形公式

分割区间使用 I = ∫ x k x k + 1 f ( x ) d x ≈ h 2 [ f ( x k ) + f ( x k + 1 ) ] I_=\int_{x_k}^{x_{k+1}}f(x)dx\approx \frac{h}{2}[f(x_k)+f(x_{k+1})] I=xkxk+1f(x)dx2h[f(xk)+f(xk+1)] I k = ∑ k = 0 n − 1 ∫ x k x k + 1 f ( x ) d x ≈ 2 h 2 [ f ( a ) + f ( b ) ] + 2 ∑ k = 1 n − 1 f ( x k ) I_k= \sum_{k=0}^{n-1}\int_{x_k}^{x_{k+1}}f(x)dx \approx 2\frac{h}{2}[f(a)+f(b)]+2\sum_{k=1}^{n-1}f(x_k) Ik=k=0n1xkxk+1f(x)dx22h[f(a)+f(b)]+2k=1n1f(xk)
多个区间分别计算梯形公式后求和

Romberg公式

复化梯形公式方程 T n = h 2 [ f ( a ) + f ( h ) + 2 ∑ k = 0 n − 1 f ( x k + 1 2 ) ] T_n=\frac{h}{2}[f(a)+f(h)+2\sum_{k=0}^{n-1}f(x_{k+\frac{1}{2}})] Tn=2h[f(a)+f(h)+2k=0n1f(xk+21)],将 T n = T 1 ( h ) T_n=T_1(h) Tn=T1(h),由E-M欧拉麦克劳林公式, T 1 ( h ) − I = α 1 h 2 + α 2 h 4 + . . . + α k h 2 k + . . . T_1(h)-I=\alpha_1h^2+\alpha_2h^4+...+\alpha_kh^2k+... T1(h)I=α1h2+α2h4+...+αkh2k+...

后面不写了,反正使用外推法构造出高精度积分公式 T m + 1 ( h ) = 4 m 4 m − 1 T m ( h 2 ) − 1 4 m − 1 T_{m+1}(h)=\frac{4^m}{4^{m}-1}T_m(\frac{h}{2})-\frac{1}{4^{m}-1} Tm+1(h)=4m14mTm(2h)4m11

计算过程如下图:
Romberg计算过程
例题:利用复化求积公式将[0,1]8等分,计算 I = ∫ 0 1 4 + x 1 + x 2 I=\int_{0}^{1}\frac{4+x}{1+x^2} I=011+x24+x
解:
复化梯形公式, I ≈ 1 2 × 8 [ f ( 0 ) + f ( 1 ) + 2 ∑ 1 7 f ( x k ) ] ≈ 3 , 138988 I\approx\frac{1}{2×8}[f(0)+f(1)+2\sum_{1}^7f(x_k)]\approx 3,138988 I2×81[f(0)+f(1)+217f(xk)]3,138988
复化Simpson, I ≈ 1 6 × 4 [ ] f ( 0 ) + f ( 1 ) + 4 ∑ 0 3 f ( x k + 1 2 ) + 2 ∑ 1 3 f ( x k ) ] ≈ 3.141593 I\approx\frac{1}{6×4}[]f(0)+f(1)+4\sum_{0}^3f(x_{k+\frac{1}{2}})+2\sum_{1}^3f(x_k)]\approx3.141593 I6×41[]f(0)+f(1)+403f(xk+21)+213f(xk)]3.141593

步长越多结果越精确,但应用中具体步长我们难以直接确定,下面将介绍一种能够使步长动态迭代的方法。

变步长的梯形公式

基本思想为:原步长h折半,再利用复化求积公式,不断折半,用前后两次结果做差,如果精度满足要求则停止折半,故该方法又称折半求积公式。

例如: ∫ a b f ( x ) d x \int_a^bf(x)dx abf(x)dx将[a,b]等分, h = b − a n , x k = a + k h h=\frac{b-a}{n},x_k=a+kh h=nba,xk=a+kh
复化梯形公式 T 2 n = h 4 ∑ k = 0 n − 1 [ f ( x k ) + 2 f ( x k + 1 2 ) + f ( x k + 1 ) ] = T n 2 + h 2 ∑ k = 0 n − 1 f ( x k + 1 2 ) T_{2n}=\frac{h}{4}\sum_{k=0}^{n-1}[f(x_k)+2f(x_{k+\frac{1}{2}})+f(x_{k+1})]=\frac{T_n}{2}+\frac{h}{2}\sum_{k=0}^{n-1}f(x_{k+\frac{1}{2}}) T2n=4hk=0n1[f(xk)+2f(xk+21)+f(xk+1)]=2Tn+2hk=0n1f(xk+21)
将已复化的梯形公式再折半步长应用复化公式,该公式实际上只需计算 x k + 1 2 x_{k+\frac{1}{2}} xk+21即新分节点的函数值。

应用中往往使用 ∣ t 2 k − T 2 k − 1 ∣ < ε |t_{2k}-T_{2k-1}|<\varepsilon t2kT2k1<ε,前后两次变化之差来控制步长。

例题:用变步长的梯形公式计算 I = ∫ 0 1 s i n x x d x I=\int^1_0\frac{sinx}{x}dx I=01xsinxdx
解:令 f ( x ) = s i n x x f(x)=\frac{sinx}{x} f(x)=xsinx,并补充定义 f ( 0 ) = 1 f(0)=1 f(0)=1使之连续, T 1 = 1 2 [ f ( 0 ) + f ( 1 ) ] ≈ 0.9207355 T_1=\frac{1}{2}[f(0)+f(1)]\approx0.9207355 T1=21[f(0)+f(1)]0.9207355
T 2 = 1 2 T 1 + 1 2 f ( 1 2 ) ≈ 0.9397933 T_2=\frac{1}{2}T_1+\frac{1}{2}f(\frac{1}{2})\approx0.9397933 T2=21T1+21f(21)0.9397933

使用该方法的计算量大,收敛慢,为了改进该问题,引入变步长的Romberg公式。

变步长的Romberg公式

其实就是Romberg的折半法,可视化展示如下:
变步长Romberg
公式计算方式如下:

  1. T 1 = b − a 2 [ f ( a ) + f ( b ) ] T_1=\frac{b-a}{2}[f(a)+f(b)] T1=2ba[f(a)+f(b)]
  2. T 2 = T 1 2 + b − a 2 f ( a + b 2 ) T_2=\frac{T_1}{2}+\frac{b-a}{2}f(\frac{a+b}{2}) T2=2T1+2baf(2a+b)
  3. S 1 = 4 3 T 2 − 1 3 T 1 S_1=\frac{4}{3}T_2-\frac{1}{3}T_1 S1=34T231T1
  4. T 4 = T 2 2 + b − a 4 [ f ( 3 a + b 4 ) + f ( 3 b + a 4 ) ] T_4=\frac{T_2}{2}+\frac{b-a}{4}[f(\frac{3a+b}{4})+f(\frac{3b+a}{4})] T4=2T2+4ba[f(43a+b)+f(43b+a)]
  5. S 2 = 4 3 T 4 − 1 3 T 2 S_2=\frac{4}{3}T_4-\frac{1}{3}T_2 S2=34T431T2
  6. C 1 = 16 15 S 2 − 1 15 S 1 C_1=\frac{16}{15}S_2-\frac{1}{15}S_1 C1=1516S2151S1
  7. T 8 = 1 2 T 4 + b − a 8 [ f ( 7 a + b 8 ) + f ( 5 a + 3 b 8 ) + f ( 5 b + 3 a 8 ) + f ( 3 b + a 2 ) ] T_8=\frac{1}{2}T_4+\frac{b-a}{8}[f(\frac{7a+b}{8})+f(\frac{5a+3b}{8})+f(\frac{5b+3a}{8})+f(\frac{3b+a}{2})] T8=21T4+8ba[f(87a+b)+f(85a+3b)+f(85b+3a)+f(23b+a)]
  8. S 4 = 4 3 T 8 − 1 3 T 4 S_4=\frac{4}{3}T_8-\frac{1}{3}T4 S4=34T831T4
  9. C 2 = 16 15 S 4 − 1 15 S 2 C_2=\frac{16}{15}S_4-\frac{1}{15}S_2 C2=1516S4151S2
  10. R 1 = 64 63 C 2 − 1 63 C 1 R_1=\frac{64}{63}C_2-\frac{1}{63}C_1 R1=6364C2631C1

使用折半+外推法计算Romberg,T使用折半法迭代, S = 4 3 T k + 1 − 1 3 T k S=\frac{4}{3}T_{k+1}-\frac{1}{3}T_k S=34Tk+131Tk C = 16 15 S k + 1 − 1 15 S k C=\frac{16}{15}S_{k+1}-\frac{1}{15}S_k C=1516Sk+1151Sk R = 64 63 C k + 1 − 1 63 C k R=\frac{64}{63}C_{k+1}-\frac{1}{63}C_{k} R=6364Ck+1631Ck

例题:使用Romberg公式计算 ∫ 2 8 1 2 x d x \int_2^8\frac{1}{2x}dx 282x1dx,每步计算保留4位小数。
解:
T 1 = 8 − 2 2 [ f ( 8 ) + f ( 2 ) ] ≈ 0.9375 T_1=\frac{8-2}{2}[f(8)+f(2)]\approx0.9375 T1=282[f(8)+f(2)]0.9375
T 2 = T 1 2 + 8 − 2 2 f ( 5 ) ≈ 0.76875 T_2=\frac{T_1}{2}+\frac{8-2}{2}f(5)\approx0.76875 T2=2T1+282f(5)0.76875
S 1 = 4 3 T 2 − 1 3 T 1 = 0.7125 S_1=\frac{4}{3}T_2-\frac{1}{3}T_1=0.7125 S1=34T231T1=0.7125
T 4 = 1 2 T 2 + 8 − 2 4 [ f ( 3.5 ) + f ( 6.5 ) ] = 0.7140 T_4=\frac{1}{2}T_2+\frac{8-2}{4}[f(3.5)+f(6.5)]=0.7140 T4=21T2+482[f(3.5)+f(6.5)]=0.7140
S 2 = 4 3 T 4 + 1 3 T 2 = 0.6958 S_2=\frac{4}{3}T_4+\frac{1}{3}T_2=0.6958 S2=34T4+31T2=0.6958
C 1 = 16 15 S 2 − 1 15 S 1 = 0.6947 C_1=\frac{16}{15}S_2-\frac{1}{15}S_1=0.6947 C1=1516S2151S1=0.6947
T 8 = 1 2 T 4 + 8 − 2 8 [ f ( 2.75 ) + f ( 4.25 ) + f ( 5.75 ) + f ( 7.25 ) ] = 0.6986 T_8=\frac{1}{2}T_4+\frac{8-2}{8}[f(2.75)+f(4.25)+f(5.75)+f(7.25)]=0.6986 T8=21T4+882[f(2.75)+f(4.25)+f(5.75)+f(7.25)]=0.6986
S 4 = 4 3 T 8 − 1 3 T 4 = 0.6934 S_4=\frac{4}{3}T_8-\frac{1}{3}T_4=0.6934 S4=34T831T4=0.6934
C 2 = 16 15 S 4 − 1 15 S 2 = 0.6932 C_2=\frac{16}{15}S_4-\frac{1}{15}S_2=0.6932 C2=1516S4151S2=0.6932
R 1 = 64 63 C 2 − 1 63 C 1 = 0.6932 R_1=\frac{64}{63}C_2-\frac{1}{63}C_1=0.6932 R1=6364C2631C1=0.6932

其他参考资料在此

总结

本章学习了如何利用迭代公式计算积分的近似值:

首先是使用数值积分矩形或梯形来代替原有积分曲线的方法,并用自变量 x x x的次数作为代数精度衡量近似的程度。

然后是利用插值多项式求和代替原积分曲线积分,其中点的取法用Newton-Cotes均匀选取。

最后为了计算迭代终点,采用变步长求积动态折半计算,不断逼近真实值,有基本的复化梯形公式和加快迭代收敛速度的Romberg公式,Romberg计算方法最复杂,需要迭代四次计算,但收敛速度快,计算量也没那么大,可以说是计算数值积分最先进的方法。

相关文章:

数值分析—数值积分

研究背景 积分的数学解法为牛顿莱布尼兹公式&#xff0c;数学表示为 ∫ a b f ( x ) d x F ( b ) − F ( a ) \int_{a}^{b} f(x)dxF(b)-F(a) ∫ab​f(x)dxF(b)−F(a)&#xff0c;但应用该方法有如下困难&#xff1a; 1&#xff0c; f ( x ) f(x) f(x)的原函数有时不能用初等函…...

克服大规模语言模型限制,构建新的应用方法——LangChain

大模型 大模型的出现和落地开启了人工智能(AI)新一轮的信息技术革命&#xff0c;改变了人们的生 活方式、工作方式和思维方式。大模型的落地需要数据、算力和算法三大要素。经过几 年发展&#xff0c;大模型的数据集(包括多模态数据集)制作已经形成了规约&#xff0c;Meta、Go…...

计算机网络 —— HTTPS 协议

前一篇文章&#xff1a;计算机网络 —— HTTP 协议&#xff08;详解&#xff09;-CSDN博客 目录 前言 一、HTTPS 协议简介 二、HTTPS 工作过程 1.对称加密 2.非对称加密 3.中间人攻击 4.引入证书 三、HTTPS 常见问题 1.中间人能否篡改证书&#xff1f; 2.中间人能否调…...

React第十七章(useRef)

useRef 当你在React中需要处理DOM元素或需要在组件渲染之间保持持久性数据时&#xff0c;便可以使用useRef。 import { useRef } from react; const refValue useRef(initialValue) refValue.current // 访问ref的值 类似于vue的ref,Vue的ref是.value&#xff0c;其次就是vu…...

React第十五节useReducer使用详解差异

useReducer() 的用法注意事项 1、 概述&#xff1a; useReducer() 常用于管理复杂的状态更新逻辑&#xff0c;特别是在状态更新依赖于多个条件或动作时&#xff0c;useReducer 提供了一种更加结构化和可维护的方式来处理状态。可以将更新函数写在组件外面 它与 useState() 相…...

NanoLog起步笔记-5-客户端简要描述

nonolog起步笔记-5-客户端简要描述 客户端的简要的设计图路notify模式服务端最好分两个核 NanoLog::setLogLevel(NOTICE);从 NANO_LOG 开始NANO_LOGcompiling time的语句getNumNibblesNeeded&#xff1a;得到prompt中&#xff0c;number的数量countFmtParams&#xff1a;得到所…...

Flink:入门介绍

目录 一、Flink简介 2.1 Flink 架构 2.2 Flink 应用程序 运行模式 二、Flink 集群 部署 2.1 本地集群模式 2.1.1 安装JDK​编辑 2.1.2 下载、解压 Flink 2.1.3 启动集群 2.1.4 停止集群 2.2 Standalone 模式 2.2.0 集群规划 2.2.1 安装JDK 2.2.2 设置免密登录 2…...

目标跟踪领域经典论文解析

亲爱的小伙伴们&#x1f618;&#xff0c;在求知的漫漫旅途中&#xff0c;若你对深度学习的奥秘、JAVA 、PYTHON与SAP 的奇妙世界&#xff0c;亦或是读研论文的撰写攻略有所探寻&#x1f9d0;&#xff0c;那不妨给我一个小小的关注吧&#x1f970;。我会精心筹备&#xff0c;在…...

网络编程 | TCP套接字通信及编程实现经验教程

1、TCP基础铺垫 TCP/IP协议簇中包含了如TCP、UDP、IP、ICMP、ARP、HTTP等通信协议。TCP协议是TCP/IP协议簇中最为常见且重要的通信方式之一&#xff0c;它为互联网上的数据传输提供了可靠性和连接管理。 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议…...

SAP导出表结构并保存到Excel 源码程序

SAP导出表结构并保存到Excel,方便写代码时复制粘贴 经常做接口,需要copy表结构,找到了这样一个程程,特别有用。 01. 先看结果...

Linux下redis环境的搭建

1.redis的下载 redis官网下载redis的linux压缩包&#xff0c;官网地址:Redis下载 网盘链接&#xff1a; 通过网盘分享的文件&#xff1a;redis-5.0.4.tar.gz 链接: https://pan.baidu.com/s/1cz3ifYrDcHWZXmT1fNzBrQ?pwdehgj 提取码: ehgj 2.redis安装与配置 将包上传到 /…...

REDMI瞄准游戏赛道,推出小屏平板

近日&#xff0c;REDMI推出了一款8.8英寸的小屏平板&#xff0c;引发市场关注。该平板采用LCD屏幕&#xff0c;搭载天玑9400处理器&#xff0c;定位游戏市场&#xff0c;意在开拓小屏平板的新领域‌。 ‌小屏平板新尝试‌ 这款REDMI平板未追随大屏潮流&#xff0c;而是选择了8…...

springai结合ollama

目录 ollama 介绍 使用 下载&#xff1a; 安装&#xff1a; 点击这个玩意next就行了。 运行 spring ai使用ollama调用本地部署的大模型 加依赖 配置yml 写代码 ollama 介绍 官网&#xff1a;Ollama Ollama是一个用于部署和运行各种开源大模型的工具&#xff1b; …...

React第十三节开发中常见问题之(视图更新、事件处理)

一、视图更新有哪些方案&#xff1f; useState用法介绍 1、对于数据变量 正常的增删改查&#xff0c;只会让数据更新&#xff0c;但是不会触发 React 视图的更新&#xff1b; 如&#xff1a; <script lang"jsx">const baseTable [{name:Andy, age: 18, id…...

【Appium报错】安装uiautomator2失败

目录 1、通过nmp安装uiautomator2&#xff1a;失败 2、通过 Appium 的平台直接安装驱动程序 3、通过pip 来安装 uiautomator2 1、通过nmp安装uiautomator2&#xff1a;失败 我先是通过npm安装的uiautomator2&#xff0c;也显示已经安装成功了&#xff1a; npm install -g …...

DataSophon集成CMAK KafkaManager

本次集成基于DDP1.2.1 集成CMAK-3.0.0.6 设计的json和tar包我放网盘了. 通过网盘分享的文件&#xff1a;DDP集成CMAK 链接: https://pan.baidu.com/s/1BR70Ajj9FxvjBlsOX4Ivhw?pwdcpmc 提取码: cpmc CMAK github上提供了zip压缩包.将压缩包解压之后 在根目录下加入启动脚本…...

Ubuntu22.04深度学习环境安装【显卡驱动安装】

前言 使用Windows配置环境失败&#xff0c;其中有一个包只有Linux版本&#xff0c;Windows版本的只有python3.10的&#xff0c;所以直接选用Linux来配置环境&#xff0c;显卡安装比较麻烦&#xff0c;单独出一期。 显卡驱动安装 方法一&#xff1a;在线安装&#xff08;操作…...

21届秋/校招面经

开篇先说一下我自身情况&#xff0c;东南大学本科计算机科学与技术专业毕业&#xff0c;gpa3.2/4.8。零零散散搞过一年多ACM&#xff0c;去年&#xff08;2019&#xff09;在icpc上海站拿了铜之后增加了信心&#xff08;因为当时训练总时间半年不到&#xff09;&#xff0c;于是…...

相机动态/在线标定

图1 图2 基本原理 【原理1】平行线在射影变换后会交于一点。如图所示,A为相机光心,蓝色矩形框为归一化平面,O为平面中心。地面四条黄色直线为平行且等距的车道线。HI交其中两条车道线于H、I, 过G作HI的平行线GM交车道线于M。HI、GM在归一化平面上的投影分别为JK、PN,二者会…...

MySQL 8.0 新特性汇总

文章目录 前言1. 运维管理 1.1 可持久化变量1.2 管理员端口1.3 资源组1.4 数据库粒度只读1.5 show processlist 实现方式1.6 加速索引创建速度1.7 控制连接的内存使用量1.8 克隆插件1.9 mysqldump 新增参数1.10 慢日志增强1.11 快速加列1.12 InnoDB 隐藏主键1.13 Redo 配置1.14…...

Resnet C ++ 部署 tensort 部署(四)

Resnet C 部署 pytorch功能测试&#xff08;一&#xff09; Resnet C 部署 模型训练&#xff08;二&#xff09; Resnet C 部署 模型测试&转 onnx&#xff08;三&#xff09; Resnet C 部署 tensort 部署&#xff08;四&#xff09; 之后&#xff0c;开始onnx 转trt 部…...

《Java核心技术I》对并发散列映射的批操作

对并发散列映射的批操作 Java API提供了批处理&#xff0c;计时其他线程处理映射&#xff0c;这些操作也能安全的执行。 3种不同操作&#xff1a; search(搜索)&#xff0c;为每个键或值应用一个函数&#xff0c;直到函数生成一个非null的结果&#xff0c;然后搜索终止&…...

记录一次使用git无权限的问题排查

正常的配置了公私钥之后&#xff0c;在gitlab中也存储了配对的公钥&#xff0c;但当使用git clone 时&#xff0c;总是报无权限 由于在这台机器中添加了多个公私钥&#xff0c;有点复杂&#xff0c;我们可以使用命令 ssh -vvvT 调试一下 ssh -vvvT yourGitlabAddr...

appium学习之二:adb命令

1、查看设备 adb devices 2、连接 adb connect IP:端口 3、安装 adb install xxx.apk 4、卸载 adb uninstall 【包名】 5、把对应目录下的1.txt文件传到手机sdcard下 adb push 1.txt /sdcard 6、进入对应的设备里 adb shell 7、切入sdcard目录 cd /sdcard 8、ls 查…...

Linux Vi/Vim使用 ⑥

掌握 CentOS 7 下的 Vi/Vim 编辑器&#xff1a;从安装到精通 在 CentOS 7 系统的日常运维、编程开发以及各类文本处理场景中&#xff0c;Vi/Vim 编辑器都是不可或缺的得力工具。它以轻量、高效、功能强大著称&#xff0c;虽然初次上手有一定学习门槛&#xff0c;但掌握之后便能…...

JCR一区牛顿-拉夫逊优化算法+分解对比!VMD-NRBO-Transformer-BiLSTM多变量时序光伏功率预测

JCR一区牛顿-拉夫逊优化算法分解对比&#xff01;VMD-NRBO-Transformer-BiLSTM多变量时序光伏功率预测 目录 JCR一区牛顿-拉夫逊优化算法分解对比&#xff01;VMD-NRBO-Transformer-BiLSTM多变量时序光伏功率预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.中科院…...

easyExcel实现表头批注

背景&#xff1a; 网上大部分都不能直接使用&#xff0c;为此总结一个方便入手且可用的工具&#xff0c;用自定义注解实现 依赖包&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>…...

Pytest测试用例使用小结

基础使用 Pytest 测试用例实现代码 import pytest from server.service import Servicepytest.fixture def service():return Service(logger)class TestService:classmethoddef setup_class(cls):"""初始化设置一次:return:"""logger.info(&q…...

LeetCode题练习与总结:132 模式--456

一、题目描述 给你一个整数数组 nums &#xff0c;数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成&#xff0c;并同时满足&#xff1a;i < j < k 和 nums[i] < nums[k] < nums[j] 。 如果 nums 中存在 132 模式的子序列 &a…...

IdentityServer4框架、ASP.NET core Identity

OAuth2.0 IdentityServer4 官网 中文官网 ASP.NET Core Identity提供了一个用来管理和存储用户账户的框架. IdentityServer4是基于ASP.NET Core实现的认证和授权框架&#xff0c;是对OpenID Connect和OAuth 2.0协议的实现。 IdentityServer是一个中间件,它可以添加符合OpenID…...