数值积分用matlab实现Word文档格式.docx

上传人:b****4 文档编号:8263326 上传时间:2023-05-10 格式:DOCX 页数:18 大小:121.11KB
下载 相关 举报
数值积分用matlab实现Word文档格式.docx_第1页
第1页 / 共18页
数值积分用matlab实现Word文档格式.docx_第2页
第2页 / 共18页
数值积分用matlab实现Word文档格式.docx_第3页
第3页 / 共18页
数值积分用matlab实现Word文档格式.docx_第4页
第4页 / 共18页
数值积分用matlab实现Word文档格式.docx_第5页
第5页 / 共18页
数值积分用matlab实现Word文档格式.docx_第6页
第6页 / 共18页
数值积分用matlab实现Word文档格式.docx_第7页
第7页 / 共18页
数值积分用matlab实现Word文档格式.docx_第8页
第8页 / 共18页
数值积分用matlab实现Word文档格式.docx_第9页
第9页 / 共18页
数值积分用matlab实现Word文档格式.docx_第10页
第10页 / 共18页
数值积分用matlab实现Word文档格式.docx_第11页
第11页 / 共18页
数值积分用matlab实现Word文档格式.docx_第12页
第12页 / 共18页
数值积分用matlab实现Word文档格式.docx_第13页
第13页 / 共18页
数值积分用matlab实现Word文档格式.docx_第14页
第14页 / 共18页
数值积分用matlab实现Word文档格式.docx_第15页
第15页 / 共18页
数值积分用matlab实现Word文档格式.docx_第16页
第16页 / 共18页
数值积分用matlab实现Word文档格式.docx_第17页
第17页 / 共18页
数值积分用matlab实现Word文档格式.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数值积分用matlab实现Word文档格式.docx

《数值积分用matlab实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《数值积分用matlab实现Word文档格式.docx(18页珍藏版)》请在冰点文库上搜索。

数值积分用matlab实现Word文档格式.docx

1.2.3应用举例

通过简单举例,自建一个相对简单和复杂的函数,用上面编写的Matlab源程序来解决实际问题,体会数值积分和Matlab的优势.

2牛顿-柯特斯公式及Matlab实现

2.1牛顿-柯特斯公式的基本原理方法

设将积分区间[a,b]划分为n等分,步长为

,选取等距节点

构造出的差值型求积公式

,(2.1)

称为牛顿-柯特斯公式,式中

称为柯特斯系数.根据

(2.2)

引进变量代换

,则有

(2.3)

当n=2时,此时柯特斯系数为

,相应的求积公式就是辛普森求积公式:

(2.4)

2.2牛顿-柯特斯公式的Matlab实现

function[C,g]=NCotes(a,b,n,m)

%a,b分别为积分的上下限;

%n是子区间的个数;

%m是被调用第几个被积函数;

%当n=1时计算梯形公式;

当n=2时计算辛普森公式,以此类推;

I=n;

h=(b-a)/i;

z=0;

forj=0:

i

x(j+1)=a+j*h;

s=1;

ifj==0

s=s;

else

fork=1:

j

s=s*k;

end

end

r=1;

ifi-j==0

r=r;

else

fork=1:

(I-j)

r=r*k;

end

end

ifmod((I-j),2)==1

q=-(I*s*r);

else

q=i*s*r;

y=1;

fork=0:

ifk~=j

y=y*(sym('

t'

)-k);

l=int(y,0,i);

C(j+1)=l/q;

z=z+C(j+1)*f1(m,x(j+1));

g=(b-a)*z

3复合求积公式及Matlab实现

3.1复合梯形公式的基本原理

将区间[a,b]划分成n等分,分点

在每个子区间[

](

)上采用梯形公式得:

(3.1)

(3.2)

称式(3.2)为复合梯形公式.

3.2复合梯形公式的Matlab实现

functions=trapr1(f,a,b,n)

%f表示被积函数;

%a,b表示积分上下限;

h=(b-a)/n;

s=0;

(n-1)

x=a+h*k;

s=s+feval('

f'

x);

end

formatlong

s=h*(feval('

a)+feval('

b))/2+h*s;

3.3复合辛普森求积公式的基本原理

将区间[a,b]分等分,在每一个子区间

]上采用辛普森公式,若记

,则得

(3.3)

(3.4)

称式(3.4)为复合辛普森求积公式.

3.4复合辛普森求积公式的Matlab实现

functions=simpr1(f,a,b,n)

h=(b-a)/(2*n);

s1=0;

s2=0;

n

x=a+h*(2*k-1);

