1 / 14
文档名称:

数值积分matlab实现.doc

格式:doc   大小:362KB   页数:14页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数值积分matlab实现.doc

上传人:坐水行舟 2019/4/16 文件大小:362 KB

下载得到文件列表

数值积分matlab实现.doc

文档介绍

文档介绍:荿实验10数值积分薆薄实验目的:;;。螂实验内容:艿积分是数学中的一个基本概念,在实际问题中也有很广泛的应用。同微分一样,在《微积分》中,它也是通过极限定义的,由于实际问题中遇到的函数一般都以列表形式给出,所以常常不能用来直接进行积分。此外有些函数虽然有解析式,但其原函数不是初等函数,所以仍然得不到积分的精确值,如不定积分。这时我们一般考虑用数值方法计算其近似值,称为数值积分。,则其导数为袁()蚈如果函数以列表形式给出(见表10-1),则其精确值无法求得,但可由下式求得其近似值莆()蒇表10-1膃莂……肇芄……芁螁一般的,步长越小,所得结果越精确。()式右端项的分子称为函数在的差分,分母称为自变量在的差分,所以右端项又称为差商。数值微分即用差商近似代替微商。常用的差商公式为:袇()莅()蚄()芁其误差均为,称为统称三点公式。,其使用格式为:螂dx=diff(x)蚀其中x是维数组,dx为维数组,这样基于两点的数值导数可通过指令diff(x)/h实现。对于三点公式,。,,,的值由下表给出。::芃functionf=diff3(x,y)葿n=length(x);h=x(2)-x(1);衿f(1)=(-3*y(1)+4*y(2)-y(3))/(2*h);莇forj=2:n-1莁f(j)=(y(j+1)-y(j-1))/(2*h);膂end蕿f(n)=(y(n-2)-4*y(n-1)+3*y(n))/(2*h);膄在MATLAB指令窗中输入指令:螄x=[,,,,];y=[,,,,];diff3(x,y)蚁运行得各点的导数值为:-,-,-,-,-。,,-,--。艿对于高阶导数,MATLAB提供了几个指令借助于样条函数进行求导,详细使用步骤如下:膆step1:对给定数据点(x,y),利用指令pp=spline(x,y),获得三次样条函数数据pp,供后面ppval等指令使用。其中,pp是一个分段多项式所对应的行向量,它包含此多项式的阶数、段数、节点的横坐标值和各段多项式的系数。袂step2:对于上面所求的数据向量pp,利用指令[breaks,coefs,m,n]=unmkpp(pp)进行处理,生成几个有序的分段多项式pp。肁step3:对各个分段多项式pp的系数,利用函数ppval生成其相应导数分段多项式的系数,再利用指令mkpp生成相应的导数分段多项式螆step4:将待求点xx代入此导数多项式,即得样条导数值。:芄functiondy=ppd(pp)蒀[breaks,coefs,m]=unmkpp(pp);薆fori=1:m肄coefsm(i,:)=polyder(coefs(i,:));莃end衿dy=mkpp(breaks,coefsm);芆于是,如果已知节点处的值x,y,可用下面指令计算xx处的导数dyy:肆pp=spline(x,y),dy=ppd(pp);dyy=ppval(dy,xx);蒁例2基于正弦函数的数据点,利用三点公式和三次样条插值分别求导,并与解析所求得的导数进行比较。荿解::羇h=*pi;x=0:h:2*pi;y=sin(x);***dy1=diff3(x,y);袄pp=spline(x,y);dy=ppd(pp);dy2=ppval(dy,x);螈z=cos(x);螇error1=norm(dy1-z),error2=norm(dy2-z)羄plot(x,dy1,'k:',x,dy2,'r--',x,z,'b')羂运行得结果为:error1=,error2=,。、三次样条插值与解析求导比较图羆显然利用三次样条插值求导所得误差比三点公式求导小很多,,而三点公式在极值点附近和两个端点附近误