MATLAB在重积分计算中的应用

《MATLAB语言》课程论文

MATLAB在重积分计算中的应用

姓名:张晓花

学号:12010245235

专业:通信工程

班级:通信工程1班

指导老师:汤全武

学院:物理电气信息

完成日期:2011/12/21

MATLAB在高等数学重积分中的应用

(张晓花12010245235 2010级1班)

[摘要]计算积分通常是一项复杂的工作,尤其是重积分的运算,其中涉及到积分区域的确定及画法换积分等步骤,而MATLAB 将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,专门以

矩阵的形式处理数据。该文运用MATLAB解决了在一重积分,二重积分和三重积分以及其应用方面的计算问题,充分展示了MATLAB在高等数学重积分中的应用。

[关键词]MATLAB语言,高等数学,重积分,图形绘制

一、问题的提出

Matlab是当今很流行的科学计算软件,语法筒单、易学、好写有强大的运算及绘图能力,有强大且多样化的各种工具箱俩数库可供使用,包括与本书密切相关的图橡工具箱;信息技术、计算机技术发展到今天,科学计算在各个领域得到了广泛的应用。在许多诸如控制论、时间序列分析、系统仿真、图像信号处理、重积分的计算与应用等方面产生了大量的矩阵及其相应的计算问题。如果自己去编写大量的繁复的计算程序,不仅会消耗大量的时间和精力,减缓工作进程,而且往往质量不高。而matlab是一个交互式的系统,它的基本运算单元是不需要指定维数的矩阵。系统提供了大量的矩阵及其它运算函数,可以方便地进行一些复杂的计算,而且运算效率极高。matlab命令和数学中的符号、公式非常接近,可读性强,容易掌握,还可以利用它所提供的编程语言进行编程完成特定的工作Matlab 编写程序犹如在演算纸上排列公式与求解问题,matlab语言也可以通俗地称为演算纸式科学算法语言。由于它编写简单,所以编译效率高,易学易懂。Mat lab语言把编辑、编译、连接和执行融为一体,其调试程序手段丰富,调试速度快,需要学习时间少。它能在同一画面上进行灵活操作快速排除输入程序中的书写错误、语法错误以至语意错误,从而加快了用户编写、修改和调试程序的速度,可以说在编程和调试过程中它是一种比VB还要简单的语言。 Mat lab的绘图是十分方便的,它有一系列绘图函数(命令),使用时只需调用不同的绘图函数(命令),在图上标出图题、XY轴标注,格(栅)绘制也只需调用相应的命令,简单易行。另外,在调用绘图函数时调整自变量可绘出不变颜色的点、线、复线或多重线。

本文针对重积分的计算与应用,运用matlab中所学的符号计算基础、符号函数及其应用以及符号积分来探讨分析matlab在一重积分中的计算,二重积分中的计算与应用,三重积分中的计算与应用,重积分的积分区域以及重积分在曲面积分中应用等方面的运用。

二、Matlab在一重积分中的计算与应用问题

一重积分的计算与应用常体现在不定积分的计算(第一类换元法、第二类换元法)和定积分计算与面积方面的应用。

就不定积分,设F(x)是函数f(x)的一个原函数 ,我们把函数f (x )的所有原函数F (x )+C(C 为任意常数)叫做函数f (x )的不定积分,记作:

?+=C x F dx x f )()( (1)

其中?叫做积分号,f (x )叫做被积函数,x 叫做积分变量,f (x )dx 叫做被积式,C 叫做积分常数,求函数f (x )的不定积分,就是要求出f (x )的所有的原函数,由原函数的性质可知,只要求出函数f (x )的一个原函数,再加上任意的常数C,就得到函数f(x)的不定积分。

不定积分的性质:函数的和的不定积分等于各个函数的不定积分的和,即:

???+=+dx x g dx x f dx x g x f )()()]()([ (2)

求不定积分时,被积函数中不为零的常数因子可以提到积分号外面来,即:

??=dx x f k dx x kf )()( (3)

(k 是常数,k 不为零)

1、 不定积分的计算

在MATLAB 中,int 函数用于求符号函数的不定积分,有两种调用格式:

(1) int (f ):没有指定积分变量和积分阶数时,系统按findsym 函数指示的默认变量 对被积函数或符号表达式f 求不定积。

(2) Int(f,v):以v 为自变量,对被积函数或符号表达式f 求不定积分。求符号函数的积 分也可使用int (f,v,a,b ),其中a 、b 分别表示积分的下限和上限。该函数求被积函数f 在区间[a 、b]上的定积分。a 和b 可以是两个具体的数,也可以是一个符号表达式,还可以是无穷(inf )。当函数f 关于变量x 在闭区间[a ,b]上可积时,函数返回一个定积分结果。当a 、b 中有一个是inf 时,函数返回一个广义积分。当a ,b 中有一个符号表达式时,函数返回一个符号函数。

问题1:计算不定积分dx x 32)3(?-

输入程序如下:

x=sym('x'); %定义符号变量x

f=(3-x^2)^3; %将所给表达式用f 表示

int(f) %求表达式f 的不定积分

输出结果如下:

ans =

27*x-1/7*x^7+9/5*x^5-9*x^3

问题2:求函数f(x)=1/(2x +2x+3),g(x)=1/(2x +2x-3)在负无穷到正无穷的积分。 输入程序如下:

syms x %定义一个符号变量x

f=1/(x^2+2*x+3); %将f (x )表达式用f 表示

g=1/(x^2+2*x-3); %将g (x )表达式用g 表示

intf=int(f,-inf,inf) %求从负无穷到正无穷f 的积分

intg=int(g,-inf,inf) %求从负无穷到正无穷g 的积分

输出结果如下:

intf =

1/2*pi*2^(1/2)

intg =

NaN

结果说明f (x )在整个数轴上可积分,而g (x )在整个数轴上不可积分。为什么呢?看两个图像就明白了。

图1 f(x)的函数图象

图2 g(x)的函数图象

由如上图可得知,原来,g (x )在数轴上有不可积的奇点。就定积分,设函()x f 在[]b a ,上有界, 在[]b a ,中任意插入1+n 个分点

b x x x x x x x a n n i i =<<<<<<<<=--11210 ,把区间分划成 n 个小区间

[,][,][,][,]x x x x x x x x i i n n 011211 --

各区间的长度依次为

11122011,,,,,---=?-=?-=?-=?n n n i i i x x x x x x x x x x x x

在每个小区间[,]x x i i -1上任取一点 ξξi i i i x x ()-≤≤1,作函数值)(i

f ξ与小区间长 度?x i 的乘积 f x i n i i ()(,,,)ξ?=12 作和式 i n

i x f s ?=∑)(1ξ记

λ=max{,,,}???x x x n 12 若不论对区间[,]a b 上怎样的分法,也不论对小区间

[,]x x i i -1上的点ξi 怎样的取法,只要当λ→0时, 和s 总趋向于确定的值I , 称这 个极限值I 为函数()x f 在区间[]b a ,上的定积分。记作dx x f b

a ?)(即 f x dx I f x a b

i i i n

()lim ()?==∑→=λξ01? (4)

其中()x f 叫做被积函数;()dx x f 叫做被积表达式;x 叫做积分变量; []b a ,叫做积分区间;a 叫做积分下限;b 叫做积分上限;i n

i x f ?∑)(1ξ叫做()x f 在[]b a ,上的积分和式。如果()x f 在

[]b a ,上的定积分存在,我们就说()x f 在[]b a ,上可积。设()x f 在区间[]b a ,上连续, 则()x f 在[]b a ,上可积。设()x f 在区间[]b a ,上有界, 且只有有限个间断点, 则()x f 在[]b a ,上可积。

2、 定积分的计算问题

问题3:求定积分

dx x x ?-219222

输入程序如下:

syms x %定义一个号变量x

f1=(2*x^2)/(sqrt(9-x^2)); %将计算的表达式的值赋给f1

f2=sqrt(x^2-1)/(2*x); %将计算的表达式的值赋给f2

f3=1/(sqrt((4+x^2)^3)); %将计算的表达式的值赋给f3

f=[f1;f2;f3]; %将三者的值以矩阵的形式输出

F=int(f,1,2),Y=double(F') %将计算的积分值赋给F 并求其近似值 输出结果如下:

F =

2*2^(1/2)-9*asin(1/3)-2*5^(1/2)+9*asin(2/3)

-1/6*pi+1/2*3^(1/2)

-1/20*5^(1/2)+1/8*2^(1/2)

Y =

1.8653 0.3424 0.0650

3、运用定积分求面积的问题

Matlab 中提供了两个建立符号对象的函数或命令:sym 和syms ,它们的用法不同。sym 函数用来建立单个符号量,其调用格式为:符号量名=sym (符号字符串)该函数可以建立一个符号字符串,符号字符串可以是常量、变量、函数或表达式.sym 函数一次只能定义一个符号变量,而syms 一次可以定义多个符号变量,其格式为:syms arg1 arg2 … argn,其中arg1、arg2、… 、argn 是定义的符号变量名。注意变量间用空格而不要用逗号分隔。

问题4:由y=sinx,y=cosx,x=-1/2,x=3/2所围成的平面区域D ,求平面区域D 的面积S 。

解:(1)画出由y=sinx,y=cosx,x=-1/2,x=3/2所围成的封闭平面区域的图形,输入所作函数图形的程序如下:

x=-1:0.001:2; %x 从-1到2步长为0.001

F1=sin(x); %用F1来表示sin (x )

F2=cos(x); %用F2来表示cos (x )

plot(x,F1,'b-',x,F2,'g-') %输出F1所表示的曲线为蓝色,输出F2所表示的曲线为绿色 axis([-1,pi/4+1,-1.3,1.3]) %设置坐标

xlabel('x') %加x 轴说明

ylabel('y'), %加y 轴说明

title('y=sinx,y=cosx 和x=-0.5及x=1.5所围成的平面区域的图形') %加图形标题

输出结果如图3所示。

图3 由y=sinx,y=cosx,x=-1/2,x=3/2所围成的平面区域图形

(2)求平面区域D 的面积S ,解方程组?

??==x y x y cos ,sin 得在(-0.5,1.5)内的两条曲线交点的横坐标4π=x ,所求面积为:S=?--45.0)sin (cos πdx x x +?-5

.1)cos (sin πdx x x 。 计算面积S 的程序如下:

syms x %定义符号变量x

f1=cos(x)-sin(x); %用f1来表示cos (x )-sin (x )

f2=-f1; %f2表示f1的相反数即为sin(x)-cos(x)

s1=int(f1,x,-0.5,pi/4); %将f1的积分值赋给s1

s2=int(f2,x,pi/4,1.5); %将f2的积分值赋给s2

s=s1+s2,sj=double(s) %将s1的值与s2相加再求其近似值

运行结果如下:

s =

sin(1/2)-cos(1/2)+2*2^(1/2)-sin(3/2)-cos(3/2)

sj =

1.3620

三、Matlab 在二重积分中的计算与应用问题

设函数),(y x f 在有界闭区域D 上有定义。将区域D 任意分成n 个小区域),,,1(n x i i =?δ,i δ?也表示第i 个小区域的面积,在每个小区域i δ?上任取一点

),,2,1)(,(n i y x i i =,作和式i i i n i y x

f δ?∑=)(,1

当,∞→n 同时0→λ时(λ表示所有i δ?的最大直径),若上述和式的极限∑=→∞→?n i i i i n y x f 1)0(),(lim δλ存在,并且此极限与区域的分法及点),(i i y x 的

取法无关,则称此极限为函数),(y x f z =在区域D 上的二重积分,记作,

i yi x f d y x f n

i i D δδ?=

∑??=1),(lim ),( )(∞→n (5) 其中D 叫做积分区域,),(y x f 叫做被积函数,δd 叫面积元素.此时也称函数),(y x f 在D 上可积.如果0),(≥y x f ,则二重积分??D

d y x f δ),(的几何意义就是以曲面),(y x f z =为顶面,

以D 为底面的曲顶柱体的体积。特别地,当1),(=y x f 时,平顶柱体的体积????=?=D D

d d V δδ1,在数值上等于区域D 的面积,于是得计算平面区域D 的面积公式

??=D

d δδ

二重积分与定积分有相类似的性质

(6)

对应区域的可加性:

(1)若区域D 分为两个部分区域D D 12,,则

(7)

(2)若在D 上,f x y (,)≡1,σ为区域D 的面积,则

(8)

问题1:计算σd y x y x Dxy ??

++)sin(,其中Dxy 是由曲线x=2y ,y=x-2所围成的平面区域。 画出积分区域的图形,输入程序如下:

syms x y %定义两个符号变量x ,y

f1=x-y^2; %将表达式用f1来表示

f2=x-y-2; %将表达式用f2来表示

ezplot(f1) %画出f1所表示的曲线

hold on %设置图形保持状态

ezplot(f2) %画出f2所表示的曲线

hold off % 关闭图形保持状态

axis([-0.5 5 -1.5 3]) %设置坐标轴的长度即坐标轴的范围

title('由x=y^2和y=x-2所围成的积分区域Dxy') %加图形标题

运行后所得区域如图4所示。

图4 由曲线所围成的积分区域 Dxy

确定积分限,程序如下:

syms x y %定义两个符号变量x,y

y1=('x-y^2=0'); %将x-y^2=0的值赋给y1

y2=('x-y-2=0'); %将x-y-2=0的值赋给y2

[x,y]=solve(y1,y2,x,y) %输出积分限

运行后屏幕显示两条曲线,y=x-2的交点如下:

x =

1

4

y =

-1

2

输入计算程序如下:

syms x y %定义符号变量x ,y

f=sin(x+y)/(x+y); %变量表达式

x1=y^2; %变量表达式

x2=y+2; %变量表达式

jfx=int(f,x,x1,x2); %求以x1,x2为上下限,以x 为自变量的f 的积分值

jfy=int(jfx,y,-1,2); %求以-1,2为上下限,以y 为自变量的jfx 的积分值

jf2=double(jfy) %求jf2的近似值

运行后屏幕显示如下:

Warning: Explicit integral could not be found.

> In sym.int at 58

jf2 =

1.9712 因此,所求的971

2.1)sin(≈++??σd y x y x Dxy

。 问题2:计算σd y x Dxy )cos(??+的值。

确定积分区域Dxy ,输入程序如下:

x=0.001:0.001:3; %x 从0.001到3步长为0.001

y1=1./(2*x); %变量表达式

y2=sqrt(2*x); %对表达式求方根后赋给y2

plot(x,y1,'b-',x,y2,'M',x,2.5,'r-') %以x 向量为X 轴,分别以y1,y2为y 轴,在同一幅图内绘制多条曲线

axis([-0.5 3 -0.5 3]) %设置坐标

title('由y1=1/(2x),y2=sqrt(2x)和x=2.5所围成的积分区域Dxy') %加图形标题

运行后的区域如图5所示。

图 5 由y1=1/(2x),y2=sqrt(2x)和x=2.5所围成的积分区域Dxy

确定积分限,输入程序如下:

syms x y %定义符号变量

y1=('2*x*y=1'); %将2*x*y=1的值赋给y1

y2=('y-sqrt(2*x)=0'); %将y-sqrt(2*x)=0的值赋给y2

[x,y]=solve(y1,y2,x,y) %输出积分限

运行后屏幕显示两条曲线2xy=1,y=x 2的交点如下:

x =

1/2

y =

1

输入计算程序:

syms x y %定义符号变量

f=cos(x+y); %用f 表示cos (x+y )

y1=1/(2*x); %变量表达式

y2=sqrt(2*x); %对表达式求方根后赋给y2

jfy=int(f,y,y1,y2); %求以y1,y2为上下限,以y 为自变量的f 的积分值

jfx=int(jfy,x,0.5,2.5); %求以0.5,2.5为上下限,以x 为自变量的jfy 的积分值

jf2=double(jfx) %求jf2的近似值

运行后屏幕显示如下:

Warning: Explicit integral could not be found.

> In sym.int at 58

jf2 =

-1.8321

因此,所求的σd y x Dxy

)cos(??+的近似值为-1.8321。

问题3:用MATLAB 语言绘出积分表达式????---++--+x x x x dy y x f dx dy y x f dx 816816223121223

21),(),(所表

示的区域。

解:D1中的x ,y 的取值范围大致为:x ∈[0.5 1.5],y ∈[-2 2];D2中x ,y 的取值范围大

致为:x ∈[1.5 2],y ∈[-2,2];用MATLAB 函数绘制x=-1/2,x=3/2,y=-12+x ,y=12+x 所围成的区域D1,绘制x=3/2,x=2,y=-x 816-,y=x 816-所围成的区域D2。

程序如下:

line([-0.5 -0.5],[-3 3]); %画区域D1中x=-1/2,适当放宽了y 的范围

hold on ;line([1.5 1.5],[-3 3]); %画区域D1中x=3/2

hold on ; %设置图形保持状态

ezplot('y=-sqrt(2*x+1)',[-0.5,1.5,-3,3]); %画区域D1中y=-sqrt (2*x+1)

hold on ; %设置图形保持状态

ezplot('y=sqrt(2*x+1)',[-0.5,1.5,-3,3]); %画区域D1中y=sqrt (2*x+1)

hold on ;line([1.5 1.5],[-3 3]); %画区域D2中的x=3/2

hold on ;line([2 2],[-3 3]); %画区域D2中x=2

hold on ; %设置图形保持状态

ezplot('y=-sqrt(16-8*x)',[1.5,2,-3,3]); %画区域D2中y=-sqrt (16-8*x )

hold on ; %设置图形保持状态

ezplot('y=sqrt(16-8*x)',[1.5,2,-3,3]); %画区域D2中y=sqrt(16-8*x)

text([0.6,0.6],[0,0],'D1'); %在指定位置D1添加图形说明

text([1.7,1.7],[0,0],'D2'); %在指定位置D2添加图形说明

得到的区域如下图6所示。

图 6 y=sqrt

(16-8x )

四、Matlab 在三

重积分中的计算

与应用方面的问

设f x y z (,,)是空间闭区域Ω上的有界函数,将Ω任意地分划成n 个小区域 ???v v v n 12,,, 其中?v i 表示第i 个小区域,也表示它的体积。在每个小区域?v i 上任取一点(,,)ξηζi i i , 作乘积 f v i i i i (,,)ξηζ?作和式f v i i i i i n

(,,)ξηζ?=∑1以λ

记这n 个小区域直径的最大者,若极限

lim (,,)λξηζ→=∑01f v i i i i i n

? 存在,

则称此极限

值为函数f x y z (,,)在区域Ω上的三重积分,记作f x y z dv (,,)Ω

???,即:

i i i

n i i v f dv z y x f ?=∑???=Ω→),,(lim ),,(10ζηξλ (9)

其中dv 叫体积元素。自然地,体积元素在直角坐标系下也可记作成dxdydz 。若积分区域Ω可表示成:a x b y x y y x z x y z z x y ≤≤≤≤≤≤,()(),(,)(,)

1212 则:

f x y z dv dx dy f x y z dz a b y x y x z x y z x y (,,)(,,)()()(,)(,)Ω??????=1212 (10)

这就是三重积分的计算公式, 它将三重积分化成先对积分变量z , 次对y ,最后对x 的三次积分。

Matlab 提供了mesh 函数和surf 函数来绘制三维曲面图。mesh 函数用于绘制三维网格图。在不需要绘制特别精细的三维曲面图时,可以通过三维网格图来表示三维曲面。surf 用于绘制三维曲面图,各线条之间的补面用颜色填充。mesh 函数和surf 函数的调用格式为:mesh (x ,y ,z ,c )和surf (x ,y ,z ,c )。

问题1:计算I (f )=dxdydz z e x V

y )sin (++???,其中积分区域V 是由旋转抛物面

z=8-22y x -,圆柱面422=+y x 和z=0所围成的空间闭区域。

解:画出积分区域V 的草图。

输入程序如下:

[x,y]=meshgrid(-2:0.01:2); %生成网格坐标矩阵x ,y

z1=8-(x.^2+y.^2); %旋转抛物面z1的表达式

figure(1) %图1

meshc(x,y,z1) %绘制三维图z1

hold on %设置图形保持状态

x=-2:0.01:2; %x 从-2到2步长为0.01

r=2; %圆的半径为2

[x,y,z]=cylinder(r,30) %生成一个正弦型柱面

mesh(x,y,z) %绘制三维曲面图,x,y 是网格坐标矩阵,z 是网格点上的高度矩阵 hold off %关闭图形保持状态

title('由旋转抛物z=8-£¨x^2+y^2),圆柱面x^2+y^2=4和 z=0所围成的积分区域V')

%加图形标题

figure(2) %图2

contour(x,y,z,10) %其中10代表高度的等级数

title('由z=8-(x^2+y^2)圆柱面 x^2+y^2=4所围成的区域在xoy 面上的投影区域Dxy')

%加图形标题

运行后所的区域如图7所示。

图 7 由旋转抛物面z=8-(22y x +),圆柱面42

2=+y x 和z=0所围成的积分区域V

图 8 由z=8-(22y x +)和圆柱面2

2y x +=4所围成的区域V 在xoy 面上的投影区域Dxy 确定积分限,输入程序如下:

syms x y z %定义三个符号变量x ,y ,z

f1=('z=8-(x^2+y^2)'); %将z=8-(x^2+y^2)的值赋给f1

f2=('x^2+y^2=4'); %将x^2+y^2=4的值赋给f2

[x,y,z]=solve(f1,f2,x,y,z) %输出积分限

运行后屏幕显示旋转抛物面z=8-x 22y -和圆柱面422=+y x 的交线如下:

x =

(4-y^2)^(1/2)

-(4-y^2)^(1/2)

y =

y

y

z =

4

输入计算程序如下:

syms x y z%定义三个符号变量x,y,z

f=x+exp(y)+sin(z); %变量表达式

z1=0; %给z1赋值为0

z2=8-(x^2+y^2); %将此表达式用z2表示

x1=-sqrt(4-y^2); %将对表达式求平方根后的相反数赋给x1

x2=sqrt(4-y^2); %将对表达式求平方根赋给x2

jfz=int(f,z,z1,z2); %求以z1,z2为上下限,以z为自变量的f的积分值

jfx=int(jfz,x,x1,x2); %求以x1,x2为上下限,以x为自变量的jfz的积分值

jfy=int(jfx,y,-2,2); %求以-2,2为上下限,以y为自变量的jfy的积分值

jf2=double(jfy) %求jfy的近似值用jf2表示

运行后屏幕显示如下:

Warning: Explicit integral could not be found.

> In sym.int at 58

jf2 =

121.6651

因此,所求的I(f)的近似值为121.6651。

五、结论

通过利用matlab语言对一重积分、二重积分及三重积分进行计算、绘制积分区域可以得出:

(1)matlab可以用数值计算方法求解积分的近似值,还可以画出解得图像,把复杂、抽象的数学形式表达成直观、形象的图形,这样使得分析题时会更容易、思路更清晰。(2)运用matlab可以将二重积分、三重积分的积分区域绘制出来,这样解起来就很容易了。用matlab语言编写程序解重积分比直接解更容易。

六、心得体会

真正接触学习matlab已经一学期了,我了解了一些matlab的基础知识,由于课程安排紧,所以老师就上的比较快,而matlab中运用的函数比较多都需要记,刚开始上课没注意听下来也没看导致上机时什么也不知道,突然意识到这门课得重视起来,不然到最后,什么也不知道。慢慢的通过看书请教同学,知道了很多函数的调用格式,自己试着写程序,发现这门语言很好用,它以矩阵作为数据操作的基本单位,使得计算变得非常简捷、方便、高效。我很喜欢matlab的绘图功能,它可以绘制各种图形,包括二维图形和三维图形,还可以对图形进行修饰和控制以增强图形的表现效果。编一个程序就可以绘制出你想要的图形,比起自己用手画方便快捷多了。就如做三重积分的题时,当确定积分区域时会花费很长时间,而且一旦画错整个题就错了,运用matlab可以很直观的绘制出积分区域,这样就不会浪费很多时间。本学期虽然学的不是太好、太深,但这门语言的基本函数都大致有了一定的了解,以后多用就一定会掌握的,此语言还需多练习才能熟练地运用。

[参考文献]

[1]任玉杰.数值分析及其MATLAB实现(第一版)[M].北京:高等教育出版社,2007.

[2]许波、刘征.MATLAB工程数学应用(第一版)[M].北京:清华大学出版社,2000.

[3]刘卫国.MATLAB程序设计与应用(第二版)[M].北京:高等教育出版社,2006.

[4]张立科.MATLAB7.0从入门到精通 [M].北京:人民邮电出版社,2006:314.

[5]段俊生、安建业、徐立,MATLAB曲面绘制中的挖补方法[J],大学数学,2006.8,22(4).

用递推公式计算定积分(matlab版)

用递推公式计算定积分 实验目的: 1.充分理解不稳定的计算方法会造成误差的积累,在计算过程中会导致误差的迅速增加,从而使结果产生较大的误差。 2.在选择数值计算公式来进行近似计算时,应学会选用那些在计算过程中不会导致误差迅速增长的计算公式。 3.理解不稳定的计算公式造成误差积累的来源及具体过程; 4.掌握简单的matlab语言进行数值计算的方法。 实验题目: 对n=0,1,2,…,20,计算定积分: 实验原理: 由于y(n)= = – 在计算时有两种迭代方法,如下: 方法一: y(n)=– 5*y(n-1),n=1,2,3, (20) 取y(0)= = ln6-ln5 ≈ 0.182322 方法二: 利用递推公式:y(n-1)=-*y(n),n=20,19, (1) 而且,由 = * ≤≤* =

可取:y(20)≈*()≈0.008730. 实验容: 对算法一,程序代码如下: function [y,n]=funa() syms k n t; t=0.182322; n=0; y=zeros(1,20); y(1)=t; for k=2:20 y(k)=1/k-5*y(k-1); n=n+1; end y(1:6) y(7:11) 对算法二,程序代码如下: %计算定积分; %n--表示迭代次数; %y用来存储结果; function [y,n]=f(); syms k y_20;

y=zeros(21,1); n=1; y_20=(1/105+1/126)/2; y(21)=y_20; for k=21:-1:2 y(k-1)=1/(5*(k-1))-y(k)/5; n=n+1; end 实验结果: 由于计算过程中,前11个数字太小,后9个数字比较大,造成前面几个数字只显示0.0000的现象,所以先输出前6个,再输出7—11个,这样就能全部显示出来了。 算法一结果: [y,n]=funa %先显示一y(1)—y(6) ans = 0.1823 -0.4116 2.3914 -11.7069 58.7346

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

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

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

用MATLAB算多元函数积分

用MATLAB 计算多元函数的积分 三重积分的计算最终是化成累次积分来完成的,因此只要能正确的得出各累次积分的积分限,便可在MA TLAB 中通过多次使用int 命令来求得计算结果。但三重积分的积分域Ω是一个三维空间区域,当其形状较复杂时,要确定各累次积分的积分限会遇到一定困难,此时,可以借助MATLAB 的三维绘图命令,先在屏幕上绘出Ω的三维立体图,然后执行命令 rotate3d on ↙ 便可拖动鼠标使Ω的图形在屏幕上作任意的三维旋转,并且可用下述命令将Ω的图形向三个坐标平面进行投影: view(0,0),向XOZ 平面投影; view(90,0),向YOZ 平面投影; view(0,90),向XOY 平面投影. 综合运用上述方法,一般应能正确得出各累次积分的积分限。 例11.6.1计算zdv Ω ???,其中Ω是由圆锥曲面222z x y =+与平面z=1围成的闭区域 解 首先用MA TLAB 来绘制Ω的三维图形,画圆锥曲面的命令可以是: syms x y z ↙ z=sqrt(x^2+y^2); ↙ ezsurf(z,[-1.5,1.5]) ↙ 画第二个曲面之前,为保持先画的图形不会被清除,需要执行命令 hold on ↙ 然后用下述命令就可以将平面z=1与圆锥面的图形画在一个图形窗口内: [x1,y1]=meshgrid(-1.5:1/4:1.5); ↙ z1=ones(size(x1)); ↙ surf(x1,y1,z1) ↙ 于是得到Ω的三维图形如图:

由该图很容易将原三重积分化成累次积分: 111zdv dy -Ω=???? 于是可用下述命令求解此三重积分: clear all ↙ syms x y z ↙ f=z; ↙ f1=int(f,z.,sqrt(x^2+ y^2),1); ↙ f2=int(f1,x,-sqrt(1- y^2), sqrt(1- y^2)); ↙ int(f2,y,-1,1) ↙ ans= 1/4*pi 计算结果为4 π 对于第一类曲线积分和第一类曲面积分,其计算都归结为求解特定形式的定积分和二重积分,因此可完全类似的使用int 命令进行计算,并可用diff 命令求解中间所需的各偏导数。 例11.6.2用MATLAB 求解教材例11.3.1 解 求解过程如下 syms a b t ↙ x=a*cos(t); ↙ y=a*sin(t); ↙ z=b*t; ↙ f=x^2 +y^2+z^2; ↙ xt=diff(x,t); ↙ yt=diff(y,t); ↙ zt=diff(z,t); ↙ int(f*sqrt(xt^2 +yt^2+zt^2),t,0,2*pi) ↙ ans= 2/3*( a^2 +b^2)^1/2*a^2*pi+8/3*( a^2 +b^2)^1/2*b^2*pi^3 对此结果可用factor 命令进行合并化简: factor (ans ) ans= 2/3*( a^2 +b^2)^1/2*pi*(3* a^2 +4*b^2*pi^2) 例11.6.3用MATLAB 求解教材例11.4.1 解 求解过程如下 syms x y z1 z2↙ f= x^2 +y^2; ↙ z1=sqrt(x^2 +y^2); ↙ z2=1; ↙ z1x=diff(z1,x); ↙ z1y=diff(z1,y); ↙ z2x=diff(z2,x); ↙ z2y=diff(z2,y); ↙

详解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中有一个符号表达式时,函数返回一个符号函数。 例: 求函数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) %注意定积分的书写格式F2 =57/-

/348075*2^(1/2)+14912/4641*2^(1/4)+64/225*2^(3/4) %给出有理数 解>>VF2=vpa(F2) %给出默认精度的数值解VF2 = 224.9 232805二、数值积分 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用来控制积分精度,缺省时取tol= 0.0 01。 trace控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,缺省时取trace= 0。

数值积分的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计算积分

函数的积分和椭圆的周长 1.正弦函数的积分 [问题]求正弦函数从0到π的积分 y = sin x 当x = 0时,积分为0,画出积分的函数曲线。 [数学模型] 定积分的结果为 ππ00 sin d cos 2S x x x ==-=? 不定积分的结果为 sin d cos I x x x C ==-+? 其中C 是积分常量,由初始条件决定。当x = 0时,积分为I = 0,必有C = 1。结果为 I = -cos x + 1 [算法]根据积分的基本概念,将积分区域分为多份,用矩形法求曲线下的近似面积表示积分的近似值 1()n i i S f x x ==?∑ 矩形法的函数是sum(f)。 用梯形法求曲线下的近似面积表示积分的近似值 1 101[()()]2 n i i i S f x f x x -+==+?∑ 梯形法的函数是trapz(f)。 用数值积分的函数是quad 和quadl ,常用使用格式是 S = quad(f,a,b) 其中,f 表示被积函数,a 表示积分的下限,b 表示积分的下限。 用符号的函数是int ,常用使用格式是 S = int(f,a,b) [程序]zqy4_1.m 如下。 %正弦函数的积分 clear %清除变量 x=linspace(0,pi); %自变量向量 dx=x(2); %间隔 y=sin(x); %被积函数 s1=sum(y)*dx %矩形法积分 s2=trapz(y)*dx %梯形法积分 f=inline('sin(x)'); %被积的内线函数 s3=quad(f,0,pi) %数值定积分

s4=int('sin(x)',0,pi) %符号积分 sc1=cumsum(y)*dx; %矩形法累积积分(精度稍差) sc2=cumtrapz(y)*dx; %梯形法累积积分 figure %创建图形窗口 plot(x,-cos(x)+1,x,sc1,'.',x,sc2,'o') %画解析式和矩阵法以及梯形法积分曲线 s=int('sin(x)') %符号积分 sc3=subs(s,'x',x); %替换数值求符号积分的值 C=-sc3(1) %求积分常数 hold on %保持图像 plot(x,sc3+C,'c*') %画符号法积分曲线 grid on %加网格 fs=16; %字体大小 xlabel('\itx','FontSize',fs) %横坐标 ylabel('\intsin\itx\rmd\itx','FontSize',fs)%纵坐标 title('正弦函数的积分','FontSize',fs) %标题 legend('解析解','矩形法','梯形法','符号法')%图例 zqy4.1图 zqy4.2图 2.三角函数和指数的积分 [问题]求如下函数的积分 y = e ax sin bx 其中a = 0.5,b = 2。积分下限为0。画出积分的函数曲线。 [数学模型] 设 11e sin d sin de {e sin e cos d }ax ax ax ax I bx x bx bx b bx x a a == =-??? 11{e sin cos de }{e sin [e cos e sin d ]}ax ax ax ax ax b b bx bx bx bx b bx x a a a a =-=-+?? 因此不定积分为 221e (sin cos )ax I a bx b bx C a b =-++ 当x = 0时,I 应该为零,所以 22b C a b =+

MATLAB实验三-定积分的近似计算

实验三定积分的近似计算 一、问题背景与实验目的 利用牛顿—莱布尼兹公式虽然可以精确地计算定积分的值,但它仅适用于被积函数的原函数能用初等函数表达出来的情形.如果这点办不到或者不容易办到,这就有必要考虑近似计算的方法.在定积分的很多应用问题中,被积函数甚至没有解析表达式,可能只是一条实验记录曲线,或者是一组离散的采样值,这时只能应用近似方法去计算相应的定积分. 本实验将主要研究定积分的三种近似计算算法:矩形法、梯形法、抛物线法.对于定积分的近似数值计算,Matlab有专门函数可用. 二、相关函数(命令)及简介 1.sum(a):求数组a的和. 2.format long:长格式,即屏幕显示15位有效数字. (注:由于本实验要比较近似解法和精确求解间的误差,需要更高的精度).3.double():若输入的是字符则转化为相应的ASCII码;若输入的是整型数值则转化为相应的实型数值. 4.quad():抛物线法求数值积分. 格式: quad(fun,a,b) ,注意此处的fun是函数,并且为数值形式的,所以使用*、/、^等运算时要在其前加上小数点,即 .*、./、.^等.例:Q = quad('1./(x.^3-2*x-5)',0,2); 5.trapz():梯形法求数值积分. 格式:trapz(x,y) 其中x为带有步长的积分区间;y为数值形式的运算(相当于上面介绍的函数fun) 例:计算 0sin()d x x π ? x=0:pi/100:pi;y=sin(x); trapz(x,y) 6.dblquad():抛物线法求二重数值积分. 格式:dblquad(fun,xmin,xmax,ymin,ymax),fun可以用inline定义,也可以通过某个函数文件的句柄传递. 例1:Q1 = dblquad(inline('y*sin(x)'), pi, 2*pi, 0, pi) 顺便计算下面的Q2,通过计算,比较Q1 与Q2结果(或加上手工验算),找出积分变量x、y的上下限的函数代入方法. Q2 = dblquad(inline('y*sin(x)'), 0, pi, pi, 2*pi)例2:Q3 = dblquad(@integrnd, pi, 2*pi, 0, pi) 这时必须存在一个函数文件integrnd.m:

[整理]Matlab积分.

一.数值积分的实现方法 1.变步长辛普生法 基于变步长辛普生法,MA TLAB给出了quad函数来求定积分。该函数的调用格式为:[I,n]=quad('fname',a,b,tol,trace) 其中fname是被积函数名。a和b分别是定积分的下限和上限。tol用来控制积分精度,缺省时取tol=0.001。trace控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,缺省时取trace=0。返回参数I即定积分值,n为被积函数的调用次数。 例8-1 求定积分。 (1) 建立被积函数文件fesin.m。 function f=fesin(x) f=exp(-0.5*x).*sin(x+pi/6); (2) 调用数值积分函数quad求定积分。 [S,n]=quad('fesin',0,3*pi) S = 0.9008 n = 77 2.牛顿-柯特斯法 基于牛顿-柯特斯法,MA TLAB给出了quad8函数来求定积分。该函数的调用格式为:[I,n]=quad8('fname',a,b,tol,trace) 其中参数的含义和quad函数相似,只是tol的缺省值取10-6。?该函数可以更精确地求出定积分的值,且一般情况下函数调用的步数明显小于quad函数,从而保证能以更高的效率求出所需的定积分值。 (1) 被积函数文件fx.m。 function f=fx(x) f=x.*sin(x)./(1+cos(x).*cos(x)); (2) 调用函数quad8求定积分。 I=quad8('fx',0,pi) I = 2.4674 分别用quad函数和quad8函数求定积分的近似值,并在相同的积分精度下,比较函数的调用次数。 调用函数quad求定积分: format long; fx=inline('exp(-x)'); [I,n]=quad(fx,1,2.5,1e-10) I = 0.28579444254766 n = 65 调用函数quad8求定积分: format long; fx=inline('exp(-x)'); [I,n]=quad8(fx,1,2.5,1e-10) I = 0.28579444254754 n = 33

最新matlab求定积分之实例说明

m a t l a b求定积分之实 例说明

一、符号积分 符号积分由函数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) %注意定积分的书写格式 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)法等都是经常采用的方法。它们的基本思想都是将

