数值分析实验二 数值积分1

  • 格式:doc
  • 大小:164.50 KB
  • 文档页数:6

1 数值分析实验二 数值积分

组号 班级 学号 姓名 分数

一:实验目的

1、掌握用复化Simpson公式,复化梯形求积公式计算积分的方法。

2、掌握用龙贝格Romberg积分公式计算积分的方法。

3、掌握用高斯-勒让德Gauss-Legendre公式计算积分法。

4、通过实例了解三种方法的联系与区别,并会利用适当的方法计算某函数在某个区间的积分值。

二:实验内容及基本知识介绍

(1)复化Simpson求积公式的原理:

将区间[a,b]分为n等分,在每个子区间[1,kkxx]上采用辛普森公式:462baabsfaffb,若记122kkxhx,则得:

1101110246kknbxaxknkkknkIfxdxfxdxhfxfxfxRf。则可以记得:1010211012124646nknkkknkkkknbfxfxfafhxfxfxfhS

,称为复化辛普森求积公式。其余项为:

41410,,1802nnnkkkkkhhRfISfxx,此外,由于nS中求积系数均为正数,故知复化辛普森公式计算稳定。

(2)复化梯形求积公式的原理:

将区间[a,b]分为n等分,分点,,2,1,0,,nknabhkhaxk在每个子区间1,,1,0,1nkxxkk上采用梯形公式bfafabT2计算,则得:

fRxfxfhdxxfdxxfInnkkknkxxbakk1011021,记:

`11101222nkknkkknbfxfafhxfxfhT,称为复化梯形公式。其余项为:bafhabfRn,,''122。 2 (3)龙贝格求积公式的原理;

根据复化梯形公式的余项表达式可知:;,,''122bafhabTIn与;,,''21222bafhabTIn假定,''''ff则有:412nnTITI ,将上式移项整理,可得: nnnTTTI2231,表明当nT2与nT相当接近时,可以保证nT2近似I时误差很小。由此可得到复化辛普森公式nnnTTS31342,误差阶由42hOhO,由其余项公式有:444180fabhhOSIn,44421802161fabhhOSIn,可得到:1612nnSISI,即得:nnnSSSI22151,有:nnSSI15115162(记为nC为复化柯特斯公式),误差阶由64hOhO,再由复化柯特斯余项公式有:66649452fhabhOCIn,666662421945221fhabhOCIn,从而由以上两式可得到:6221nnCICI,得到龙贝格积分公式:nnnRCCI264631,误差阶:86hOhO

(4)高斯-勒让德Gauss-Legendre求积公式原理:

在高斯求积公式0nbkkakfxxdxAfx中,若取权函数1x,区间为1,1,则得公式:110nkkkfxdxAfx,我们又知道勒让德多项式是区间1,1上的正交多项式,因此,勒让德多项式1nPx的零点就是求积公式110nkkkfxdxAfx的高斯点。则把形如此公式的高斯公式特别地称为高斯-勒让德Gauss-Legendre求积公式。

三:实验问题及方法、步骤

1.利用等式 120141dxx 计算圆周率。要求误差小于810。 3 (1)用复化Simpson求积公式计算;

(2)用龙贝格方法计算;

(3)推导复化三点高斯-勒让德Gauss-Legendre求积公式,并进行圆周率的计算。

编程如下:

function [p1,p2,p3]=ex51

a=0;

b=1;

m=2;

t(1)=0.5*(b-a)*(f(a)+f(b));

t(2)=0.5*t(1)+0.5*(b-a)*f((b+a)/2);

s(1)=(4*t(2)-t(1))/3;

j =2;

while abs(t(j)-t(j-1))>(0.5e-8/4),

h=(b-a)/m;

k=0:(m-1);

j=j+1;

t(j)=0.5*t(j-1)+0.5*h*sum(f(a+(k+1/2)*h));

s(j-1)=(4*t(j)-t(j-1))/3;

c(j-2)=(16*s(j-1)-s(j-2))/15;

if j>3,

r(j-3)=(64*c(j-2)-c(j-3))/63;

end

m=m*2;

end

p1=4*s(end);

p2=4*r(end);

w=[5 8 5]/9;

x=[-sqrt(15) 0 sqrt(15)]/5;

n=5;

p3=0;

for j=0:n-1,

g=(j+0.5)/n + 0.5/n * x;

p3=p3+f(g)*w’/(2*n);

end

p3=p3*4;

function v=f(x)

v=1./(1+x.^2);

其中,辛普森积分和龙贝格积分返回p1和p2,高斯积分返回值为p3。运行结果如下:

P1= 3.14159265358979

P2= 3.14159265358979

P3= 3.14159265168714

复化三点高斯公式推导如下:设,iiwz是高斯积分的系数和节点,在三点高斯公式中, 4 585,,999iw和1515,0,99iz。对于一般的积分区间[a,b],令22abtxba,有:

1102222nbiiaibaabbaabfxdxftdtwfz

因此,若区间[a,b]上有m个等分节点,ibaxaihhm,则:11100022iimmnbxjjiaxiijhhfxdxfxdxwfzx。

2.用复化梯形公式与龙贝格积分公式求积分:dxxxI10sin得近似值。

(1)复化梯形公式编程如下:

function y=f(x)

if x==0

y=1;

else

y=sin(x)/x;

end

以上为创建的函数文件名f.m。

a=input('请输入积分下限a=');

b=input('请输入积分上限b=');

eps=input('请输入误差限eps=');

h=b-a;

T1=h*(f(a)+f(b))/2;

when 1

u=h/2;

H=0;

x=a+u;

while x

H=H+f(x);

x=x+h;

end

T2=(T1+h*h)/2;

if abs(T2-T1)

I=T2+(T2-T1)/3;

break

end

h=u;

T1=T2;

end

fprintf('定积分近似值I=%10.8f \n',I) 5 运行结果如下:

请输入积分下限:a=0

请输入积分上限:b=1

请输入积分误差限:eps=10^(-8)

定积分近似值为:I=0.94608307

(2)龙贝格积分公式编程如下:

function y=f(x)

if x==0

y=1;

else

y=sin(x)/x;

end

以上为创建的函数文件名f.m。

format long

a= input('请输入积分下限a=');

b=input('请输入积分上限b=');

eps=input('请输入误差限eps=');

err=1;

k=0;

h=b-a;

T(1,1)=h*(f(a)+f(b))/2

while (err>=eps)

k=k+1;

u=h/2;

H=0;

x=a+u;

while x

H=H+f(x);

x=x+h;

end

T(k+1,1)=(T(k,1)+h*H)/2;

for m=2:k+1

T(k+1,m)=(4^(m-1)*T(k+1,m-1)-T(k,m-1))/(4^(m-1)-1);

end

err=abs(T(k+1,k+1)-t(k,k));

h=u;

end

fprintf(‘定积分I的近似值为I=%10.7f\n’,T(k+1,k+1))

运行结果如下:

请输入积分下限:a=0

请输入积分上限:b=1

请输入积分误差限:eps=10^(-7)

T =

6 0.920735492403948 0 0 0

0.939793284806177 0.946145882273587 0 0

0.944513521665390 0.946086933951794 0.946083004063674 0

0.945690863582701 0.946083310888472 0.946083069350917 0.946083070387223

定积分近似值为:I=0.9460831

四:计算结果分析

对于数值积分实验,可以用上边几个积分公式计算其积分值,通过对求积节点做适当限制或选择,可以简化问题的复杂性与提高代数性能,代数精度等。在给定一组数据后,当n很大时,使用一般的插值型求积公式,有时计算结果是不稳定的,会出现龙格现象等,或是计算结果的精度较低,与准确值误差较大。例如在上面例一当中所得到的计算结果:

P1= 3.14159265358979,P2= 3.14159265358979,P3= 3.14159265168714,可知使用复化辛普森公式和龙贝格公式,所得到的积分结果相同,而使用高斯三点勒让德积分公式结果很不同,误差较大,计算精度降低,而高斯三点勒让德积分公式中节点个数也较多,计算起来也较复杂;在例二当中使用复化梯形公式的结果中有效数字少于龙贝格公式计算结果,这个结果的每一位数字都是有效数字,可见加速的效果是十分显著的。所以对于不同的函数积分,要选取适当的积分公式来计算积分值。