数值分析—数值积分
研究背景
积分的数学解法为牛顿莱布尼兹公式,数学表示为 ∫ 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} e−x2和 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(ξ)(b−a),其中 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)dx≈f(a)(b−a),计算左端点为宽的矩阵公式,称为左矩阵公式,同理还有右矩阵公式 f ( b ) ( b − a ) f(b)(b-a) f(b)(b−a)和中矩阵公式 f ( a + b 2 ) ( b − a ) f(\frac{a+b}{2})(b-a) f(2a+b)(b−a)。
矩形的误差可能过于大了,该方法则再次修正为 f ( a ) + f ( b ) 2 ( b − a ) \frac{f(a)+f(b)}{2}(b-a) 2f(a)+f(b)(b−a),即根据端点函数值计算梯形面积近似积分值。
该方法的再次改进为近似计算函数的平均值, 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(ξ)(b−a)≈n+1∑k=0nf(xk)(b−a),用多个点的平均值代替 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)dx−∑k=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)(b−a)
令 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} 2b2−a2=右
令 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) 2b3−a3!=2(a2+b2)(b−a)=右边
故该公式的代数精度为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=0∑nf(xk)lk(x)dx+∫abRn(x)dx=k=0∑nf(xk)Ak∫ablk(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)dx≈∑k=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=0n∫ablk(x)dx=∫ab∑k=0nAkdx=∫ab1dx=b−a
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=hb−a,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)dx≈∫ablk(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(xk−x0)(xk−x1)...(xk−xkk−1)(xk−xk+1)...(xk−xn)(x−x0)(x−x1)...(x−xk−1)(x−xk+1)...(x−xn)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!(n−k)!(b−a)(−1)n−k∫0nt(t−1)...(t−k+1)(t−k−1)...(t−n)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!(n−k)!(b−a)(−1)n−k∫0nt(t−1)...(t−k+1)(t−k−1)...(t−n)dt则为Cotes系数, A k = ( b − a ) C k n A_{k}=(b-a)C_{k}^{n} Ak=(b−a)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≈(b−a)∑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(t−1)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)dx≈2b−a[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)dx≈6b−a[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 ∫02x2dx≈22−0(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} ∫02x2dx≈62−0(0+4+4)=38
可以看到梯形公式的误差还是比较大的,而Simpson甚至得到了精确答案。
性质:
1,对称性。 C k n = C n − k n C_{k}^{n}=C_{n-k}^n Ckn=Cn−kn
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′′(ξ)(x−a)(x−b)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(x−a)(x−b)dx=−12f′′(η)(b−a)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(2b−a)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(b−a)(4b−a)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=0n−1∫xkxk+1f(x)dx≈∑k=0n−1Ik,其中 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)dx≈2h[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)dx≈2h[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=0n−1∫xkxk+1f(x)dx≈22h[f(a)+f(b)]+2∑k=1n−1f(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)+2∑k=0n−1f(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)=4m−14mTm(2h)−4m−11
计算过程如下图:
例题:利用复化求积公式将[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 I≈2×81[f(0)+f(1)+2∑17f(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 I≈6×41[]f(0)+f(1)+4∑03f(xk+21)+2∑13f(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=nb−a,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=4h∑k=0n−1[f(xk)+2f(xk+21)+f(xk+1)]=2Tn+2h∑k=0n−1f(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 ∣t2k−T2k−1∣<ε,前后两次变化之差来控制步长。
例题:用变步长的梯形公式计算 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的折半法,可视化展示如下:
公式计算方式如下:
- T 1 = b − a 2 [ f ( a ) + f ( b ) ] T_1=\frac{b-a}{2}[f(a)+f(b)] T1=2b−a[f(a)+f(b)]
- 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+2b−af(2a+b)
- S 1 = 4 3 T 2 − 1 3 T 1 S_1=\frac{4}{3}T_2-\frac{1}{3}T_1 S1=34T2−31T1
- 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+4b−a[f(43a+b)+f(43b+a)]
- S 2 = 4 3 T 4 − 1 3 T 2 S_2=\frac{4}{3}T_4-\frac{1}{3}T_2 S2=34T4−31T2
- C 1 = 16 15 S 2 − 1 15 S 1 C_1=\frac{16}{15}S_2-\frac{1}{15}S_1 C1=1516S2−151S1
- 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+8b−a[f(87a+b)+f(85a+3b)+f(85b+3a)+f(23b+a)]
- S 4 = 4 3 T 8 − 1 3 T 4 S_4=\frac{4}{3}T_8-\frac{1}{3}T4 S4=34T8−31T4
- C 2 = 16 15 S 4 − 1 15 S 2 C_2=\frac{16}{15}S_4-\frac{1}{15}S_2 C2=1516S4−151S2
- R 1 = 64 63 C 2 − 1 63 C 1 R_1=\frac{64}{63}C_2-\frac{1}{63}C_1 R1=6364C2−631C1
使用折半+外推法计算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+1−31Tk, C = 16 15 S k + 1 − 1 15 S k C=\frac{16}{15}S_{k+1}-\frac{1}{15}S_k C=1516Sk+1−151Sk, R = 64 63 C k + 1 − 1 63 C k R=\frac{64}{63}C_{k+1}-\frac{1}{63}C_{k} R=6364Ck+1−631Ck。
例题:使用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=28−2[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+28−2f(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=34T2−31T1=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+48−2[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=1516S2−151S1=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+88−2[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=34T8−31T4=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=1516S4−151S2=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=6364C2−631C1=0.6932
其他参考资料在此
总结
本章学习了如何利用迭代公式计算积分的近似值:
首先是使用数值积分矩形或梯形来代替原有积分曲线的方法,并用自变量 x x x的次数作为代数精度衡量近似的程度。
然后是利用插值多项式求和代替原积分曲线积分,其中点的取法用Newton-Cotes均匀选取。
最后为了计算迭代终点,采用变步长求积动态折半计算,不断逼近真实值,有基本的复化梯形公式和加快迭代收敛速度的Romberg公式,Romberg计算方法最复杂,需要迭代四次计算,但收敛速度快,计算量也没那么大,可以说是计算数值积分最先进的方法。
相关文章:
数值分析—数值积分
研究背景 积分的数学解法为牛顿莱布尼兹公式,数学表示为 ∫ a b f ( x ) d x F ( b ) − F ( a ) \int_{a}^{b} f(x)dxF(b)-F(a) ∫abf(x)dxF(b)−F(a),但应用该方法有如下困难: 1, f ( x ) f(x) f(x)的原函数有时不能用初等函…...
Next.js优化教程:优化字体加载
更多有关Next.js教程,请查阅: 【目录】Next.js 独立开发系列教程-CSDN博客 目录 更多有关Next.js教程,请查阅: 前言 1. 字体加载的常见问题 1.1 什么是 FOIT 和 FOUT? 1.2 字体优化的核心目标 2. Next.js 字体优…...
功能篇:springboot中全局异常
在Java应用程序中实现全局异常处理是确保应用健壮性和用户体验良好性的重要一步。通过全局异常处理,你可以集中管理所有未捕获的异常,并以统一的方式响应它们。对于Web应用程序(如使用Spring框架的应用),通常会创建一个…...
【go 】 select case 的用法
文章目录 1. 基本使用:监听多个通道,会阻塞2.带默认分支:非阻塞操作3. 永远监听多个通道4. 超时机制5. 关闭通道的处理6. context的关闭判断 相关文章: 【go】select 语句case的随机性 【go】 select case 超时机制(time.After)示…...
出海服务器可以用国内云防护吗
随着企业国际化进程的加速,越来越多的企业选择将业务部署到海外服务器上,以便更贴近国际市场。然而,海外服务器也面临着来自全球各地的安全威胁和网络攻击。当出海服务器遭受攻击时,是否可以借助国内的云服务器来进行有效的防护呢…...
前端权限控制
前端权限控制 一、路由权限(控制页面访问) vue // router.js const routes [{path: /dashboard,name: Dashboard,component: () > import(/views/Dashboard.vue),meta: { requiresAuth: true, roles: [admin, manager] }},{path: /user,name: Use…...
计算机组成原理(二):指令跳转
指令跳转(Instruction Jump)是计算机程序控制流的重要组成部分,通过改变程序的执行顺序实现循环、条件分支和函数调用等功能。 基本概念 跳转指令主要用来修改**程序计数器(Program Counter, PC)**的值,使…...
LoViT: 用于手术阶段识别的长视频Transformer|文献速递-生成式模型与transformer在医学影像中的应用
Title 题目 LoViT: Long Video Transformer for surgical phase recognition LoViT: 用于手术阶段识别的长视频Transformer 01 文献速递介绍 快速发展的手术数据科学(SDS)领域旨在通过先进利用手术室(OR)内医疗设备采集的数据…...
【传感器技术】第4章 力敏传感器,弹性敏感元件的基本特性,应变式压力传感器,电阻应变片的温度补偿,压阻式压力传感器,压电式压力传感器
关注作者了解更多 我的其他CSDN专栏 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处理 光电融合集成电路…...
linux之vim
一、模式转换命令 vim主要有三种模式:命令模式(Normal Mode)、输入模式(Insert Mode)和底线命令模式(Command-Line Mode)。 从命令模式切换到输入模式:i:在当前光标所在…...
【LeetCode】每日一题 2024_12_9 判断国际象棋棋盘中一个格子的颜色(找规律)
前言 每天和你一起刷 LeetCode 每日一题~ LeetCode 启动! 题目:判断国际象棋棋盘中一个格子的颜色 最近力扣一直在出棋盘类的题目,这个月已经出了 9 天了,我倒要看看他是不是真能出一个月 代码与解题思路 先读题:题…...
HCL虚拟环境搭建并且支持ssh远程访问
1.连接设备 新建设备和host主机,连线,host主机选择本地网卡(不选host-only网卡) 2.启动设备,打开终端,按ctrlc 3.执行命令 <H3C>system-view [H3C]int g0/0 [H3C-GigabitEthernet0/0]ip address …...
批量验证指定漏洞思路和流程
免责申明 本文仅是用于学习研究POC的地址收集与漏洞验证原理,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《中华人民共和国网络安全法》【学法时习之丨网络安全在身边一图了解网络安…...
首次打开韦东山提供的Ubuntu-18.04镜像后,该做哪些事?
目录 01-测试有无网络02-配置最基本的嵌入式开发环境(安装tftp-nfs等)03-缩短关机强制结束进行时间04-关闭软件的自动更新05-未完待续... 01-测试有无网络 ping www.baidu.com 02-配置最基本的嵌入式开发环境(安装tftp-nfs等) 需要安装 tftp,nfs,vim …...
怎么才能让图片不能转发截图保存
发私密图片给好友又担心被截图保存甚至转发给第三人?有没有办法让发出去的图片不能转发、截图、保存?当然有!今天教你一招,并且对方打开不需要下载任何软件,发出去对方点开就能看。 操作步骤 如何发送这样限制截图的图…...
设计模式-装饰器模式(结构型)与责任链模式(行为型)对比,以及链式设计
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1.装饰器模式1.1概念1.2作用1.3应用场景1.4特点1.5类与对象关系1.6实现 2责任链模式2.1概念2.2作用2.3应用场景2.4特点2.5类与对象关系2.6实现 3.对比总结 前言…...
outlook软件配置邮箱提示“到邮件服务器的加密连接不可用”
outlook软件配置邮箱提示“到邮件服务器的加密连接不可用” 问题描述: outlook软件里邮箱提示“已断开”或配置邮箱时提示“到邮件服务器的加密连接不可用”。 解决方案: 一、更改注册表(可先导出备份) winr,输入re…...
通过QT实现进度条随着读取文件增加
mythread循环给主线程发送信号实现主线程循环的功能 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QFile> #include <QFileDialog> #include <QTextStream> #include <QByteArray> #include "mythread.h"…...
构建高效可靠的分布式推理系统:深入解析控制器与模型服务的协同工作
在现代互联网应用中,随着用户需求的增长和技术的进步,单一服务器已经难以满足大规模并发请求的需求。为了提升系统的性能和可靠性,开发者们越来越多地采用分布式架构。本文将结合具体的代码示例,深入浅出地探讨如何构建一个高效的分布式推理系统,并详细解析其中的关键组件…...
洛谷B2082
数字统计 - 洛谷 数字统计 题目描述 请统计某个给定范围 [L,R] 的所有整数中,数字 2 出现的次数。 比如给定范围 [2,22],数字2 在数 2 中出现了 1 次,在数 12 中出现 1 次,在数 20中出现 1次,在数 21 中出现 1 次&…...
HTML5系列(14)-- 链接与资源关系指南
前端技术探索系列:HTML5 链接与资源关系指南 🔗 致读者:探索资源加载的艺术 👋 前端开发者们, 今天我们将深入探讨 HTML5 的链接与资源关系管理,学习如何优化网站的资源加载策略,提升用户体验…...
ubuntu系统每天凌晨定时上传redis 备份数据到阿里云OSS上
1.压缩备份脚本 1.1 代码如下#!/bin/bash# redis_backup_compress.sh # 设置变量 BACKUP_DIR"/data/redis/backup" REDIS_DIR"/var/lib/redis" DATE$(date %Y%m%d_%H%M%S) BACKUP_FILE"redis_backup_${DATE}.rdb" COMPRESSED_FILE"redis_b…...
uniapp结合movable-area与movable-view实现拖拽功能
前言 因为公司业务开发需要拖拽功能。 ps:该功能只能针对高度一致的,如果高度不一致需要另外二开 演示 开始 <template><view style"height: 100%;"><movable-area :style"{width: 100%, height: allHeight px}"…...
JavaScript 单例模式的创建与应用
JavaScript 单例模式的创建与应用 单例模式(Singleton Pattern)是一种设计模式,旨在确保一个类只有一个实例,并提供全局访问点。在 JavaScript 中,单例模式可以帮助我们避免多次创建同一个对象,节省资源&a…...
【HarmonyOS】 鸿蒙保存图片或视频到相册
【HarmonyOS】 鸿蒙保存图片或视频到相册 前言 鸿蒙中保存图片或者视频,或者其他媒体文件到设备的媒体库,可以是相册,也可以是文件管理等。共有两种方式: 需要应用申请受限权限,获取文件读写的权限(调用…...
windows下nacos启动报错:java.lang.unsatisfiedLinkError: C:\USers\乱码AppData\xxx.dll
问题 看了许多别的帖子,大家都是因为缺少dll包,下载安装 Microsoft Visual C 2015 Redistributable 就可以。但我试过了不行。思来想去,之前正常的时候用的JDK版本是17,后面别的项目用1.8给切换回来了。然后尝试配置环境变量将JD…...
梳理你的思路(从OOP到架构设计)_基本OOP知识01
目录 1、“-Oriented” 的涵意 2、 ” -Oriented”、” -Based”、” -Driven”、” -Centered” 它们之间区别 3、 从对象(Object) 谈起 4、类的用途: 叙述软件对象 Android从程序员到架构师之路:梳理你的思路(从OOP到架构设计) 1、“-Oriented” …...
【C++图论 BFS算法】2467. 树上最大得分和路径|2053
本文涉及知识点 C图论 CBFS算法 LeetCode2467. 树上最大得分和路径 一个 n 个节点的无向树,节点编号为 0 到 n - 1 ,树的根结点是 0 号节点。给你一个长度为 n - 1 的二维整数数组 edges ,其中 edges[i] [ai, bi] ,表示节点 a…...
Java的Mvc整合Swagger的knife4框架
Swagger的介绍 Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。使用Swagger,就是把相关的信息存储在它定义的描述文件里面(yml或json格式),再通过维护这个描述 文件可以去更…...
AI项目二十六:YOLOV11简单部署测试
若该文为原创文章,转载请注明原文出处。 一、YOLOv11介绍 继YOLOv 8、YOLOv 9和YOLOv10之后,发布的YOLOV11引入了几个突破性的增强功能,为目标检测和计算机视觉设定了新的基准。 增强的特征提取:YOLOv11使用改进的主干和颈部架构…...
19. Three.js案例-创建一个带有纹理映射的旋转平面
19. Three.js案例-创建一个带有纹理映射的旋转平面 实现效果 知识点 WebGLRenderer (WebGL渲染器) WebGLRenderer 是 Three.js 中用于渲染场景的主要类。它利用 WebGL 技术在浏览器中绘制 3D 图形。 构造器 new THREE.WebGLRenderer(parameters)参数类型描述parametersobj…...
【Makefile】编译日志之输出重定向符号 >
用法1 make all >& compilelog.txt make all > compilelog.txt这两个编译命令在功能上有一些细微的区别,主要在于标准输出和标准错误的处理方式。 make all >& compilelog.txt 这个命令会将标准输出(stdout)和标准错误&a…...
TDengine 新功能 复合主键
1. 简介 从 TDengine 3.3.0.0 版本之后,新增了复合主键的功能。 TDengine 原来的时间列是不允许有重复时间戳的,有了复合主键功能后,时间列即允许有重复,重复后的时间戳按紧跟其后第二列主键列的值来确定唯一性。 此功能的常用…...
【OpenHarmony】初识设备间互联互通的统一基础:分布式软总线
分布式软总线 前言软总线软总线代码目录软总线传输模块概述传输模块主要对外接口和使用方式 前言 很久没有写出一篇能够分享出来的学习心得了,零零散散地写了好多,总是不太满意。今年8月份开始正式投入精力去学习open harmony,记得第一次接触…...
yocto加软件包install 动态链接库报错
加入bb文件,编译通过 在install时报错 报错 ERROR: demo-1.0-r0 do_package_qa: QA Issue: -dev package agent-dev contains non-symlink .so ‘/usr/lib64/libdemo.so’ 解决 在bb文件install前加2行 SOLIBS ".so" FILES_SOLIBSDEV ""do_install …...
《数据结构》(408代码题)
2009 单链表(双指针) 分析:首先呢,给我们的数据结构是一个带有表头结点的单链表,也不允许我们改变链表的结构。链表的长度不是直接给出的啊,所以这个倒数也很棘手。那我们该如何解决这个“k”呢,…...
哈希表的完善及unordered_map/unordered_set封装
1.哈希表的完善 1.1 优化:哈希函数 在实际使用中,往往需要以字符串作为存储依据(键值),比如姓名与快递信息、商品名称与价格、中文单词与英文释义等。 而在上一篇文章中,我们实现的哈希表只考虑了整型的存储情况,即直…...
“物联·数据·产融·场景”聚力垂直数智场景下的新质生产力破局
人工智能、物联网(简称AIOT)正在深刻改变世界的经济格局,对各行各业产生深厚的影响。12月6日,由深圳市物联网协会、华夏银行深圳分行、深圳市区块链技术应用协会、深圳市康复辅助器具智能技术应用协会联合主办的第五届AIOT生态大会…...
API接口的性能测试与优化策略
在现代软件开发中,API(应用程序编程接口)扮演着至关重要的角色,它们作为不同服务之间的桥梁,确保数据的顺畅流通与交互。然而,随着用户需求的不断增长和系统复杂性的提升,API接口的性能问题日益…...
【Vue】Part4 接口调用
接口调用方式 原生ajax基于jQuery的ajaxfetchaxios 异步 JavaScript的执行环境是「单线程」所谓单线程,是指JS引擎中负责解释和执行JavaScript代码的线程只有一个,也就是一次只能完成一项任务,这个任务执行完后才能执行下一个,…...
管理系统前端框架开发案例学习
一、 需求分析 本案例的主要目标是开发一个智能学习辅助系统的前端界面,涵盖以下功能模块: 首页:显示系统的总体概览和关键功能介绍。 班级学员管理:实现班级管理和学员管理。 系统信息管理:管理部门和员工信息。 …...
协程设计原理与实现
协程设计原理与汇编实现 同步与异步 对于任何一个事情,都可以划分为不同的步骤。所谓同步,就先做第一个事情,按照这件事的步骤完成这件事之后,再去做第二件事。再去做第三件事,以此类推。 异步就是,可以…...
c++广播通讯的实现
概念大家都很清楚,不赘述。 广播必然用UDP这套东西。 setsockopt() 函数及其在广播中的应用: 在 C 网络编程中,setsockopt() 函数用于设置套接字选项,这些选项可以控制套接字的各种行为。对于广播通信,我们特别关心…...
Leetcode 3377. Digit Operations to Make Two Integers Equal
Leetcode 3377. Digit Operations to Make Two Integers Equal 1. 解题思路2. 代码实现 题目链接:3377. Digit Operations to Make Two Integers Equal 1. 解题思路 这一题的核心思路属于路径遍历问题,我们使用一个堆排来控制最优路径的选择。 我们首…...
高项 - 项目管理原则与项目绩效域
个人总结,仅供参考,欢迎加好友一起讨论 博文更新参考时间点:2024-12 高项 - 章节与知识点汇总:点击跳转 文章目录 高项 - 项目管理原则与项目绩效域项目管理12条原则原则1:成为勤勉、尊重和关心他人的管家 (p202)原则…...
【开源】A065—基于SpringBoot的库存管理系统的设计与实现
🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看项目链接获取⬇️,记得注明来意哦~🌹 赠送计算机毕业设计600个选题ex…...
LeetCode—189. 轮转数组(中等)
题目描述: 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例1: 输入: nums [1,2,3,4,5,6,7], k 3输出:[5,6,7,1,2,3,4] 解释: 向右轮转 1 步:[7,1,2,3,4,5,6] 向右轮转 2 步:[6,7,1,2,3,4,5] 向…...
fastadmin框架同时使用 阿里云oss和阿里云点播
背景 项目的实际需求中既要用到阿里云oss产品又用到阿里云点播系统,实现完美的统一。设置两个地址downUrl,thirdCode。分别代表阿里云oss上传路径和阿里云点播系统vId。 实现 默认框架你已经集成好阿里云oss集成工作,前端html页面实现 <…...
MySQL-DML之数据表操作
文章目录 一. 插入表记录1. 向表中插入部分字段2. 向表中插入所有字段,字段的顺序为创建表时的顺序3. 一次添加多条数据信息 二. 更新表记录1. 更新所有记录的指定字段 更新符号条件记录的指定字段2. 更新符号条件记录的指定字段 三. 删除表记录1. 按条件删除记录2. 清空记录 四…...
Android 逆向/反编译/Hook修改应用行为 基础实现
前言:本文通过一个简单的情景案例实现安卓逆向的基本操作 一、情景描述 本文通过一个简单的情景案例来实现安卓逆向的基本操作。在这个案例中所使用的项目程序是我自己的Demo程序,不会造成任何的财产侵害,本文仅作为日常记录及案例分享。实…...