【复合五点高斯-勒让德公式】

首先先看五点高斯-勒让德公式,其求积系数和求积节点可以在数值积分的教材上查到,matlab代码如下

function I=Gauss_Legendre_5(fun,a,b)
w=[0.2369269,0.2369269,0.4786287,0.4786287,0.5688889];
x1=[-0.9061798,0.9061798,-0.5384693,0.5384693,0];
x=(b+a)/2+(b-a)/2.x1;
y=eval(fun)
I=(b-a)/2
sum(w.*y)

我们以计算积分
I = ∫ 0 1 x s i n π x d x   I = \int_0^1 xsinπxdx\, I=01xsinπxdx
来检查该公式的精度

I1=Gauss_Legendre_5(‘x.sin(pix)’,0,1)
res1=I1-1/pi

I1=

0.3183

res =

4.2508e-08

可以发现该公式的误差非常小

接下来我们看一下复合五点高斯-勒让德公式,在区间[a,b]上分为n个区间,在每个区间上分别使用五点高斯-勒让德公式,其matlab代码如下

function I=compound_Gauss_Legendre_5(fun,a,b,n)
x=linspace(a,b,n+1);
I=0
for i=1:n
I=I+Gauss_Legendre_5(fun,x(i),x(i+1))
end

同样计算一下刚刚那个定积分的值,这边将区间等分五份

I2=Gauss_Legendre_5(‘x.sin(pix)’,0,1,5)
res2=I2-1/pi

I2=

0.3183

res2 =

1.6243e-08

可以看到误差确实相对减少了不少

那我们把区间再细分会如何呢?
我们将区间等分五十等份

I3=compound_Gauss_Legendre_5(‘x.sin(pix)’,0,1,50)
res3=I3-1/pi

I3 =

0.3183

res3 =

1.5919e-08

可以看到,我们将区间从五等分细分到五十等份了,误差也只相对减少了一些。
而且,即便是刚刚的五等分所谓的误差相对减少了很多,绝对减少却很少,因为五点高斯-勒让德公式本来就很精确了(达到相同的精度,复合梯形公式至少要等分2500等份)~(所以老师为啥要我们用复合五点高斯-勒让德公式求啊喂)

你可能感兴趣的:(数值分析,数值分析,matlab)