当前位置:文档之家› 数值积分算法与MATLAB实现陈悦5133201讲解

数值积分算法与MATLAB实现陈悦5133201讲解

数值积分算法与MATLAB实现陈悦5133201讲解
数值积分算法与MATLAB实现陈悦5133201讲解

东北大学秦皇岛分校

数值计算课程设计报告

数值积分算法及MATLAB实现

学院数学与统计学院

专业信息与计算科学

学号5133201

姓名陈悦

指导教师姜玉山张建波

成绩

教师评语:

指导教师签字:

2015年07月14日

1 绪论

数值分析是计算数学的一个主要部分,计算数学是数学科学的一个分支,它研究用计算机求解各种数学问题的数值检索方其理论与软件的实现.而数值分析主要研究数值计算.

现科学技术的发展与进步提出了越来越多的复杂的数值计算问题,这些问题的圆满解决已远人工手算所能胜任,必须依靠电子计算机快速准确的数据处理能力.这种用计算机处理数值问题的方法,成为科学计算.今天,科学计算的应用范围非常广泛,天气预报、工程设计、流体计算、经济规划和预测以及国防尖端的一些科研项目,如核武器的研制、导弹和火箭的发射等,始终是科学计算最为活跃的领域.

1.1 数值积分介绍

数值积分是数值分析的重要环节,实际问题当中常常需要计算积分,有些数值方法,如微分方程和积分方程的求解,也都和积分计算相联系.

求某函数的定积分时,在多数情况下,被积函数的原函数很难用初等函数表达出来,因此能够借助微积分学的牛顿-莱布尼兹公式计算定积分的机会是不多的.另外,许多实际问题中的被积函数往往是列表函数或其他形式的非连续函数,对这类函数的定积分,也不能用不定积分方法求解.由于以上原因,数值积分的理论与方法一直是计算数学研究的基本课题.对微积分学做出杰出贡献的数学大师,如I.牛顿、L.欧拉、C.F.高斯、拉格朗日等人都在数值积分这个领域作出了各自的贡献,并奠定了这个分支的理论基础.

构造数值积分公式最通常的方法是用积分区间上的n 次插值多项式代替被积函数,由此导出的求积公式称为插值型求积公式.特别在节点分布等距的情形称为牛顿-科特斯公式,例如梯形公式(Trapezoidal Approximations)与抛物线公式(Approximations Using Parabolas)就是最基本的近似公式.但它们的精度较差.龙贝格算法是在区间逐次分半过程中,对梯形公式的近似值进行加权平均获得准确程度较高的积分近似值的一种方法,它具有公式简练、计算结果准确、使用方便、稳定性好等优点,因此在等距情形宜采用龙贝格求积公式(Rhomberg Integration).当用不等距节点进行计算时,常用高斯型求积公式计算,它在节点数目相同情况下,准确程度较高,稳定性好,而且还可以计算无穷积分.数值积分还是微分方程数值解法的重要依据.许多重要公式都可以用数值积分方程导出.现探讨数值积分算法以及运用MATLAB软件的具体实现

1.2 MATLAB 软件

MATLAB 是美国MathWorks 公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB 和Simulink 两大部分.

MATLAB 是matrix&laboratory 两个词的组合,意为矩阵工厂(矩阵实验室).是由美国mathworks 公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境.它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C 、Fortran )的编辑模式,代表了当今国际科学计算软件的先进水平.

MATLAB 和Mathematica 、Maple 并称为三大数学软件.它在数学类科技应用软件中在数值计算方面首屈一指.MATLAB 可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域.

MATLAB 的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB 来解算问题要比用C ,FORTRAN 等语言完成相同的事情简捷得多,并且MATLAB 也吸收了像Maple 等软件的优点,使MATLAB 成为一个强大的数学软件.在新的版本中也加入了对C ,FORTRAN ,C++,JAVA 的支持.

2 数值积分的基本概念

一般的,我们可以在区间[],a b 上适当选取某些节点k x ,然后用()k f x 的加权平均

得到平均高度()f ?的近似值,这样构造出的求积公式具有下列形式:

()()0

d n

a

k

k

b

k f x x A f x =≈∑?,式中k x 称为求积节点;k A 称为求积系数,亦称伴随节点k

x 的

权.权k A 仅仅与节点k x 的选取有关,而不依赖于被积函数()f x 的具体形式. 2.1 代数精度的概念

如果某个求积公式对于次数不超过m 的多项式均能准确的成立,但对于1m +次多项式就不准确成立,则称该求积公式具有m 次代数精度(或代数精确值)

一般地,欲使求积公式具有m 次代数精度,只要令它对于()1,,,m f x x x =都能准

确成立,这就要求:

()()22+1+1=-,1=-,

21=-.+1k k k m

m m k k A b a A x b a A x b a m ??

???????

∑∑

2.2 求积公式的余项

令求积公式的余项为[]R f ,其中[]()()b

a

=d n

k k k R f f x x A f x =-∑?.;区间[],a b 可以是

有限的或无限的.构造求积公式的问题就是确定j x 和j A 使得[]R f 在某种意义下尽可能地小.

3 数值积分方法及MATLAB 实现

3.1 复合辛普森公式 3.1.1 插值型求积公式

用插值多项式()n L x 替换积分()*d b

a I f x x =?中的被积函数()f x ,然后计算

()d b

n a

I L x x =?作为积分的近似值,这样建立的求积公式称为插值型求积公式.用插值多

项式()n L x 的表达式()()0

()n n k k k L x l x f x ==∑,代入得()0

n

k k k I A f x ==∑,其中:

011011()()()()

d ()()()()

b

k k n k a

k k k k k k n x x x x x x x x A x x x x x x x x x -+-+----=----?

.

其余项为:[]()(1)*

()

d (1)!

n b

a

f R f I I x x n ξω+=-=+?

.

3.1.2 牛顿-科特斯公式介绍

取等距节点,把积分区间[],a b 剖分成n 等分.令步长()b a h n

-=,

并记0

,n x

a x

b ==,

则1n +个节点为0,0,1,k x x kh k n =+=,代入得:

k A =0(1)(1)(1)(1)

()d ()!!

n k n

h t t t k t k t n t n k k ----+----?.

这种等距节点的插值型求积公式通常称为牛顿-科特斯公式. 3.1.3 辛普森公式

利用牛顿-科特斯公式,取n =2,此时为()4()()62b a a b S f a f f b -+??

=++????

,即为辛普森公式,其余项为[]5(4)

1()()902

s b a R f f η-=-. 3.1.4 复合辛普森公式

将积分区间[],a b 分成n 等分,分点为(0,1,,)k x a kh k n =+=,其中()

b a h n

-=

,记区间[]1,k k x x +的中点为12

k x +

,在每个小区间[]1,k k x x +上用辛普森公式,则得到所谓的复合

辛普森公式:

()()1

110246n n k k k k h S f x f

x f x -++=?

???

=++?? ??????

?

∑.

()()()11

1102246n n n k k k k h S f a f b f x f x --+==?

???=+++?? ??????

?

∑∑. 余项为[]()4(4)

()1802

n b a h R S f ξ-=-

,(,)a b ξ∈. 3.1.5 复合辛普森公式的MATLAB 实现 代码如下:

function s=xinpusen(fun,a,b,n) h=(b-a)/n s1=0;s2=0; for k=0:(n-1) x=a+h*k;

s1=s1+feval(fun,x); end for k=0:(n-1) x=a+h*(k+1/2); s2=s2+feval(fun,x);

end

s=h/6*(feval(fun,a)+feval(fun,b)+2*s1+4*s2); 3.2 龙贝格公式 3.2.1 梯形法的递推化

将区间[],a b 分成n 等份,共有1n +个分点,如果将求积区间再二分一次,则分点增

至21n +个,用复合梯形公式求得该子区间上的积分值为()1122()4k k k h f x f

x f x ++?

???

++?? ??????

?

将每个子区间上的积分值相加得

2n T =()11

11002

()()42n n k k k k k h h f x f x f x --++==++????∑∑. 得到递推公式:12102122n n n k k h T T f x -+=?

?=+ ???∑.

3.2.2 龙贝格算法公式

当()f x 在[],a b 上充分光滑时, 可证用1()T h 逼近I 的截断误差是:

1()I T h -=21a h 42a h +2k k a h +

++

按理查森外推法:

()1()F h F h =,1()()

(),(1,2,)1m

p

m m m m p F qh q F h F h m q +-=

=- 其中,q 为满足10(1,2,)m p q m -≠=的适当正数 .取序列:

()()

()142,1,2,41m m n m m h T T h T h m +??

- ???==-. 用()1m T h +来逼近I 的误差为()()

21

m O h +,这种算法就是龙贝格算法.

3.2.3 龙贝格算法MATLAB 实现 代码如下:

function s=longbeige(fun,a,b,tol) if nargin<4,tol=1e-4;end i=1;j=1;h=b-a;

T(1,1)=h*(feval(fun,a)+feval(fun,b))/2;

T(i+1,j)=T(I,j)/2+sum(feval(fun,a+h/2:h:b-h/2))*h/2; T(i+1,j+1)=(4^j*T(i+1,j)-T(i.j))/(4^j-1); while (abs(T(i+1,i+1)-T(I,i))>tol) i=i+1;h=h/2;

T(i+1,1)=T(I,1)/2+sum(feval(fun,a+h/2:h:b-h/2))*h/2; for j=1:i

T(i+1,j+1)=(4^j*T(i+1,j)-T(I,j))/(4^j-1); end end T

s=T(i+1,j+1); 3.3 自适应法

自适应积分法是一种比较经济而且快速的求积分的方法.他能自动地在被积函数变化剧烈的区域增多节点,而在被积函数变化平缓的地方减少节点.因此它是一种不均匀区间的积分方法.按照子区间上的积分方式它可以分为自适应辛普森积分法和自适应梯形积分法.通常是采用自适应辛普森积分法作为子区间的积分方式. 自适应积分法的基本步骤如下:

(1) 将积分区间[],a b 分成两个相等的1级子区间1,2a a h ??+????和1,2a h a h ??

++????,且

h b a =-;

(2) 在上述两个1级子区间上用辛普森积分得到积分(){}1_,^12I a a h ?

?+???

?和

(){}1_,^12I a h a h ??

++????

;

(3) 将子区间1,2a a h ?

?+????分成两个相等的2级子区间2

1,2a a h ??+????和

2

11,22a h a h ??++?

??

?; (4) (){}(){}(){}22

1111_,^2_,^1_,^12222I a a h I a a h I a h a h ?????????

?+=++++????????????????

;

(5) 比较(){}1_,^22I a a h ??+????和(){}1_,^12I a a h ??+????, 如果|(){}1_,^12I a a h ?

?+????

- (){}1_,^22I a a h ?

?+???

?|<110**2epsi ,其中epsi 为整体积分所需要的精度,则认为子区

间1,2a a h ??+????上的积分(){}1_,^12I a a h ?

?+????已达到所需精度,不需要再细分;否则就需要

再细分,对每个2级子区间做同样的判断1级子区间1,2a h a h ??

++????

的操作过程完全与上

面相同. 3.4 高斯法

对已知求积公式可以讨论它的代数精度,反之也可以按照代数精度要求导出求积公式.对于求积公式,当求积节点k x (0,1,,k n =)固定时,公式有1n +个待定参数,故

此时可要求满足对1,,,n x x “准确”这样1n +个约束条件,从而使之至少具有n 次代数

精度.

进一步,可考虑将k x ()0,1,

,k n =也视为待定参数,

这样公式的待定参数就有22n +个,从而可望公式的代数精度达到21n +.此类高精度的求积公式称为高斯型公式,而对应的节点k x ()0,1,

,k n =称为区间[],a b 上的高斯点.

3.4.1 高斯法的MATLAB 实现 代码如下:

function g=gaosi(fname,a,b,n,m) switch m case 1 t=0;A=1; case 2

t=[-1/sqrt(3),1/sqrt(3)];A=[1,1]; case 3

t=[-sqrt(0.6),0.0,sqrt(0.6)];A=[5/9,8/9,5/9]; case 4

t=[-0.8612136,-0.339981,0.339981,0.861136]; A=[0.347855,0.652145,0.652145,0.347855]; case 5

t=[-0.906180,-0.538469,0.0,0.538469,0.906180]; A=[0.236927,0.478629,0.568889,0.478629,0.236927]; case 6

t=[-0.932470,-0.661209,-0.238619,0.238619,0.661209,0.932470];

A=[0.171325,0.360762,0.467914,0.467914,0.360762,0.171325]; otherwise error end

x=linspace(a,b,n+1); g=0; for i=1:n

g=g+gsint(fname,x(i),x(i+1),A,t); end

function g=gsint(fname,a,b,A,t)

g=(b-a)/2*sum(A.*feval(fname,(b-a)/2*t+(a+b)/2)); 3.5 多重积分法

考虑二重积分(,)d R

f x y A ??,它是曲面(,)z f x y =与平面区域R 围成的体积,对于矩

形区域{}(,),R x y a x b c y d =≤≤≤≤.

可将它写成累次积分(,)((,)d )d b

d

a

c R

f x y dx f x y y x =????若用复合辛普森公式,可分别

将[,],[,]a b c d 分成N ,M 等份,步长,b a d c

h k N M

--==,先对积分(,)d d c f x y y ?应用复合

辛普森公式,令i y c ik =+,1

2

1

()2

i y

c i k +

=++.

11

01012(,)d (,)4(,)2(,)(,)6M M d

i M c

i i i k f x y y f x y f x y f x y f x y --+==?

?=+++????

∑∑?

.

从而得:

1101012(,)d d (,)4(,)2(,)(,)d 6M M b

d

b

b b b i M a

c

a a a a i i i k f x y y x f x y f x y f x y f x y x --+==??=+++????

∑∑??

????.

4 数值积分方法比较

例:用数值积分方法计算方程1

2

04

d 1I x x =+?的值. 4.1 复合辛普森公式求解 >> fun=inline('4./(1+x.^2)'); >> xinpusen(fun,0,1,10)

ans =

3.274925986303118

4.2 龙贝格算法求解

longbeige(inline('4./(1+x.^2)'),0,1,1e-6)

T =

3.0000

3.1000 3.1333

3.1312 3.1416 3.1421

3.1390 3.1416 3.1416 3.1416

3.1409 3.1416 3.1416 3.1416 3.1416

3.1414 3.1416 3.1416 3.1416 3.1416 3.1416

ans =

3.141592653638244

4.3 高斯算法求解

>> gaosi(inline('4./(1+x.^2)'),0,1,2,3)

ans =

3.141591222382834

>> gaosi(inline('4./(1+x.^2)'),0,1,4,4)

ans =

3.141595611558735

4.4 三种方法比较分析

结果显示每一个算法都接近真实值,但龙贝格算法相比较复合辛普森算法,高斯算法来说更加接近.对于代数精度来说,复合辛普森的代数精度为11,龙贝格代数精度为11,高斯代数精度为11.可见代数精度相同时,龙贝格的求积精度最小,所以相同条件下龙贝格求积公式最能接近准确值.

总结

随着数学实验的兴起,对整个数学课程教学改革起到了积极的推动作用,我们要熟悉的运用各种数学软件,解决数学运算中繁琐的问题,实现学习的简单,快捷化.同时意识到用MATLAB编程时,要实现代码的层次性,做到有规有矩,那样才能把MATLAB 运用自如.

这次课程设计,用MATLAB实验对数值积分进行了实现,简介了5种不同的数值积分的方法,并且实现了其中的3中方法,实现过程中发现了各种方法之间的区别和联系.并且在实验过程中,使自己对数值积分和MATLAB更加的熟悉.做到了学习和实践相联系.

参考文献

[1]戈慈水.《数值分析》课程数值积分的MatLab实现问题的教学研究[M].时代教育出

版社,2011.7

[2]张志涌.精通MATLAB6.5版[M].北京航天航空大学出版社,2003.3.

[3]陈杰,孙晓君.MATLAB数学实验[M].高等教育出版社,2006.6.

[4]朱叶志.MATLAB数值分析与应用[M].北京:机械工业出版社,2009.

[5]王正林.精通MATLAB科学计算[M].北京:电子工业出版社,2007.

[6]萧树铁.大学数学实验[M].北京:高等教育出版社,1997.

数值积分算法与MATLAB实现陈悦5133201讲解

东北大学秦皇岛分校 数值计算课程设计报告 数值积分算法及MATLAB实现 学院数学与统计学院 专业信息与计算科学 学号5133201 姓名陈悦 指导教师姜玉山张建波 成绩 教师评语: 指导教师签字: 2015年07月14日

1 绪论 数值分析是计算数学的一个主要部分,计算数学是数学科学的一个分支,它研究用计算机求解各种数学问题的数值检索方其理论与软件的实现.而数值分析主要研究数值计算. 现科学技术的发展与进步提出了越来越多的复杂的数值计算问题,这些问题的圆满解决已远人工手算所能胜任,必须依靠电子计算机快速准确的数据处理能力.这种用计算机处理数值问题的方法,成为科学计算.今天,科学计算的应用范围非常广泛,天气预报、工程设计、流体计算、经济规划和预测以及国防尖端的一些科研项目,如核武器的研制、导弹和火箭的发射等,始终是科学计算最为活跃的领域. 1.1 数值积分介绍 数值积分是数值分析的重要环节,实际问题当中常常需要计算积分,有些数值方法,如微分方程和积分方程的求解,也都和积分计算相联系. 求某函数的定积分时,在多数情况下,被积函数的原函数很难用初等函数表达出来,因此能够借助微积分学的牛顿-莱布尼兹公式计算定积分的机会是不多的.另外,许多实际问题中的被积函数往往是列表函数或其他形式的非连续函数,对这类函数的定积分,也不能用不定积分方法求解.由于以上原因,数值积分的理论与方法一直是计算数学研究的基本课题.对微积分学做出杰出贡献的数学大师,如I.牛顿、L.欧拉、C.F.高斯、拉格朗日等人都在数值积分这个领域作出了各自的贡献,并奠定了这个分支的理论基础. 构造数值积分公式最通常的方法是用积分区间上的n 次插值多项式代替被积函数,由此导出的求积公式称为插值型求积公式.特别在节点分布等距的情形称为牛顿-科特斯公式,例如梯形公式(Trapezoidal Approximations)与抛物线公式(Approximations Using Parabolas)就是最基本的近似公式.但它们的精度较差.龙贝格算法是在区间逐次分半过程中,对梯形公式的近似值进行加权平均获得准确程度较高的积分近似值的一种方法,它具有公式简练、计算结果准确、使用方便、稳定性好等优点,因此在等距情形宜采用龙贝格求积公式(Rhomberg Integration).当用不等距节点进行计算时,常用高斯型求积公式计算,它在节点数目相同情况下,准确程度较高,稳定性好,而且还可以计算无穷积分.数值积分还是微分方程数值解法的重要依据.许多重要公式都可以用数值积分方程导出.现探讨数值积分算法以及运用MATLAB软件的具体实现

【数学建模学习】Matlab的数值积分

Matlab 的数值积分问题 (1)求和命令sum 调用格式. 如果x 是向量,则sum(x) 给出x 的各个元素的累加和;如果x 是矩阵,则sum(x)是一个元素为x 的每列列和的行向量. 例3.1 调用命令sum 求向量x 的各个元素的累加和。 解:输入 x=[1,2,3,4,5,6,7,8,9,10]; sum(x) 得到 ans=55 例3.2 调用命令sum 求矩阵x 的各列元素的累加和。 解:输入 x=[1,2,3;4,5,6;7,8,9] x= 1 2 3 4 5 6 7 8 9 sum(x) 得到 ans=12 15 18 2.定积分的概念. 定积分是一个积分和的极限. 例如取x e x f =)(,求定积分?10dx e x 的近似值。 积分区间为[0,1],等距划分为20个子区间, x=linspace(0,1,21); 选取每个子区间的端点,并计算端点处的函数值. y=exp(x); 取区间的左端点处的函数值乘以区间长度全部加起来. y1=y(1:20); s1=sum(y1)/20 s1=1.6757 s1可作为定积分?10dx e x 的近似值。 若选取右端点: y2=y(2:21); s2=sum(y2)/20 s2=1.7616 s2也可以作为定积分?10dx e x 的近似值。 下面我们画出图象. plot(x,y);hold on for i=1:20 fill([x(i),x(i+1),x(i+1),x(i),x(i)],[0,0,y(i),y(i),0],'b')

end 如果选取右端点,则可画出图象. for i=1:20 fill([x(i),x(i+1),x(i+1),x(i),x(i)],[0,0,y(i+1),y(i+1),0],'b') hold on end plot(x,y,'r') 在上边的语句中,for … end 是循环语句,执行语句体内的命令20次,fill 命令可以填充多边形,在本例中,用的是兰色(blue)填充. 可试取50个子区间看一看结果怎样.下面按等分区间计算。 syms k n s=symsum(exp(k/n)/n,k,1,n); limit(s,n,inf) 得结果 ans=exp(1)-1 3.计算定积分 例3.6 计算?10dx e x . 解:输入命令: syms x; int(exp(x),0,1) 得结果 ans=exp(1)-1. 这与我们上面的运算结果是一致的. ⒈ 由给定数据进行梯形求积 假设已经建立起向量T N T N y y y y x x x x ],,,[,],,,[2121 ==,则可用以下语句进行梯形求积: sum((2*y(1:end-1,:)+diff(y)).*diff(x))/2 MATLAB 提供的trapz()函数也可直接用梯形法求解积分问题,该函数调用格式为 S=trapz(x,y) [例1-6-17] 试用梯形法求出),0(π∈x 区间内,函数sin(x),cos(x),sin(x/2)的定积分值。 [求解] >> x1=[0:pi/30:pi]'; y=[sin(x1) cos(x1) sin(x1/2)]; x=[x1 x1 x1]; S=sum((2*y(1:end-1,:)+diff(y)).*diff(x))/2 >> S1=trapz(x1,y) [例1-6-18] 用定步长方法求解积分?2 /30)15cos(πdx x 。 [求解] 鉴于求解区域内被积函数有很强的振荡,可先用下述语句绘制被积函数的曲线。 >> x=[0:0.01:3*pi/2,3*pi/2]; y=cos(15*x); plot(x,y) 采用不同的步距,可分别得到积分近似结果。 >> syms x, A=int(cos(15*x),0,3*pi/2) % 求理论值 >> h0=[0.1,0.01,0.001,0.0001,0.00001,0.000001]; v=[]

数值积分的matlab实现

实验10 数值积分 实验目的: 1.了解数值积分的基本原理; 2.熟练掌握数值积分的MATLAB 实现; 3.会用数值积分方法解决一些实际问题。 实验内容: 积分是数学中的一个基本概念,在实际问题中也有很广泛的应用。同微分一样,在《微积分》中,它也是通过极限定义的,由于实际问题中遇到的函数一般都以列表形式给出,所以常常不能用来直接进行积分。此外有些函数虽然有解析式,但其原函数不是初等函数,所以仍然得不到积分的精确值,如不定积分?1 0 d sin x x x 。这时我们一般考虑用数值方法计算其 近似值,称为数值积分。 10.1 数值微分简介 设函数()y f x =在* x 可导,则其导数为 h x f h x f x f h ) ()(lim )(**0* -+='→ (10.1) 如果函数()y f x =以列表形式给出(见表10-1),则其精确值无法求得,但可由下式求得其近似值 h x f h x f x f ) ()()(*** -+≈' (10.2) 表 10-1 一般的,步长h 越小,所得结果越精确。(10.2)式右端项的分子称为函数()y f x =在 *x 的差分,分母称为自变量在*x 的差分,所以右端项又称为差商。数值微分即用差商近似 代替微商。常用的差商公式为: 000()() ()2f x h f x h f x h +--'≈ (10.3) h y y y x f 243)(2 100-+-≈ ' (10.4)

h y y y x f n n n n 234)(12+-≈ '-- (10.5) 其误差均为2 ()O h ,称为统称三点公式。 10.2 数值微分的MATLAB 实现 MATLAB 提供了一个指令求解一阶向前差分,其使用格式为: dx=diff(x) 其中x 是n 维数组,dx 为1n -维数组[]21321,, ,n x x x x x x ---,这样基于两点的数值导 数可通过指令diff(x)/h 实现。对于三点公式,读者可参考例1的M 函数文件diff3.m 。 例1 用三点公式计算()y f x =在=x 1.0,1.2,1.4处的导数值,()f x 的值由下表给 解:建立三点公式的M 函数文件diff3.m 如下: function f=diff3(x,y) n=length(x);h=x(2)-x(1); f(1)=(-3*y(1)+4*y(2)-y(3))/(2*h); for j=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=[1.0,1.1,1.2,1.3,1.4];y=[0.2500,0.2268,0.2066,0.1890,0.1736];diff3(x,y) 运行得各点的导数值为:-0.2470,-0.2170,-0.1890,-0.1650,-0.0014。所以()y f x =在=x 1.0,1.2,1.4处的导数值分别为-0.2470,-0.1890和-0.0014。 对于高阶导数,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 代入此导数多项式,即得样条导数值。 上述过程可建立M 函数文件ppd.m 实现如下: function dy=ppd(pp) [breaks,coefs,m]=unmkpp(pp);

matlab实现数值分析插值及积分

Matlab实现数值分析插值及积分 摘要: 数值分析(numerical analysis)是研究分析用计算机求解数学计算问题的数值计算方法及其理论的学科,是数学的一个分支,它以数字计算机求解数学问题的理论和方法为研究对象。在实际生产实践中,常常将实际问题转化为数学模型来解决,这个过程就是数学建模。学习数值分析这门课程可以让我们学到很多的数学建模方法。 分别运用matlab数学软件编程来解决插值问题和数值积分问题。题目中的要计算差值和积分,对于问题一,可以分别利用朗格朗日插值公式,牛顿插值公式,埃特金逐次线性插值公式来进行编程求解,具体matlab代码见正文。编程求解出来的结果为:=+。 其中Aitken插值计算的结果图如下: 对于问题二,可以分别利用复化梯形公式,复化的辛卜生公式,复化的柯特斯公式编写程序来进行求解,具体matlab代码见正文。编程求解出来的结果为: 0.6932 其中复化梯形公式计算的结果图如下:

问题重述 问题一:已知列表函数 表格 1 分别用拉格朗日,牛顿,埃特金插值方法计算。 问题二:用复化的梯形公式,复化的辛卜生公式,复化的柯特斯公式计算积分,使精度小于5。 问题解决 问题一:插值方法 对于问题一,用三种差值方法:拉格朗日,牛顿,埃特金差值方法来解决。 一、拉格朗日插值法: 拉格朗日插值多项式如下: 首先构造1+n 个插值节点n x x x ,,,10 上的n 插值基函数,对任一点i x 所对应的插值基函数 )(x l i ,由于在所有),,1,1,,1,0(n i i j x j +-=取零值,因此)(x l i 有因子 )())(()(110n i i x x x x x x x x ----+- 。又因)(x l i 是一个次数不超过n 的多项式,所以只 可能相差一个常数因子,固)(x l i 可表示成: )())(()()(110n i i i x x x x x x x x A x l ----=+- 利用1)(=i i x l 得:

数值积分用matlab实现

数值积分用m a t l a b实 现

东北大学秦皇岛分校 数值计算课程设计报告 数值积分及Matlab实现 学院数学与统计学院 专业信息与计算科学 学号5133117 姓名楚文玉 指导教师张建波姜玉山 成绩 教师评语: 指导教师签字: 2015年07月14日

1 绪论 在科研计算中,经常会碰到一些很难用公式定理直接求出精确解的积分问题,对于这类问题,我们一般转化为数值积分问题,用计算机来实现求解问题. 1.1 课题的背景 对于定积分()b a f x dx ?在求某函数的定积分时,在一定条件下,虽然有牛顿-莱布里 茨公式()()()b a I f x dx F b F a ==-?可以计算定积分的值,但在很多情况下的原函数() f x 不易求出或非常复杂.被积函数的原函数很难用初等函数表达出来,例如 2 sin (),x x f x e x -= 等;有的函数()f x 的原函数()F x 存在,但其表达式太复杂,计算量太大,有的甚至无法有解析表达式.因此能够借助牛顿-莱布尼兹公式计算定积分的情形是不多的.另外,许多实际问题中的被积函数()f x 往往是列表函数或其他形式的非连续函数,对这类函数的定积分,也不能用不定积分方法求解,只能设法求其近似值.因此,探讨近似计算的数值积分方法是有明显的实际意义的,即有必要研究定积分的数值计算方法,以解决定积分的近似计算.而数值积分就是解决此类问题的一种有效的方法,它的特点是利用被积函数在一些节点上的信息求出定积分的近似值.微积分的发明是人类科学史上一项伟大的成就,在科学技术中,积分是经常遇到的一个重要计算环节数值积分是数学上重要的课题之一,是数值分析中重要的内容之一.随着计算机的出现,近几十年来,对于数值积分问题的研究已经成为一个很活跃的研究领域.现在,数值积分在计算机图形学,积分方程,工程计算,金融数学等应用科学领域都有着相当重要的应用,所以研究数值积分问题有着很重要的意义.国内外众多学者在数值积分应用领域也提出了许多新方法.在很多实际应用中,只能知道积分函数在某些特定点的取值,比如天气测量中的气温、湿度、气压等,医学测量中的血压、浓度等等.通过这个课题的研究,我们将会更好地掌握运用数值积分算法求出特殊积分函数的定积分的一些基本方法、理论基础;并且通过Matlab 软件编程的实现,应用于实际生活中. 1.2 课题的主要内容框架

数值积分的算法比较及其MATLAB实现

编号: 审定成绩: 重庆邮电大学 毕业设计(论文) 设计(论文)题目:数值积分算法与MATLAB实现 学院名称:数理学院 学生姓名: 专业:数学与应用数学 班级: 学号: 指导教师: 答辩组负责人: 填表时间:年月 重庆邮电大学教务处制

摘要 在求一些函数的定积分时,由于原函数十分复杂难以求出或用初等函数表达,导致积分很难精确求出,只能设法求其近似值,因此能够直接借助牛顿-莱布尼兹公式计算定积分的情形是不多的。数值积分就是解决此类问题的一种行之有效的方法。积分的数值计算是数值分析的一个重要分支;因此,探讨近似计算的数值积分方法是有着明显的实际意义的。本文从数值积分问题的产生出发,详细介绍了一些数值积分的重要方法。 本文较详细地介绍了牛顿-科特斯求积公式,以及为了提高积分计算精度的高精度数值积分公式,即龙贝格求积公式和高斯-勒让德求积公式。除了研究这些数值积分算法的理论外,本文还将这些数值积分算法在计算机上通过MATLAB软件编程实现,并通过实例用各种求积公式进行运算,分析比较了各种求积公式的计算误差。 【关键词】数值积分牛顿-科特斯求积公式高精度求积公式MATLAB软件

ABSTRACT When the solution of the definite integral of some function values,because the original function is very complex and difficult to find the elementary function expression, the integral is difficult to accurately calculate, only managed to find the approximate value, and the case is small that allows to direct interface with the Newton - Leibniz formula to calculate the definite integral. Numerical integration is an effective method to solve such problems. The numerical integration is an important branch of numerical analysis; therefore, exploring the approximate calculation of the numerical integration method has obvious practical significance. This article departure from the numerical integration problem, described in detail some important numerical integration methods. This paper has introduced detail the Newton - Coates quadrature formula, and in order to improve the calculation accuracy of numerical integration formulas, More precise formulas have Romberg quadrature formulas and the Gauss - Legendre quadrature formula. In addition to the study of these numerical integration algorithm theory, the article also involve what these numerical integration algorithm be programmed by matlab software on the computer, and an example is calculated with a variety of quadrature formulas, finally analysis and comparison to various quadrature formulas calculation error. 【Key words】Numerical integration Newton-Cotes quadrature formula High-precision quadrature formula Matlab software

matlab求定积分之实例说明

一、符号积分 符号积分由函数int来实现。该函数的一般调用格式为: int(s):没有指定积分变量和积分阶数时,系统按findsym函数指示的默认变量对被积函数或符号表达式s求不定积分; int(s,v):以v为自变量,对被积函数或符号表达式s求不定积分; int(s,v,a,b):求定积分运算。a,b分别表示定积分的下限和上限。该函数求被积函数在区间[a,b]上的定积分。a和b可以是两个具体的数,也可以是一个符号表达式,还可以是无穷(inf)。当函数f关于变量x在闭区间[a,b]上可积时,函数返回一个定积分结果。当a,b中有一个是inf时,函数返回一个广义积分。当a,b中有一个符号表达式时,函数返回一个符号函数。 例: 求函数x^2+y^2+z^2的三重积分。内积分上下限都是函数,对z积分下限是sqrt(x*y),积分上限是x^2*y;对y积分下限是sqrt(x),积分上限是x^2;对x的积分下限1,上限是2,求解如下: >>syms x y z %定义符号变量 >>F2=int(int(int(x^2+y^2+z^2,z,sqrt(x*y),x^2*y),y,sqrt(x),x^2),x,1,2) %注意定积分的书写格式 NORMINV(probability,mean,standard_dev) Probability 正态分布的概率值。 Mean 分布的算术平均值。 Standard_dev 分布的标准偏差。 F2 = 1610027357/6563700-6072064/348075*2^(1/2)+14912/4641*2^(1/4)+64/225*2^(3/4) %给出有理数解 >>VF2=vpa(F2) %给出默认精度的数值解 VF2 = 224.92153573331143159790710032805 二、数值积分 1.数值积分基本原理 求解定积分的数值方法多种多样,如简单的梯形法、辛普生(Simpson)?法、牛顿-柯特斯(Newton-Cotes)法等都是经常采用的方法。它们的基本思想都是将整个积分区间[a,b]分成n个子区间[xi,xi+1],i=1,2,…,n,其中x1=a,xn+1=b。这样求定积分问题就分解为求和问题。 2.数值积分的实现方法 基于变步长辛普生法,MATLAB给出了quad函数来求定积分。该函数的调用格式为: [I,n]=quad('fname',a,b,tol,trace) 基于变步长、牛顿-柯特斯(Newton-Cotes)法,MATLAB给出了quadl函数来求定积分。该函数的调用格式为: [I,n]=quadl('fname',a,b,tol,trace) 其中fname是被积函数名。a和b分别是定积分的下限和上限。tol用来控制积

数值积分算法与MATLAB实现

数值积分算法与MATLAB实现 本文从网络收集而来,上传到平台为了帮到更多的人,如果您需要使用本文档,请点击下载按钮下载本文档(有偿下载),另外祝您生活愉快,工作顺利,万事如意! 摘要:在求一些函数的定积分时,由于原函数十分复杂难以求出或用初等函数表达,导致积分很难精确求出,只能设法求其近似值,因此能够直接借助牛顿-莱布尼兹公式计算定积分的情形是不多的。数值积分就是解决此类问题的一种行之有效的方法。积分的数值计算是数值分析的一个重要分支;因此,探讨近似计算的数值积分方法是有着明显的实际意义的。本文从数值积分问题的产生出发,详细介绍了一些数值积分的重要方法。 本文较详细地介绍了牛顿-科特斯求积公式,以及为了提高积分计算精度的高精度数值积分公式,即龙贝格求积公式和高斯-勒让德求积公式。除了研究这些数值积分算法的理论外,本文还将这些数值积分算法在计算机上通过MATLAB软件编程实现,并通过实例用各种求积公式进行运算,分析比较了各种求积公式的计算误差。 【关键词】数值积分牛顿-科特斯求积公式高精度求积公式MATLAB软件

前言 对于定积分,在求某函数的定积分时,在一定条件下,虽然有牛顿-莱布里茨公式可以计算定积分的值,但在很多情况下的原函数不易求出或非常复杂。被积函数的原函数很难用初等函数表达出来,例如等;有的函数的原函数存在,但其表达式太复杂,计算量太大,有的甚至无法有解析表达式。因此能够借助牛顿-莱布尼兹公式计算定积分的情形是不多的。另外,许多实际问题中的被积函数往往是列表函数或其他形式的非连续函数,对这类函数的定积分,也不能用不定积分方法求解,只能设法求其近似值。因此,探讨近似计算的数值积分方法是有明显的实际意义的,即有必要研究定积分的数值计算方法,以解决定积分的近似计算。而数值积分就是解决此类问题的一种有效的方法,它的特点是利用被积函数在一些节点上的信息求出定积分的近似值。 微积分的发明是人类科学史上一项伟大的成就,在科学技术中,积分是经常遇到的一个重要计算环节。数值积分是数学上重要的课题之一,是数值分析中重要的内容之一,也是应用数学研究的重点。随着计算机的出现,近几十年来,对于数值积分问题的研究已经成为一个很活跃的研究领域。现在,数值积分在计算

利用Matlab实现Romberg数值积分算法----系统建模与仿真结课作业

利用Matlab 实现Romberg 数值积分算法 一、内容摘要 针对于某些多项式积分,利用Newton —Leibniz 积分公式求解时有困难,可以采用数值积分的方法,求解指定精度的近似解,本文利用Matlab 中的.m 文件编写了复化梯形公式与Romberg 的数值积分算法的程序,求解多项式的数值积分,比较两者的收敛速度。 二、数值积分公式 1.复化梯形公式求解数值积分的基础是将区间一等分时的Newton —Cotes 求积公式: I =(x)[f(a)f(b)]2 b a b a f dx -≈ +? 其几何意义是,利用区间端点的函数值、与端点构成的梯形面积来近似(x)f 在区间[a,b]上的积分值,截断误差为: 3" (b a)()12 f η-- (a,b)η∈ 具有一次的代数精度,很明显,这样的近似求解精度很难满足计算的要求,因而,可以采用将积分区间不停地对分,当区间足够小的时候,利用梯形公式求解每一个小区间的积分近似值,然后将所有的区间加起来,作为被求函数的积分,可以根据计算精度的要求,划分对分的区间个数,得到复化梯形公式: I =1 1 (b a)(b a) (x)dx [f(a)f(b)2(a )]2n b a k k f f n n -=--≈+++∑? 其截断误差为:

2" (b a)h ()12 R f η--= (a,b)η∈ 2.Romberg 数值积分算法 使用复化的梯形公式计算的数值积分,其收敛速度比减慢,为此,采用Romberg 数值积分。其思想主要是,根据I 的近似值2n T 加上I 与2n T 的近似误差,作为新的I 的近视,反复迭代,求出满足计算精度的近似解。 用2n T 近似I 所产生的误差可用下式进行估算: 12221 ()3 n n n I T T T -?=-=- 新的I 的近似值: 122 n n j T T -=?+ j =(0 1 2 ….) Romberg 数值积分算法计算顺序 i=0 (1) 002T i=1 (2) 102T (3) 012T i=2 (4) 202T (5) 112T (6) 022T i=3 (7) 302T (8) 212T (9) 122T (10) 032T i=4 (11) 402T (12) 312T (13) 222T (14) 132T … … … … 其中,第一列是二阶收敛的,第二列是四阶收敛的,第三列是六阶收敛的,第四列是八阶收敛的,即Romberg 序列。

Matlab数值积分与数值微分

M a t l a b数值积分与数值微分 Matlab数值积分 1.一重数值积分的实现方法 变步长辛普森法、高斯-克朗罗德法、梯形积分法 1.1变步长辛普森法 Matlab提供了quad函数和quadl函数用于实现变步长 辛普森法求数值积分.调用格式为: [I,n]=Quad(@fname,a,b,tol,trace) [I,n]=Quadl(@fname,a,b,tol,trace) Fname是函数文件名,a,b分别为积分下限、积分上限; tol为精度控制,默认为1.0×10-6,trace控制是否展 开积分过程,若为0则不展开,非0则展开,默认不展开. 返回值I为积分数值;n为调用函数的次数. --------------------------------------------------------------------- 例如:求 ∫e0.5x sin(x+π )dx 3π 的值. 先建立函数文件 fesin.m function f=fesin(x) f=exp(-0.5*x).*sin(x+(pi/6));再调用quad函数

[I,n]=quad(@fesin,0,3*pi,1e-10) I= 0.9008 n= 365 --------------------------------------------------------------------- 例如:分别用quad函数和quadl函数求积分 ∫e0.5x sin(x+π 6 )dx 3π 的近似值,比较函数调用的次数. 先建立函数文件 fesin.m function f=fesin(x) f=exp(-0.5*x).*sin(x+(pi/6)); formatlong [I,n]=quadl(@fesin,0,3*pi,1e-10) I= n= 198 [I,n]=quad(@fesin,0,3*pi,1e-10) I= n= 365 --------------------------------------------------------------------- 可以发现quadl函数调用原函数的次数比quad少,并 且比quad函数求得的数值解更精确. 1.2高斯-克朗罗德法

matlab实现复化NewtonCotes公式求积分的程序应用和代码

执行函数为1、使用方法: Step1:在MATLAB命令窗口输入被积函数 2 1 2 t t e dt 。 输入应为:。 Step2:执行函数。输入形式为mymulNewtonCotes(ft,a,b,m,n); 其中ft—被积函数,此体重,已经在第一步赋值; a—积分下限,本题中为0; b—积分上限,本题中为1; m—将区间[a,b]等分的子区间数量,本题可选为10; n—采用的Newton-Cotes公式的阶数,必须满足n<8,否则积分没法保证稳定性。 当n=1时,即为复化梯形公式;n=2时,即为复化复化辛普森公式。 所以,分别输入mymulNewtonCotes(ft,0,1,10,1)和mymulNewtonCotes(ft,0,1,10,2)就可以得到两种方法的积分计算结果。 2、计算结果 而根据积分运算,可得: 说明复化梯形和复化辛普森公式计算出的结果基本一致,与实际结果相符。 3、程序代码 functionyy=mymulNewtonCotes(ft,a,b,m,n) %复化Newton-Cotes数值积分公式,即在每个子区间上使用Newton-Cotes公式,然后求和, %参考的输入形式为mymulNewtonCotes(ft,0,1,10,2) %参数说明: %ft——被积函数,此题中ft=@(t)t.*exp(t^2/2) %a——积分下限 %b——积分上限 %m——将区间[a,b]等分的子区间数量 %n——采用的Newton-Cotes公式的阶数,必须满足n<8,否则积分没法保证稳定性 %(1)n=1时为复化梯形公式

%(2)n=2时为复化辛普森公式 xx=linspace(a,b,m+1); forl=1:m s(l)=myNewtonCotes(ft,xx(l),xx(l+1),n); end yy=sum(s); function[y,Ck,Ak]=myNewtonCotes(ft,a,b,n) %牛顿-科特斯数值积分公式 %Ck——科特斯系数 %Ak——求积系数 %y——牛顿-科特斯数值积分结果 xk=linspace(a,b,n+1); forj=1:n+1 ff(j)=ft(xk(j)); end %计算科特斯系数 fori=1:n+1 k=i-1; Ck(i)=(-1)^(n-k)/factorial(k)/factorial(n-k)/n*quadl(@(t)intfun(t,n,k),0,n); end %计算求积系数 Ak=(b-a)*Ck; %求和算积分 y=Ak*ff'; functionf=intfun(t,n,k) %科特斯系数中的积分表达式 f=1; fori=[0:k-1,k+1:n] f=f.*(t-i); end

详解Matlab求积分的各种方法

详解Matlab求积分地各种方法 一、符号积分 符号积分由函数int来实现.该函数地一般调用格式为: int(s):没有指定积分变量和积分阶数时,系统按findsym函数指示地默认变量对被积函数或符号表达式s求不定积分; int(s,v):以v为自变量,对被积函数或符号表达式s求不定积分; int(s,v,a,b):求定积分运算.a,b分别表示定积分地下限和上限.该函数求被积函数在区间[a,b]上地定积分.a和b可以是两个具体地数,也可以是一个符号表达式,还可以是无穷(inf).当函数f关于变量x在闭区间[a,b]上可积时,函数返回一个定积分结果.当a,b中有一个是inf时,函数返回一个广义积分.当a,b中有一个符号表达式时,函数返回一个符号函数. 例: 式 F2 = 1. 2. 其中 取tol=0.001.trace控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,缺省时取trace=0.返回参数I即定积分值,n为被积函数地调用次数. 例: 求函数'exp(-x*x)地定积分,积分下限为0,积分上限为1. >>fun=inline('exp(-x.*x)','x'); %用内联函数定义被积函数fname >>Isim=quad(fun,0,1) %辛普生法 Isim = 0.746824180726425 IL=quadl(fun,0,1) %牛顿-柯特斯法

IL = 0.746824133988447 三、梯形法求向量积分 trapz(x,y)—梯形法沿列方向求函数Y关于自变量X地积分(向量形式,数值方法). >>d=0.001; >>x=0:d:1; >>S=d*trapz(exp(-x.^2)) S= 0.7468 或: S =

2019年数值积分的matlab实现

实验10 数值积分 实验目的: 1.了解数值积分的基本原理; 2.熟练掌握数值积分的MATLAB实现; 3.会用数值积分方法解决一些实际问题。 实验内容: 积分是数学中的一个基本概念,在实际问题中也有很广泛的应用。同微分一样,在《微积分》中,它也是通过极限定义的,由于实际问题中遇到的函数一般都以列表形式给出,所以常常不能用来 直接进行积分。此外有些函数虽然有解析式,但其原函数不是初等函数,所sinx 1?xd这时我们一般考虑用数值方法计算其如不定积分。以仍然得不到积分的精确值,x0 近似值,称为数值积分。10.1 数值微分简介 *x)f(x?y在设函数可导,则其导数为**)x?f(x(?h)f*?lim?(xf))(10.1 h0h?y?f(x)以列表形式给出(见表10-1),则其精确值无法求得,但可由下式求得如果函数其近似值 **)(fx?h)f(x?*??xf)( 10.2)(h表 10-1 x ……n hy?f(x)在(10.2)式右端项的分子称为函数一般的,步长越小,所得结果越精确。**xx的差分,所以右端项又称为差商。的差分,分母称为自变量在数值微分即用差商近似代替微商。常用的差商公式为: f(x?h)?f(x?h)?00?(x)f(10.3 ) 02h?3y?4y?y?210?)(fx(10.4)0h2. y?4y?3y?nn?2n?1?x)f((10.5)n2h2)hO(,称为统称三点公式。其误差均为10.2 数值微分的MATLAB实现 MATLAB提供了一个指令求解一阶向前差分,其使用格式为: dx=diff(x) ??nx?,xxx,x?,x?1?n,这样基于两点的数值导dx维数组,为其中x是维数组132n21数可通过指令diff(x)/h实现。对于三点公式,读者可参考例1的M函数文件diff3.m。 x?f()(xx)y?f的值由下表给用三点公式计算处的导数值,在1.0,1.2,1.41例 出。 1.0 1.1 1.2 1.3 1.40.2500 0.2268 0.2066 0.1890 0.1736

Matlab积分函数

一.相关函数: %符号积分 int(f,v) int(f,v,a,b) %数值积分 trapz(x,y)%梯形法沿列方向求函数Y关于自变量X的积分 cumtrapz(x,y)%梯形法沿列方向求函数Y关于自变量X的累计积分 quad(fun,a,b,tol)%采用递推自适应Simpson法计算积分 quad1(fun,a,b,tol)%采用递推自适应Lobatto法求数值积分 dbquad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol)%二重(闭型)数值积分指令triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol)%三重(闭型)数值积分指令 二.示例: 例1:计算f(t)=exp(-t^2)在[0,1]上的定积分 本例演示:计算定积分常用方法 >>symsx int(exp(-x^2),0,1) ans= 1/2*erf(1)*pi^(1/2) %erf为误差函数 >>vpa(int(exp(-x^2),0,1)) ans= .7468241328124270 >>d=0.001;x=0:d:1;d*trapz(exp(-x.^2)) ans= 0.7468 >>quad('exp(-x.^2)',0,1,1e-8) ans= 0.7468 例2:计算f(t)=1/log(t)在[0,x],01^-处为负无穷 本例演示:用特殊函数表示的积分结果,如何用mfun指令 (1) symstx ft=1/log(t); sx=int(ft,t,0,x) sx=

数值积分用matlab实现

东北大学秦皇岛分校数值计算课程设计报告数值积分及Matlab实现 学院数学与统计学院 专 信息与计算科学 业 学 5133117 号 姓 楚文玉 名 指导教 张建波姜玉山 师 成 绩 教师评语:

指导教师签字:2015年07月14日

1 绪论 在科研计算中,经常会碰到一些很难用公式定理直接求出精确解的积分问题,对于这类问题,我们一般转化为数值积分问题,用计算机来实现求解问题. 1.1 课题的背景 对于定积分()b a f x dx ?在求某函数的定积分时,在一定条件下,虽然有牛顿-莱布里 茨公式()()()b a I f x dx F b F a ==-?可以计算定积分的值,但在很多情况下的原函数() f x 不易求出或非常复杂.被积函数的原函数很难用初等函数表达出来,例如 2 sin (),x x f x e x -= 等;有的函数()f x 的原函数()F x 存在,但其表达式太复杂,计算量太大,有的甚至无法有解析表达式.因此能够借助牛顿-莱布尼兹公式计算定积分的情形是不多的.另外,许多实际问题中的被积函数()f x 往往是列表函数或其他形式的非连续函数,对这类函数的定积分,也不能用不定积分方法求解,只能设法求其近似值.因此,探讨近似计算的数值积分方法是有明显的实际意义的,即有必要研究定积分的数值计算方法,以解决定积分的近似计算.而数值积分就是解决此类问题的一种有效的方法,它的特点是利用被积函数在一些节点上的信息求出定积分的近似值.微积分的发明是人类科学史上一项伟大的成就,在科学技术中,积分是经常遇到的一个重要计算环节数值积分是数学上重要的课题之一,是数值分析中重要的内容之一.随着计算机的出现,近几十年来,对于数值积分问题的研究已经成为一个很活跃的研究领域.现在,数值积分在计算机图形学,积分方程,工程计算,金融数学等应用科学领域都有着相当重要的应用,所以研究数值积分问题有着很重要的意义.国内外众多学者在数值积分应用领域也提出了许多新方法.在很多实际应用中,只能知道积分函数在某些特定点的取值,比如天气测量中的气温、湿度、气压等,医学测量中的血压、浓度等等.通过这个课题的研究,我们将会更好地掌握运用数值积分算法求出特殊积分函数的定积分的一些基本方法、理论基础;并且通过Matlab 软件编程的实现,应用于实际生活中. 1.2 课题的主要内容框架 1. 2.1 数值积分各求积公式简介

Matlab数值积分与数值微分

M a t l a b数值积分与数 值微分 集团档案编码:[YTTR-YTPT28-YTNTL98-UYTYNN08]

M a t l a b数值积分与数值微分 Matlab数值积分 1.一重数值积分的实现方法 变步长辛普森法、高斯-克朗罗德法、梯形积分法 1.1变步长辛普森法 Matlab提供了quad函数和quadl函数用于实现变步长辛普森法求数值积分.调用格式为: [I,n]=Quad(@fname,a,b,tol,trace) [I,n]=Quadl(@fname,a,b,tol,trace) Fname是函数文件名,a,b分别为积分下限、积分上限; tol为精度控制,默认为1.0×10-6,trace控制是否展开积分过程,若为0则不展开,非0则展开,默认不展开. 返回值I为积分数值;n为调用函数的次数. --------------------------------------------------------------------- 例如:求 ∫e e.ee eee(e+e e )e e 3π 的值. 先建立函数文件fesin.m function f=fesin(x) f=exp(-0.5*x).*sin(x+(pi/6));再调用quad函数

[I,n]=quad(@fesin,0,3*pi,1e-10) I= 0.9008 n= 365 ---------------------------------------------------------------------例如:分别用quad函数和quadl函数求积分 ∫e e.ee eee(e+e e )e e 3π 的近似值,比较函数调用的次数. 先建立函数文件 fesin.m function f=fesin(x) f=exp(-0.5*x).*sin(x+(pi/6)); formatlong [I,n]=quadl(@fesin,0,3*pi,1e-10) I= n= 198 [I,n]=quad(@fesin,0,3*pi,1e-10) I= n= 365 --------------------------------------------------------------------- 可以发现quadl函数调用原函数的次数比quad少,并且比quad函数求得的数值解更精确. 1.2高斯-克朗罗德法

相关主题
文本预览
相关文档 最新文档