用MATLAB算多元函数积分

用MATLAB算多元函数积分

————————————————————————————————作者:————————————————————————————————日期:

用MATLAB 计算多元函数的积分 三重积分的计算最终是化成累次积分来完成的,因此只要能正确的得出各累次积分的积分限,便可在MA TLAB 中通过多次使用int 命令来求得计算结果。但三重积分的积分域Ω是一个三维空间区域,当其形状较复杂时,要确定各累次积分的积分限会遇到一定困难,此时,可以借助MATLAB 的三维绘图命令,先在屏幕上绘出Ω的三维立体图,然后执行命令 rotate3d on ↙ 便可拖动鼠标使Ω的图形在屏幕上作任意的三维旋转,并且可用下述命令将Ω的图形向三个坐标平面进行投影: view(0,0),向XOZ 平面投影; view(90,0),向YOZ 平面投影; view(0,90),向XOY 平面投影. 综合运用上述方法,一般应能正确得出各累次积分的积分限。 例11.6.1计算zdv Ω ???,其中Ω是由圆锥曲面222z x y =+与平面z=1围成的闭区域 解 首先用MA TLAB 来绘制Ω的三维图形,画圆锥曲面的命令可以是: syms x y z ↙ z=sqrt(x^2+y^2); ↙ ezsurf(z,[-1.5,1.5]) ↙ 画第二个曲面之前,为保持先画的图形不会被清除,需要执行命令 hold on ↙ 然后用下述命令就可以将平面z=1与圆锥面的图形画在一个图形窗口内: [x1,y1]=meshgrid(-1.5:1/4:1.5); ↙ z1=ones(size(x1)); ↙ surf(x1,y1,z1) ↙ 于是得到Ω的三维图形如图:

MATLAB复化梯形法与龙贝格法计算定积分

姓名:樊元君学号:2012200902 日期:2012.11.06 1.实验目的: 掌握复化梯形法与龙贝格法计算定积分。 2.实验内容: 分别写出变步长梯形法与龙贝格法计算定积分的算法,编写程序上机调试出结果,要求所编程序适用于任何类型的定积分,即能解决这一类问题,而不是某一个问题。实验中以下列数据验证程序的正确 性。求。

3.程序流程图: ●变步长梯形法流程图:

●龙贝格法流程图: 4.源程序: ●变步长梯形法: function [ y ] =BTX(a,b,e) a=input('a='); b=input('b='); e=input('e='); h=(b-a); t1=((f(a)+f(b))*h)/2; t2=0; %准备初值%

while abs(t2-t1)>e %while语句控制计算精度以及控制计算时长if t2~=0 %按照变步长梯形法 h=h/2; %递推公式求二分后积分值 t1=t2; end s=0; x=a+h/2; while x

实验四 用matlab计算积分

实验四 用matlab 计算积分 4.1积分的有关理论 定积分:积分是微分的无限和,函数)(x f 在区间],[b a 上的积分定义为 ∑ ? =→??= = n i i i x b a x f dx x f I i 1 )max()(lim )(ξ 其中 . ,,2,1),,(,,1110n i x x x x x b x x x a i i i i i i n =∈-=?=<<<=--ξ从几何意义上说,对 于],[b a 上非负函数)(x f ,记分值I 是曲线)(x f y =与直线b x a x ==,及x 轴所围的曲边梯形的面积。有界连续(或几何处处连续)函数的积分总是存在的。 微积分基本定理(Newton-Leibniz 公式):)(x f 在],[b a 上连续,且 ],[),()('b a x x f x F ∈=,则有 ) ()()(a F b F dx x f b a -=? 这个公式表明导数与积分是一对互逆运算,它也提供了求积分的解析方法:为了求)(x f 的定积分,需要找到一个函数)(x F ,使)(x F 的导数正好是)(x f ,我们称)(x F 是)(x f 的原函数或不定积分。不定积分的求法有学多数学技巧,常用的有换元积分和分部积分法。从理论上讲,可积函数的原函数总是存在的,但很多被积函数的原函数不能用初等函数表示,也就是说这些积分不能用解析方法求解,需用数值积分法解决。 在应用问题中,常常是利用微分进行分析,而问题最终归结为微分的和(即积分)。一些更复杂的问题是含微分的方程,不能直接积分求解。 多元函数的积分称为多重积分。二重积分的定义为 ∑∑ ?? ??= →?+?i j j i j i y x G y x f dxdy y x f i i ),(lim ),(0 )max(2 2 ηξ 当),(y x f 非负时,积分值表示曲顶柱体的体积。二重积分的计算主要是转换为两次单积分来解决,无论是解析方法还是数值方法,如何实现这种转换,是解决问题的关键。 4.2积分的数值方法 梯形法:将],[b a 划分为若干小区间 ,. 10b x x x a n =<<<= 则 ∑? ? =-= = n i x x b a i i dx x f dx x f I 1 1 )()( 在每一小区间 ] ,[1i i x x -上)(x f 近似为一直线,用弦代替,有 )) ()((2 )(11 1 i i i i x x x f x f x x dx x f i i +-≈ --? -

matlab实验报告--定积分的近似计算 -

数学实验报告 实验序号:2 日期:2013 年11 月30日班级应数二班姓名丁慧娜学号1101114088 实验名称定积分的近似计算 实验所用软件及版本MATLAB R2012b 问题背景描述: 利用牛顿—莱布尼兹公式虽然可以精确地计算定积分的值,但它仅适用于被积函数的原函数能用初等函数表达出来的情形.如果这点办不到或者不容易办到,这就有必要考虑近似计算的方法.在定积分的很多应用问题中,被积函数甚至没有解析表达式,可能只是一条实验记录曲线,或者是一组离散的采样值,这时只能应用近似方法去计算相应的定积分. 实验目的: 1、本实验将主要研究定积分的三种近似计算算法:矩形法、梯形法、 抛物线法。 2、加深理解积分运算中分割、近似、求和、取极限的思想方法。 3、学习fulu2sum.m的程序设计方法,尝试用函数sum 改写附录1和 附录3的程序,避免for 循环。 实验原理与数学模型: 1.矩形法 根据定积分的定义,每一个积分和都可以看作是定积分的一个近似值,即

在几何意义上,这是用一系列小矩形面积近似小曲边梯形的结果,所以把这个近似计算方法称为矩形法.不过,只有当积分区间被分割得很细时,矩形法才有一定的精确度. 针对不同的取法,计算结果会有不同。 (1)左点法:对等分区间 ,在区间上取左端点,即取。 (2)右点法:同(1)中划分区间,在区间上取右端点,即取。 (3)中点法:同(1)中划分区间,在区间上取中点,即取。2.梯形法 等分区间 , 相应函数值为(). 曲线上相应的点为() 将曲线的每一段弧用过点,的弦(线性函数)来代替,这使得

每个上的曲边梯形成为真正的梯形,其面积为 ,. 于是各个小梯形面积之和就是曲边梯形面积的近似值, , 即, 称此式为梯形公式。 3.抛物线法 将积分区间作等分,分点依次为 ,,对应函数值为 (), 曲线上相应点为 (). 现把区间上的曲线段用通过三点,,的抛物线

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= -Ei(1,-log(x)) %完全椭圆函数 (2) x=0.5:0.1:0.9 sx_n=-mfun('Ei',1,-log(x)) x= 0.5000 0.6000 0.7000 0.8000 0.9000 sx_n= -0.3787 -0.5469 -0.7809 -1.1340 -1.7758 (3)%图示被函数和积分函数 clf ezplot('1/log(t)',[0.1,0.9]) gridon holdon plot(x,sx_n,'LineWidth',3) Char1='1/ln(t)'; Char2='{int_0^x}1/ln(t)dt'; title([Char1,' and ',Char2]) legend(Char1,Char2,'Location','SouthWest') 例3:计算f(t)=exp(-sin(t))在[0,4]上的定积分 注意:本题被函数之原函数无"封闭解析表达式",符号计算无法解题! 本例演示:符号计算有限性 (1)符号计算解法 symstx ft=exp(-sin(t)) sx=int(ft,t,0,4) ft=exp(-sin(t)) Warning:Explicitintegralcouldnotbefound. >Insym.intat58 sx= int(exp(-sin(t)),t=0..4) (2)数值计算解法

相关文档
最新文档