一个通用数值积分的matlab实现(带附录)(4)

2019-08-03 14:14

f =0.7854 n =8

3.3小结

通过调用实例可以看出,本文所编写的通用数值积分程序拥有处理矩形积分、梯形积分、辛普森积分、牛顿-柯茨积分及自适应积分的能力,依赖系统提供的两个永久变量nargin和nargout达到输入与输出接口的可变性,从而达到可输入多个变量和输出多个变量的功能。当然如果通过在该程序中添加更多的接口载入更多的程序模型,这个程序的功能将会更加强大。

12

第四章 结语

本文主要讨论了数值积分的计算方法并通过MATLAB软件编程实现,通过前面的研究我们知道求数值积分近似值的计算方法很多,包括Newton-Cotes求积公式、矩形求积公式、梯形求积公式、辛普森求积公式等等 。

其中Newton-Cotes方法是一种利用插值多项式来构造数值积分的常用方法,这其中矩形公式和梯形公式的计算误差比较大,但相对来说计算的步骤比较简单;而辛普森公式和柯茨公式的计算精度较高,但计算步骤会相对复杂。当我们通过matlab编写程序来实现这些公式的时候,我们可以利用matlab强大的计算功能,对这些公式进行复化。我们可以将区间细分,缩小步长,逐步逼近精确值。当然,等分区间越多,计算时间就会越长。这时我们就可以从程序的角度对源程序进行优化,使计算步骤尽量简单,这样也可以缩短计算时间。

通过对各种积分方法的运用实例进行分析,不难看出:虽然matlab的功能足够强大,但是各种积分方法的实现过程比较复杂,需要分别输入程序进行计算。我们通过对调用程序的研究发现,通过在主程序中添加接口,可以很方便的调用各个子程序,因此,我们可以将积分问题集中化处理,通过子程序的整合和主程序的调用,我们可以编写出适应所有积分问题的主程序,当然这需要进一步的研究,但是本文已经给出了很好的范例。相信通过不断地研究以及matlab强大的功能,日后肯定会实现。

13

参考文献

[1] 刘玉娟,陈应祖.龙贝格积分法及其应用编程[J].重庆科技学院学报,2007,9(1):97-99.

[2] 朱叶志.MATLAB数值分析与应用[M].北京:机械工业出版社,2009. [3] Li F,Li X.The neighbor-scattering number can be computed in polynomial time for interval graphs[J].Computers and Mathematics with Applications,2007,54:679-686.

[4] 朱晓临.数值分析[M].合肥:中国科学技术大学出版社,2010.7.

[5] 杨旭龙.无穷积分的计算及Matlab的实现[C].吉昌学院本科毕业论文,2013.5.

[6] 刘小伟.基于MATLAB的复合梯形数值积分法的研究与实验[J].甘肃联合大学学报(自然科学版),2010,24(4):20-23.

[7] 余丹.用Simpson公式进行数值积分[J].华北电力大学数理系学报,2010,(23):189-190.

[8] Davis,P.J.and P.Rahinowitz.Methods of Numerical integration(second edition)[M]. Academic Press. New York,1984.

[9] 曹丽华.一类广义Gauss型求积公式[J].深圳大学数学物理学报,2007,27(3):524-534.

[10] 郭晓斌.复化两点Gauss-Legendre公式及其误差分析[J].西北师范大学学报,2010,4(3):49-51.

[11] 王建强.多种数值积分方法比较分析[J].武汉大学测绘轩辕学报,2010,2(1):104-106.

14

附 录

主程序

%-------------------------------------------------------------- % 本程序是将数值积分的常用算法集成在一起,命名为 % tyszjf.m以供调用

% 这些常用算法包括左矩形、右矩形、中矩形、梯形、辛普森、 % 牛顿柯特斯、采用自适应变步长的辛普森算法达到指定误差。 % 其中输入与输出接口中参数是可变化的,这主要依赖系统提供 % 的两个永久变量nargin和nargout

% 虚参f由实参传递过来,可采用内联函数的方式,如下例: % tyszjf(inline('1/(1+x*x)'),0,1,100,'sps') % [val,n]=tyszjf(inline('1/(1+x*x)'),0,1,100,'sps') % [val]=tyszjf(inline('1/(1+x*x)'),0,1,100,'sps') %

%-------------------------------------------------------------- function [out1,out2]=tyszjf(f,a,b,n,sf,wc) if nargin==3 n=100; sf='sps'; wc=0.5*10^(-6); end if nargin==4 sf='sps'; wc=0.5*10^(-6); end if nargin==5 wc=0.5*10^(-6); end

15

switch sf case 'zjx'

x=linspace(a,b,n+1)'; %n等分点记入数组中

h=(b-a)/n;

djf=0; %累加器清零

for i=1:1:n

djf=djf+h*f(x(i)); end

if nargout==0 out1=djf; end

if nargout==1 out1=djf; end

if nargout==2 out1=djf; out2=n; end case 'yjx'

x=linspace(a,b,n+1)'; %n等分点记入数组中

h=(b-a)/n;

djf=0; %累加器清零

for i=2:1:n+1

djf=djf+h*f(x(i)); end

if nargout==0 out1=djf; end

if nargout==1 out1=djf;

16


一个通用数值积分的matlab实现(带附录)(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:PLC期末复习题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: