【数值分析】数值积分,复合中点,复合梯形,复合Simpson,matlab实现

数值积分与数值微分

2023年11月29日
#analysis



1. 求积公式与代数精度

求积公式的一般形式为:
∫ a b f ( x ) d x ≈ ∑ k = 0 n A k f ( x k ) \int_{ a }^{b} f(x)\mathrm dx \approx \sum_{k=0}^{ n} A_kf(x_k) abf(x)dxk=0nAkf(xk)
A k : 求积系数    ,    x k : 求积节点 A_k:求积系数 \,\,,\,\, x_k:求积节点 Ak:求积系数,xk:求积节点
如果求积公式对 f ( x ) = x j ( j = 0 , 1 , ⋯   , m ) {f(x)=x^j(j=0,1,\cdots ,m)} f(x)=xj(j=0,1,,m) 都精确成立,但对 f ( x ) = x m + 1 {f(x)=x^{m+1}} f(x)=xm+1 不能精确成立,即
∫ a b x j d x = ∑ k = 0 n A k x k j    ,    j = 0 , 1 , ⋯   , m ∫ a b x m + 1 d x ≠ ∑ k = 0 n A k x k m + 1 \begin{align*} \int_{ a }^{b} x^j \mathrm dx=& \sum_{k=0}^{ n} A_kx_k^j \,\,,\,\, j=0,1,\cdots ,m \\ \\ \int_{ a }^{b} x^{m+1} \mathrm dx \ne &\sum_{k=0}^{ n} A_kx_k^{m+1} \end{align*} abxjdx=abxm+1dx=k=0nAkxkj,j=0,1,,mk=0nAkxkm+1
则称求积公式具有 m {m} m代数精度

[!example]-
对于数值求积公式
∫ − 1 2 1 2 f ( x ) d x ≈ A 0 f ( x 0 ) + A 1 f ( x 1 ) \int_{ -\frac{1}{2} }^{\frac{1}{2}} f(x) \mathrm dx \approx A_0f(x_0)+A_1f(x_1) 2121f(x)dxA0f(x0)+A1f(x1)
A 1 = 1 / 4 {A_1=1/4} A1=1/4 x 1 = 3 / 8 {x_1=3/8} x1=3/8 时,请确定参数 A 0 {A_0} A0 x 0 {x_0} x0 使此公式的代数精度尽可能地高,并确定此时公式的代数精度。
解:此求积公式只有两个参数 A 0 {A_0} A0 x 0 {x_0} x0 。令公式对 f ( x ) = 1 {f(x)=1} f(x)=1 x {x} x 都精确成立。则有
{ A 0 + A 1 = 1 A 0 x 0 + A 1 x 1 = 0 \begin{cases} A_0+A_1=1 \\ \\ A_0x_0+A_1x_1=0 \end{cases} A0+A1=1A0x0+A1x1=0
代入 A 1 = 1 / 4 {A_1=1/4} A1=1/4 x 1 = 3 / 8 {x_1=3/8} x1=3/8
{ A 0 + 1 4 = 1 A 0 x 0 + 3 32 = 0 ⇒ { A 0 = 3 4 x 0 = − 1 8 \begin{cases} A_0+ \frac{1}{4}=1 \\ \\ A_0x_0+ \frac{3}{32}=0 \end{cases} \Rightarrow \begin{cases} A_0= \frac{3}{4} \\ \\ x_0=- \frac{1}{8} \end{cases} A0+41=1A0x0+323=0 A0=43x0=81
∫ − 1 2 1 2 f ( x ) d x ≈ 3 4 f ( − 1 8 ) + 1 4 f ( 3 8 ) \int_{ - \frac{1}{2} }^{\frac{1}{2}} f(x) \mathrm dx \approx \frac{3}{4}f(- \frac{1}{8})+ \frac{1}{4}f(\frac{3}{8}) 2121f(x)dx43f(81)+41f(83)
f ( x ) = x 2 {f(x)=x^2} f(x)=x2 时,由于
∫ − 1 2 1 2 f ( x ) d x = 1 12 ≠ 3 4 ( − 1 8 ) 2 + 1 4 ( 3 8 ) 2 = 3 64 \int_{ - \frac{1}{2} }^{\frac{1}{2}} f(x) \mathrm dx = \frac{1}{12} \ne \frac{3}{4}(- \frac{1}{8})^2+ \frac{1}{4} (\frac{3}{8})^2= \frac{3}{64} 2121f(x)dx=121=43(81)2+41(83)2=643
则此求积公式的代数精度为 m = 1 {m=1} m=1

  • 要求的参数有 n {n} n 个,则设 f ( x ) = 1 , x , ⋯ x n − 1 {f(x)=1,x,\cdots x^{n-1}} f(x)=1,x,xn1

2. 几个常用积分公式及其复合积分公式

复合公式的代数精度不变,计算精度提高,表现为误差估计减小
这些公式用于已知原函数时候的数值积分,复合公式是在划分区间之上应用梯形或Simpson公式。

2.1 中点公式

I = ∫ a b f ( x ) d x ≈ ( b − a ) f ( a + b 2 ) = I ′ I=\int_{ a }^{b} f(x) \mathrm dx \approx (b-a) f(\frac{a+b}{2})=I' I=abf(x)dx(ba)f(2a+b)=I
误差
I − I ′ = 1 24 ( b − a ) 3 f ′ ′ ( ξ )    ,    ξ ∈ [ a , b ] I-I'= \frac{1}{24}(b-a)^3f''(\xi) \,\,,\,\, \xi\in[a,b] II=241(ba)3f′′(ξ),ξ[a,b]
代数精度为 1 {1} 1

2.2 梯形公式

I = ∫ a b f ( x ) d x ≈ 1 2 ( b − a ) [ f ( a ) + f ( b ) ] = I ′ I=\int_{ a }^{b} f(x) \mathrm dx \approx \frac{1}{2} (b-a) [f(a)+f(b)]=I' I=abf(x)dx21(ba)[f(a)+f(b)]=I
误差
I − I ′ = − 1 12 ( b − a ) 3 f ′ ′ ( ξ )    ,    ξ ∈ [ a , b ] I-I'=- \frac{1}{12}(b-a)^3f''(\xi) \,\,,\,\, \xi\in[a,b] II=121(ba)3f′′(ξ),ξ[a,b]
代数精度为 1 {1} 1

2.3 抛物型公式/Simpson公式

I = ∫ a b f ( x ) d x ≈ 1 6 ( b − a ) [ f ( a ) + 4 f ( a + b 2 ) + f ( b ) ] = I ′ I=\int_{ a }^{b} f(x) \mathrm dx \approx \frac{1}{6} (b-a) [f(a)+4f(\frac{a+b}{2})+f(b)]=I' I=abf(x)dx61(ba)[f(a)+4f(2a+b)+f(b)]=I
误差
I − I ′ = − ( b − a ) 5 2880 f ( 4 ) ( ξ )    ,    ξ ∈ [ a , b ] I-I'=- \frac{(b-a)^5}{2880}f^{(4)}(\xi) \,\,,\,\, \xi\in[a,b] II=2880(ba)5f(4)(ξ),ξ[a,b]
代数精度为 3 {3} 3

2.4 复合中点公式

I = ∫ a b f ( x ) d x ≈ ∑ i = 0 n − 1 h f ( x i + 1 2 ) = I ′ I=\int_{ a }^{b} f(x) \mathrm dx \approx \sum_{i=0}^{ n-1} hf(x_{i+ \frac{1}{2}}) =I' I=abf(x)dxi=0n1hf(xi+21)=I
matlab实现

%% 复合中点公式
% 输入函数,积分下界,积分上界,区间数
% 输出积分值
function I = fmid(f, a, b, n)
    h = (b-a)/n; 
    x = linspace(a+h/2, b-h/2, n); % n个区间,n+1个边界点,n个中点;
    I = h*sum(feval(f, x));
end
2.5 复合梯形公式

I = ∫ a b f ( x ) d x ≈ ∑ i = 0 n − 1 h 2 [ f ( x i ) + f ( x i + 1 ) ] = I ′ I=\int_{ a }^{b} f(x) \mathrm dx \approx \sum_{i=0}^{ n-1} \frac{h}{2}[f(x_i)+f(x_{i+1})] =I' I=abf(x)dxi=0n12h[f(xi)+f(xi+1)]=I
误差估计
∣ I − I n ′ ∣ ≤ ( b − a ) 3 12 n 2 M 2    ,    记 M 2 = max ⁡ a ≤ x ≤ b ∣ f ′ ′ ( x ) ∣ |I-I'_n|\le \frac{(b-a)^3}{12n^2}M_2 \,\,,\,\, 记M_2=\max_{a\le x\le b}|f''(x)| IIn12n2(ba)3M2,M2=axbmaxf′′(x)
matlab实现

%% 梯形积分公式
% 输入函数,积分下界,积分上界,划分区间数
% 输出积分值
function I = ftrapz(f, a, b, n)
    h = (b-a)/n;
    x = linspace(a, b, n+1);
    y = f(x);
    I = h*(0.5*y(1)+ sum(y(2:n))+ 0.5*y(n+1));
end
2.6 复合Simpson公式

I = ∫ a b f ( x ) d x ≈ ∑ i = 0 n − 1 h 6 [ f ( x i ) + 4 f ( x i + 1 2 ) + f ( x i + 1 ) ] = I ′ I=\int_{ a }^{b} f(x) \mathrm dx \approx \sum_{i=0}^{ n-1} \frac{h}{6}[f(x_i)+ 4f(x_{i+ \frac{1}{2}}) +f(x_{i+1})] =I' I=abf(x)dxi=0n16h[f(xi)+4f(xi+21)+f(xi+1)]=I
误差估计
∣ I − I n ′ ∣ ≤ ( b − a ) 5 2880 n 4 M 4    ,    记 M 4 = max ⁡ a ≤ x ≤ b ∣ f ( 4 ) ( x ) ∣ |I-I'_n|\le \frac{(b-a)^5}{2880n^4}M_4 \,\,,\,\, 记M_4=\max_{a\le x\le b}|f^{(4)}(x)| IIn2880n4(ba)5M4,M4=axbmaxf(4)(x)
matlab实现

%% 复合Simpson积分公式
% 输入函数,积分下界,积分上界,划分区间数
% 输出积分值
function I = fsimpson(f, a, b, n)
    h = (b-a)/n;
    x_m = linspace(a+h/2, b-h/2, n); % 中点
    x_b = linspace(a,b,n+1); % 边界点
    I = h/6*(f(a)+4*sum(f(x_m))+2*sum(f(x_b(2:n)))+f(b));
end

[!example]-
已知 f ( x ) = ln ⁡ x {f(x)=\ln x} f(x)=lnx 的部分点处的函数值如下表:
x 1 2 3 4 5 ln ⁡ x 0 0.6931 1.0986 1.3863 1.6094 \begin{array}{cccccc} x & 1& 2 & 3&4&5 \\ \ln x & 0 & 0.6931 & 1.0986& 1.3863&1.6094 \end{array} xlnx1020.693131.098641.386351.6094
分别用复化梯形公式和复化Simpson公式求 ∫ 1 5 ln ⁡ x d x \int_{ 1 }^{5} \ln x \mathrm dx 15lnxdx的近似值,并估计误差。
解:
复化梯形:在区间 [ 1 , 5 ] {[1,5]} [1,5] 上取
x 0 = 1 , x 1 = 2 , x 2 = 3 , x 3 = 4 , x 4 = 5 x_0=1,x_1=2,x_2=3,x_3=4,x_4=5 x0=1,x1=2,x2=3,x3=4,x4=5
步长 h = 1 {h=1} h=1
∫ a b f ( x ) d x ≈ h 2 [ f ( a ) + 2 ∑ k = 1 n − 1 f ( x k ) + f ( b ) ] T 4 = 1 2 ( ln ⁡ 1 + 2 ln ⁡ 2 + 2 ln ⁡ 3 + 2 ln ⁡ 4 + ln ⁡ 5 ) = 3.9827 \begin{align*} \int_{ a }^{b} f(x) \mathrm dx \approx& \frac{h}{2}[f(a)+2 \sum_{k=1}^{ n-1}f(x_k)+f(b) ] \\ \\ T_4=& \frac{1}{2}(\ln1+2\ln2+2\ln3+2\ln4+\ln5) \\ \\ =&3.9827 \end{align*} abf(x)dxT4==2h[f(a)+2k=1n1f(xk)+f(b)]21(ln1+2ln2+2ln3+2ln4+ln5)3.9827
∣ I − T 4 ∣ ≤ ( b − a ) 3 12 n 2 M 2    ,    M 2 = max ⁡ 1 ≤ x ≤ 5 ∣ ln ⁡ ′ ′ x ∣ = max ⁡ 1 ≤ x ≤ 5 ∣ − 1 x 2 ∣ = 1 |I-T_4|\le \frac{(b-a)^3}{12n^2}M_2 \,\,,\,\, M_2=\max_{1\le x\le 5}|\ln''x|=\max_{1\le x\le 5}|- \frac{1}{x^2} |=1 IT412n2(ba)3M2,M2=1x5maxln′′x=1x5maxx21=1
∴ ∣ I − T 4 ∣ ≤ ( 5 − 1 ) 3 12 × 4 2 × 1 = 0.3333 \therefore |I-T_4|\le \frac{(5-1)^3}{12 \times 4^2} \times 1=0.3333 IT412×42(51)3×1=0.3333
复化辛普森:在区间 [ 1 , 5 ] {[1,5]} [1,5] 上取
x 0 = 1 , x 1 − 1 / 2 = 2 , x 1 = 3 , x 2 − 1 / 2 = 4 , x 2 = 5 x_0=1,x_{1-1/2}=2,x_1=3,x_{2-1/2}=4,x_2=5 x0=1,x11/2=2,x1=3,x21/2=4,x2=5
步长 h = 2 {h=2} h=2
∫ a b f ( x ) d x ≈ h 6 [ f ( a ) + 4 ∑ k = 1 n f ( x k − 1 / 2 ) + 2 ∑ k = 1 n − 1 f ( x k ) + f ( b ) ] S 2 = 2 6 ( ln ⁡ 1 + 4 ln ⁡ 2 + 2 ln ⁡ 3 + 4 ln ⁡ 4 + ln ⁡ 5 ) = 4.0414 \begin{align*} \int_{ a }^{b} f(x) \mathrm dx \approx &\frac{h}{6}[f(a)+4 \sum_{k=1}^{ n}f(x_{k-1/2})+2 \sum_{k=1}^{ n-1}f(x_k)+f(b)]\\ \\ S_2=& \frac{2}{6}(\ln1+4\ln2+2\ln3+4\ln4+\ln5) \\ \\ =& 4.0414 \end{align*} abf(x)dxS2==6h[f(a)+4k=1nf(xk1/2)+2k=1n1f(xk)+f(b)]62(ln1+4ln2+2ln3+4ln4+ln5)4.0414
∣ I − S 2 ∣ ≤ ( b − a ) 5 2880 n 4 M 4 |I-S_2|\le \frac{(b-a)^5}{2880n^4}M_4 IS22880n4(ba)5M4
M 4 = max ⁡ a ≤ x ≤ b ∣ f ( 4 ) ( x ) ∣ = max ⁡ 1 ≤ x ≤ 5 ∣ ln ⁡ ( 4 ) x ∣ = max ⁡ 1 ≤ x ≤ 5 ∣ − 6 x 4 ∣ = 6 M_4=\max_{a\le x\le b}|f^{(4)}(x)|=\max_{1\le x\le 5}|\ln^{(4)}x|=\max_{1\le x\le 5}|- \frac{6}{x^4}|=6 M4=axbmaxf(4)(x)=1x5maxln(4)x=1x5maxx46=6
∴ ∣ I − S 2 ∣ ≤ ( 5 − 1 ) 5 2880 × 2 4 × 6 = 0.1333 \therefore |I-S_2|\le \frac{(5-1)^5}{2880 \times 2^4} \times 6=0.1333 IS22880×24(51)5×6=0.1333

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值