复化求积法的思想:
将区间
[
a
,
b
]
[a,b]
[a,b]进行
n
n
n等分,步长
h
=
b
−
a
n
h=\frac{b-a}{n}
h=nb−a,等分点
x
k
=
a
+
k
h
,
k
=
0
,
1
,
2
,
⋯
,
n
x_{k}=a+kh,k=0,1,2,\cdots,n
xk=a+kh,k=0,1,2,⋯,n,
先在每个子区间
[
x
k
,
x
k
+
1
]
[x_k,x_{k+1}]
[xk,xk+1]上采用低阶的数值求积公式求得近似积分值
I
k
I_k
Ik,
再将它们累加并以和
∑
k
=
0
n
−
1
I
k
\sum_{k=0}^{n-1}I_k
∑k=0n−1Ik作为积分
I
=
∫
a
b
f
(
x
)
d
x
\mathrm{I}=\int_{\mathrm{a}}^{\mathrm{b}}\mathrm{f}(\mathrm{x})\mathrm{d}\mathrm{x}
I=∫abf(x)dx的近似值.
复化梯形求积公式
将积分区间
[
a
,
b
]
[a,b]
[a,b]进行
n
n
n等分,步长为
h
=
b
−
a
n
h=\frac{b-a}{n}
h=nb−a,节点
x
k
=
a
+
k
h
,
(
k
=
0
,
1
,
2
,
⋯
,
n
)
x_{k}=a+kh,(k=0,1,2,\cdots,n)
xk=a+kh,(k=0,1,2,⋯,n)
I
(
f
)
=
∫
a
b
f
(
x
)
d
x
=
∑
i
=
0
n
−
1
∫
x
i
x
i
+
1
f
(
x
)
d
x
I(f)=\int_a^bf(x)\mathrm{d}x=\sum_{i=0}^{n-1}\int_{x_i}^{x_{i+1}}f(x)\mathrm{d}x
I(f)=∫abf(x)dx=i=0∑n−1∫xixi+1f(x)dx
在
[
x
i
,
x
i
+
1
]
[x_i,x_{i+1}]
[xi,xi+1]上使用梯形公式
∫
x
i
x
i
+
1
f
(
x
)
d
x
=
h
2
[
f
(
x
i
)
+
f
(
x
i
+
1
)
]
−
f
′
′
(
ξ
i
)
h
3
12
≈
h
2
[
f
(
x
i
)
+
f
(
x
i
+
1
)
]
\int_{x_i}^{x_{i+1}}f(x)\mathrm{d}x=\frac{h}{2}[f(x_i)+f(x_{i+1})]-f''(\xi_i)\frac{h^3}{12}\approx\frac{h}{2}[f(x_i)+f(x_{i+1})]
∫xixi+1f(x)dx=2h[f(xi)+f(xi+1)]−f′′(ξi)12h3≈2h[f(xi)+f(xi+1)]
有
I
(
f
)
=
∑
i
=
0
n
−
1
{
h
2
[
f
(
x
i
)
+
f
(
x
i
+
1
)
]
−
f
′
′
(
ξ
i
)
h
3
12
}
≈
h
[
1
2
f
(
a
)
+
∑
i
=
1
n
−
1
f
(
x
i
)
+
1
2
f
(
b
)
]
I(f)=\sum_{i=0}^{n-1}\left\{\frac{h}{2}[f(x_{i})+f(x_{i+1})]-f^{\prime\prime}(\xi_{i})\frac{h^{3}}{12}\right\} \approx h\left[\frac{1}{2}f(a)+\sum_{i=1}^{n-1}f(x_{i})+\frac{1}{2}f(b)\right]
I(f)=i=0∑n−1{2h[f(xi)+f(xi+1)]−f′′(ξi)12h3}≈h[21f(a)+i=1∑n−1f(xi)+21f(b)]
得复化梯形公式
T
(
h
)
=
T
n
(
f
)
=
h
[
1
2
f
(
a
)
+
∑
i
=
1
n
−
1
f
(
x
i
)
+
1
2
f
(
b
)
]
≈
∫
a
b
f
(
x
)
d
x
T(h)=T_n(f)=h\left[\frac{1}{2}f(a)+\sum_{i=1}^{n-1}f(x_i)+\frac{1}{2}f(b)\right]\approx \int_a^bf(x)\mathrm{d}x
T(h)=Tn(f)=h[21f(a)+i=1∑n−1f(xi)+21f(b)]≈∫abf(x)dx
算法
♡
\heartsuit
♡ 复化梯形求积公式:T = comp_tra_integral(a,b,n,f)
-
输入
- [ a , b ] [a,b] [a,b]
- n n n:将 [ a , b ] [a,b] [a,b] n n n等分
- f f f:已经定义好的函数,支持向量运算
-
实现步骤
- 计算出 [ a , b ] [a,b] [a,b] n n n等分后得到的 n + 1 n+1 n+1个节点,构成向量 x 0 x_0 x0
- y 0 = f ( x 0 ) y_0 = f(x_0) y0=f(x0)
- 代入
∫ a b f ( x ) d x ≈ h [ 1 2 f ( a ) + ∑ i = 1 n − 1 f ( x i ) + 1 2 f ( b ) ] = T \int_a^bf(x)\mathrm{d}x\approx h\left[\frac{1}{2}f(a)+\sum_{i=1}^{n-1}f(x_i)+\frac{1}{2}f(b)\right] = T ∫abf(x)dx≈h[21f(a)+i=1∑n−1f(xi)+21f(b)]=T
-
输出
- T T T:通过复化梯形求积公式得到的积分近似值
北太天元源程序
function T = comp_tra_integral(a,b,n,f)
% [a,b]
% n :小区间的个数
% f:定义好的函数
%
% Version: 1.0
% last modified: 07/10/2023
h = (b-a)/n;
k = 0:1:n;
xi = a + k * h;
yi = f(xi);
sumy = sum(yi(2:1:n));
T = (yi(1)/2 + sumy + yi(n+1)/2)*h;
end
保存为 comp_tra_integral.m
文件
数值算例
用数值积分法近似计算
π
=
4
∫
0
1
1
1
+
x
2
d
x
\pi = 4\int_0^1 \frac{1}{1+x^2}\mathrm{d}x
π=4∫011+x21dx
编写复化梯形公式的实现程序,分别取剖分段数 $ n = 10, 20, 40, 80, 160, $ 计算积分值与
π
\pi
π 的误差并作图;
% 复化梯形求积例子
% last modified: 07/11/2023
% file need: comp_tra_integral.m
%%
clc;clear all;format long;
f = @(x) 4./(1+x.^2);
N = [10 20 40 80 160];
delta = zeros(1,5);
k = 1;
for n = N
T = comp_tra_integral(0,1,n,f);
delta(k) = abs(pi-T);
k++;
end
plot(N,delta,'b');
disp(delta);
运行后得到
可以发现,复化求积法下对积分的计算是非常稳定的,避开了Newton-Cotes 公式下随阶数升高带来的不稳定性。