s1=s1+feval('

x=a+h*2*k;

s2=s2+feval('

s=h*(feval('

b)+4*s1+2*s2)/3;

4龙贝格求积公式及Matlab实现

4.1龙贝格算法的基本原理

由梯形的递推法可以看出,将积分区间等分时,用复化梯形公式计算的结果

作为积分

的近似值,其误差近似值为

(4.1)

可以设想,如果用这个误差作为

的一种补偿,即将

(4.2)

作为积分的近似值,可望提高其精确度.直接根据复化求积公式,不难验证

(4.3)

这说明,将区间对分前后两次复化梯形公式的值,按式

(4.4)

作线性组合恰好等于复合辛普森公式的值

,它比

更接近于近似值.同样,根据

(4.5)

作线性组合会得到比

更精确的值,且通过直接验证可得

(4.6)

再由

(4.7)

作线性组合,又可得到比

更精确的值,通常记为

,即

(4.8)

此式(4.8)就称为龙贝格求积公式.

上述用若干积分近似值推算出更为精确的积分近似值得方法,称为外推法.我们将

序列

分别称为梯形序列,辛普森序列,柯特斯序列和龙贝格序列.由龙贝格序列求积的算法称为龙贝格算法.具体步骤为:

第一步:

算出

的值,根据公式

(4.9)

求出

;

第二步:

将区间[a,b]分半,算出

的值,并根据(4.3)和(4.9)式计算

第三步:

再将区间分半,算出

,再有公式(4.4)求出

第四步:

再将区间分半,计算

并根据公式(4.5)计算

第五步:

再将区间分半,类似上述过程计算

重复以上步骤即可得到

一直到龙贝格序列中前后两项的绝对值差不超过给定的误差险为止.

4.2龙贝格算法的Matlab实现

function[R,quad,err,h]=romber(f,a,b,n,delta)

%n是子区间的个数

%delta是误差限

M=1;

h=b-a;

err=1

J=0;

R=zeros(4,4);

R(1,1)=h*(feval('

b))/2

while((err>

delta)&

(J<

n))|(J<

4)

J=J+1;

h=h/2;

s=0;

forp=1:

M

x=a+h*(2*p-1);

s=s+feval('

R(J+1,1)=R(J,1)/2+h*s;

M=2*M;

forK=1:

J

R(J+1,K+1)=R(J+1,K)+(R(J+1,K)-R(J,K))/(4^K-1);

err=abs(R(J,J)-R(J+1,K+1));

quad=R(J+1,J+1);

5高斯-勒让德求积公式及Matlab实现

5.1高斯-勒让德求积公式的基本原理

在高斯求积公式

(5.1)

中,若取权函数

=1,区间[-1,1],则得公式

(5.2)

我们知道勒让德多项式是区间[-1,1]上的正交多项式,因此,勒让德多项式

的零点就是求积公式(5.2)的高斯点,形如(5.1)式的高斯公式特别的称为高斯-勒让德求积公式.如下表5.1所示为高斯-勒让德求积公式的节点数和系数.

5.2高斯-勒让德求积公式的Matlab实现

functionquad=gauss8(f,a,b,x,A)

N=length(x);

T=zeros(1,N);

T=(a+b)/2+((b-a)/2)*x;

quad=((b-a)/2)*sum(A.*feval('

T));

表5.1高斯-勒让德求积公式的节点数和系数

n

0.0000000

2.0000000

3

0.8611363

0.3399810

0.3478548

0.6521452

1

0.5773503

1.0000000

4

0.9061978

0.5384693

0.2369269

0.4786287

0.5688889

2

0.7745967

0.5555556

0.8888889

5

0.9324695

0.6612094

0.2386192

0.1713245

0.3607616

0.4679139

6各个求积公式的应用举例与比较分析

6.1简单数值积分

的解(精确值0.946083070367183)

6.1.1牛顿-柯特斯当n=1时的梯形算法和n=2时的辛普森算法的结果

解:

先用M文件定义一个f1.m的函数

functionf=f1(i,x)

g

(1)=sqrt(x);

ifx==0

g

(2)=1;

else

g

(2)=sin(x)/x;

f=g(i);

输入>

>

Ncotes(0,1,1,2)

回车得到;

ans=

0.9270

Ncotes(0,1,2,2)

回车得到:

0.9461

6.1.2复合梯形公式和复合辛普森求积公式的计算结果

建立一个M文件定义一个f.m函数

functiony=f(x)

ifx==0

y=sin(x)/x

trapr1(‘f’,0,1,10)

0.9458

simpr1(‘f’,0,1,10)

0.9461

6.1.3龙贝格求积公式的计算结果(取误差不超过

romber(‘f’,0,1,10,0.5*10^(-10))

quad=

0.92070000

0.93980.9461000

0.94450.94610.946100

0.94570.94610.94610.94610

0.94600.94610.94610.94610.9461

6.1.4高斯-勒让德求积公式的计算结果(给定节点3)

functiony=f(x);

y=sin(x)/x;

输入

gauss8(‘f’,0,1,[-0.7745966692,0.7745966692,0],[0.5555555556,0.5555555556,0.8888888888])

0.8956

6.2复杂数值积分

的解(精确值-1.8785)

6.2.1牛顿-柯特斯当n=1时的梯形算法和n=2时的辛普森算法的结果

g

(2)=cos(x)–1/(1+x.^2)–1/(4.*sqrt(4+x.^2));

Ncotes(0,2*pi,1,2)

回车得到

-1.8692

Ncotes(0,2*pi,2,2)

-1.8704

6.2.2复合梯形公式和复合辛普森求积公式的计算结果

y=cos(x)–1/(1+x.^2)–1/(4.*sqrt(4+x.^2));

trapr1(‘f’,0,2*pi,10)

-1.8748

simpr1(‘f’,0,2*pi,10)

-1.8694

6.2.3龙贝格求积公式的计算结果(取误差不超过

romber(‘f’,0,2*pi,10,0.5*10^(-10))

-1.8764

6.3各个求积公式的比较分析(以

的各个积分结果为例)

表6.1各个数值积分的比较

积分方法

牛顿柯特斯(梯形)

牛顿-柯特斯(辛普森)

复合梯形

复合辛普森

龙贝格

高斯-勒让德

精确值

实际值

0.9270

0.9460

0.9458

0.8956

误差

0.189

0.0001

0.0003

0.0505

代数精度

10

牛顿-柯特斯方法是一种利用插值多项式来构造数值积分的常用方法,这其中梯形

积分方法的误差最大,近似效果最差,辛普森方法的精度比梯形积分高了一个数量级,它的代数精度比梯形积分的代数精度高,能更好地近似积分值;

牛顿-柯特斯积分方法的误差比辛普森积分精度高两个数量级.复合梯形积分方法比单独的梯形积分精度高,龙贝格方法收敛速度快、计算精度较高,但是计算量较大.高斯求积方法积分精度高、数值稳定、收敛速度较快,但是节点与系数的计算较麻烦,而且要求已知积分函数.

结论

本文主要讨论了数值积分的计算方法并通过MATLAB软件编程实现,通过前面的研究我们知道求数值积分近似值的计算方法很多,包括牛顿-柯特斯求积公式、复合求积公式、龙贝格求积公式、高斯求积公式等等.其中牛顿-柯特斯方法是一种利用插值多项式来构造数值积分的常用方法,这其中梯形积分方法的误差最大,近似效果最差,辛普森方法的精度比梯形积分高了一个数量级,它的代数精度比梯形积分的代数精度高,能更好地近似积分值;

牛顿-柯特斯积分方法的误差比辛普森积分精度高两个数量级.因此,一般情况下,代数精度越高,积分公式计算精度也越高.但是高阶的牛顿-柯特斯方法的收敛性没有保证,因此,在实际计算中很少使用高阶的牛顿-柯特斯公式.复合梯形积分方法比单独的梯形积分精度高,它的积分精度和被积函数有关,还和复合积分时的步长有关.复合辛普森积分公式比单独的辛普森积分公式高近7个数量级,效果明显.龙贝格方法收敛速度快、计算精度较高,但是计算量较大.高斯求积方法积分精度高、数值稳定、收敛速度较快,但是节点与系数的计算较麻烦、而且要求已知积分函数.一般来说,牛顿-柯特斯方法的代数精度越高,数值积分的效果越好、越精确.当积分区间比较大的时候,可以采用复化积分方法可以得到更好的效果;

变步长积分方法不仅可以很好地控制计算误差,并且可以寻找到适当的积分步长;

龙贝格积分方法可以更好地利用变步长复合积分公式得到的积分序列从而得到更为精确的数值结果,是一个较好的数值积分方法.高斯求积方法精确度高,收敛性快也是一种很优秀的数值积分方法.

参考文献

[1]张德丰.Matlab数值分析与应用[M].北京:

国防工业出版社,2007.1-1

[2]胡良剑,孙晓君.MATLAB数学实验[M]. 

北京:

高等教育出版社,2006

[3]李庆扬,王能超,易大义.数值分析[M].北京:

清华大学出版社,2008

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2