资源描述:
《数值积分及MATLAB实现综述》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、数值积分及MATLAB实现综述各种求积公式的MATLAB编程实现与应用MATLAB是由MathWorks公式开发的一种主要用于数值计算及可视化图形处理的工程语言,是当今最优秀的科技应用软件之一。它将数值计算、矩阵运算、图形图像处理、信号处理和仿真等诸多强大的功能集成在较易使用的交互计算机环境中,为科学研究、工程应用提供了一种功能强、效率高的编程工具。下面我们将各种求积算法通过MATLAB软件编程实现,以下程序均用MATLAB7.0编写,运行坏境:1、硬件环境CPU(intelCorei3-2310M,2.1GHz),内存(2GB昱联),2、软件环境wi
2、ndows7(32位)操作系统。以下总共编写了六个算法程序,部分代码参考文献[10-13],为了体现程序的正确性,以下程序都以为例进行运算。原积分的精确值为牛顿-科特斯求积公式的MATLAB实现先用M文件定义一个名为f1.m的函数:%i是要调用第几个被积函数g(i),x是自变量functionf=f1(i,x)g(1)=sqrt(x);ifx==0g(2)=1;elseg(2)=sin(x)/x;endg(3)=4/(1+x^2);f=g(i);程序一:-9-function[C,g]=NCotes(a,b,n,m)%a,b分别为积分的上下限;%n是子
3、区间的个数;%m是调用上面第几个被积函数;%当n=1时计算梯形公式;当n=2时计算辛浦生公式,以此类推;i=n;h=(b-a)/i;z=0;forj=0:ix(j+1)=a+j*h;s=1;ifj==0s=s;elsefork=1:js=s*k;endendr=1;ifi-j==0r=r;elsefork=1:(i-j)r=r*k;endendifmod((i-j),2)==1q=-(i*s*r);elseq=i*s*r;endy=1;fork=0:iifk~=jy=y*(sym('t')-k);endendl=int(y,0,i);C(j+1)=l/
4、q;z=z+C(j+1)*f1(m,x(j+1));-9-endg=(b-a)*z1)当输入,时,即在MATLAB命令窗口输入>>NCotes(0,1,1,2)即可得用梯形公式的积分值和相应科特斯系数如图3.12)当输入,时,即在MATLAB命令窗口输入>>NCotes(0,1,2,2)即可得用辛浦生公式的积分值和相应科特斯系数如图3.23)当输入,时,即在MATLAB命令窗口输入>>NCotes(0,1,4,2)即可得用科特斯公式的积分值和相应科特斯系数如图3.3图3.1-9-图3.2图3.3复化求积公式的MATLAB实现一、复化梯形求积公式的MAT
5、LAB实现通过的个等步长节点逼近积分其中,,。-9-程序二:functions=trapr1(f,a,b,n)%f是被积函数;%a,b分别为积分的上下限;%n是子区间的个数;%s是梯形总面积;h=(b-a)/n;s=0;fork=1:(n-1)x=a+h*k;s=s+feval('f',x);endformatlongs=h*(feval('f',a)+feval('f',b))/2+h*s;先用M文件定义一个名为f.m的函数:functiony=f(x)ifx==0y=1;elsey=sin(x)/x;end在MATLAB命令窗口中输入>>trapr
6、1('f',0,1,4)回车得到如图3.4图3.4若取子区间的个数在MATLAB命令窗口中输入>>trapr1('f',0,1,8)-9-回车得到如图3.5图3.5龙贝格求积公式的MATLAB实现构造数表来逼近积分其中。表示数表的最后一行,最后一列的值。程序五:function[R,quad,err,h]=romber(f,a,b,n,delta)%f是被积函数%a,b分别是积分的上下限%n+1是T数表的列数%delta是允许误差%R是T数表%quad是所求积分值M=1;h=b-a;err=1J=0;R=zeros(4,4);R(1,1)=h*(fev
7、al('f',a)+feval('f',b))/2while((err>delta)&(J8、(J<4)J=J+1;h=h/2;s=0;-9-forp=1:Mx=a+h*(2*p-1);s=s+feval('f',x);endR(J+1,1)=R(J,1)/2+h*s;M=2*M;forK=1:JR(J+1,K+1)=R(J+1,K)+(R(J+1,K)-R(J,K))/(4^K-1);enderr=abs(R(J,J)-R(J+1,K+1));endquad=R(J+1,J+1)先用M文件定义一个名为f.m的函数:functiony=f(x)i
9、fx==0y=1;elsey=sin(x)/x;end在MATLAB命令窗口中输入>>romb