第3章微积分学.docx

上传人:b****5 文档编号:7471326 上传时间:2023-01-24 格式:DOCX 页数:27 大小:307.31KB
下载 相关 举报
第3章微积分学.docx_第1页
第1页 / 共27页
第3章微积分学.docx_第2页
第2页 / 共27页
第3章微积分学.docx_第3页
第3页 / 共27页
第3章微积分学.docx_第4页
第4页 / 共27页
第3章微积分学.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

第3章微积分学.docx

《第3章微积分学.docx》由会员分享,可在线阅读,更多相关《第3章微积分学.docx(27页珍藏版)》请在冰豆网上搜索。

第3章微积分学.docx

第3章微积分学

第3章Matlab在微积分学中的应用

在这一章里,我们将利用MATLAB解决高等数学中的许多计算问题。

我们还将学会建立一般的函数在一定程度上解决理论上的计算问题。

3.1极限

数学中的极限问题类型大概有:

极限

数学形式的例子:

数列的极限有:

一元函数的极限有:

二元函数的极限有:

以上是数学中出现的不同形式的极限。

但求极限的命令在MATLAB中是相同的,都由命令limit来完成。

其常用形式有:

limit(F,x,a)计算

limit(F,a)符号表达式F中由命令findsym(F)返回独立的变量v,计算

limit(F)符号确定同上,设为v,计算

limit(F,x,a,’right’)计算

limit(F,x,a,’left’)计算

注意:

求一极限的基本步骤为:

1.把数学形式的表达式转化为Matlab的表达式。

当然表达式由多个符号组成,并且符号都不是代表某一具体的数值,其值是一个变动的量,即所谓的符号变量。

为此,我们要建立一些必要的符号对象,如:

符号变量,符号表达式等。

2.使用求极限的命令limit来对符号表达式进行计算,其中要指明是对哪一个符号变量做极限运算;若不指定,则符号变量由命令findsym(F)来指定。

3.要指定符号变量的“极限点”以及趋于“极限点”的方向;若不指定“极限点”的值,则缺省地认为是0点。

4.总之一点,极限作的都是符号运算!

例3-1求

解:

>>symsnmx

f=(6*n^2-n+1)/(n^3-n^2+2)

g=((1+m*x)^n-(1+n*x)^m)/x^2

h=(sqrt(1+x)-2)/(x-3)

>>lim_f=limit(f,n,inf)

>>lim_g=limit(g,x,0)%或lim_g=limit(g)

>>lim_h=limit(h,x,3,'right')

运算结果是:

lim_f=

0

lim_g=

-1/2*m^2*n+1/2*n^2*m

lim_h=

1/4

例3-2求

由于求二重极限在数学上没有方法可循,因此在Matlab中还没有一个统一的命令能求一个一般的二重极限,只能求在理论上已经证明与路径无关的函数,即把二重极限化成二次极限来计算:

解:

>>symsxy

>>f_xy='log(x+exp(y))/sqrt(x^2+y^2)';

>>lim_f_xy=limit(limit(f_xy,x,1),y,0)

运行的结果是:

lim_f_xy=

log

(2)

3.2微积分

高等数学中的微积分是大学数学中的重要部分,内容庞杂,应用广泛,归纳起来有:

函数的导数,函数的积分,泰勒展式,

-函数,欧拉函数等。

下面先讲函数的导数。

3.2.1函数的导数

数学中的导数类型大概有:

导数

例如:

一元函数的导数:

y=e

sinx-7cosx+5x

y=

二元函数的导数:

z=arctan

z=ln(

复合函数的导数:

y=f(x)=a+bx+

f(x)=

隐函数的导数:

arctg

F(x,x+y,x+y+z)=0,求

数学上虽然有导数与偏导数之分,但它们在Matlab中有统一的命令diff。

其常使用形式为:

diff(f,v)计算

diff(f,v,n)计算

diff(f)用命令findsym找出表达式f中的独立变量,设为v,即v=findsym(F),计算

diff(f,n)独立变量确定同上,设为v,计算

例3-3已知y=

计算

解:

>>x=sym('x')

>>y=(sqrt(x)+cos(x))/(x-1)-7*x^2;

>>Dy=diff(y)

>>D3y=diff(y,3)

运行结果为:

Dy=

(1/2/x^(1/2)-sin(x))/(x-1)-(x^(1/2)+cos(x))/(x-1)^2-14*x

D3y=

(3/8/x^(5/2)+sin(x))/(x-1)-3*(-1/4/x^(3/2)-cos(x))/(x-1)^2+6*(1/2/x^(1/2)-sin(x))/(x-1)^3-6*(x^(1/2)+cos(x))/(x-1)^4

例3-4已知z=ln(

解:

>>x=sym('x');

y=sym('y');

z=log(sqrt(x)+sqrt(y));

result=x*diff(z,x)+y*diff(z,y);

simple(result)

计算的结果为:

result=

1/2

例3-5已知y=ln(x

),x=t

解:

在复合函数的计算中,一定要注意变量赋值的先后顺序

>>symstx

>>x=t^2*sin(t);

>>y=log(x^3);

>>dydt=diff(y,t)

>>d2yd2t=diff(dydt,t)/diff(x,t)

计算结果为:

dydt=

(6*t^5*sin(t)^3+3*t^6*sin(t)^2*cos(t))/t^6/sin(t)^3

d2yd2t=

((30*t^4*sin(t)^3+36*t^5*sin(t)^2*cos(t)+6*t^6*sin(t)*cos(t)^2-3*t^6*sin(t)^3)/t^6/sin(t)^3-6*(6*t^5*sin(t)^3+3*t^6*sin(t)^2*cos(t))/t^7/sin(t)^3-3*(6*t^5*sin(t)^3+3*t^6*sin(t)^2*cos(t))/t^6/sin(t)^4*cos(t))/(2*t*sin(t)+t^2*cos(t))

例3-6已知

arctg

解:

设方程F(x,y,z)=0确定了函数z=z(x,y),则

=-

,再用类似的计算方法,

可以计算

>>symsxyz

>>F=atan((y+z)/x)-log(x+y+z)

>>dFdx=diff(F,x)

>>dFdz=diff(F,z)

>>dZdx=-dFdx/dFdz

>>dZdxdy=diff(dZdx,y)

>>dZdxdz=diff(dZdx,z)

>>d2Zdxdy=-dZdxdy/dZdxdz

计算结果为:

dFdx=

-(y+z)/x^2/(1+(y+z)^2/x^2)-1/(x+y+z)

dFdz=

1/x/(1+(y+z)^2/x^2)-1/(x+y+z)

dZdx=

((y+z)/x^2/(1+(y+z)^2/x^2)+1/(x+y+z))/(1/x/(1+(y+z)^2/x^2)-1/(x+y+z))

dZdxdy=

(1/x^2/(1+(y+z)^2/x^2)-2*(y+z)^2/x^4/(1+(y+z)^2/x^2)^2-1/(x+y+z)^2)/(1/x/(1+(y+z)^2/x^2)-1/(x+y+z))-((y+z)/x^2/(1+(y+z)^2/x^2)+1/(x+y+z))/(1/x/(1+(y+z)^2/x^2)-1/(x+y+z))^2*(-2/x^3/(1+(y+z)^2/x^2)^2*(y+z)+1/(x+y+z)^2)

dZdxdz=

(1/x^2/(1+(y+z)^2/x^2)-2*(y+z)^2/x^4/(1+(y+z)^2/x^2)^2-1/(x+y+z)^2)/(1/x/(1+(y+z)^2/x^2)-1/(x+y+z))-((y+z)/x^2/(1+(y+z)^2/x^2)+1/(x+y+z))/(1/x/(1+(y+z)^2/x^2)-1/(x+y+z))^2*(-2/x^3/(1+(y+z)^2/x^2)^2*(y+z)+1/(x+y+z)^2)

d2Zdxdy=

(-(1/x^2/(1+(y+z)^2/x^2)-2*(y+z)^2/x^4/(1+(y+z)^2/x^2)^2-1/(x+y+z)^2)/(1/x/(1+(y+z)^2/x^2)-1/(x+y+z))+((y+z)/x^2/(1+(y+z)^2/x^2)+1/(x+y+z))/(1/x/(1+(y+z)^2/x^2)-1/(x+y+z))^2*(-2/x^3/(1+(y+z)^2/x^2)^2*(y+z)+1/(x+y+z)^2))/((1/x^2/(1+(y+z)^2/x^2)-2*(y+z)^2/x^4/(1+(y+z)^2/x^2)^2-1/(x+y+z)^2)/(1/x/(1+(y+z)^2/x^2)-1/(x+y+z))-((y+z)/x^2/(1+(y+z)^2/x^2)+1/(x+y+z))/(1/x/(1+(y+z)^2/x^2)-1/(x+y+z))^2*(-2/x^3/(1+(y+z)^2/x^2)^2*(y+z)+1/(x+y+z)^2))

3.2.2一重积分

3.2.2.1不定积分

不定积分是高等数学中的基本运算。

数学中的许多不定积分的原函数不能用初等函数来表示,因此在Matlab中,有些函数的原函数是求不出来的。

Matlab提供了几个用于求函数不定积分的命令,如:

int,intwave,fnint(用于专门函数的积分)。

其中函数int是最常用的,功能强大的积分函数。

下面我们介绍函数int的使用格式:

F=int(f)

F=int(f,var)

参数说明:

·f:

被积函数;

·var:

积分变元;若没有指定,则对变量v=findsym(f)积分;

·F:

函数f的原函数。

F中没有常数C。

例3-7计算

解:

symsxyz

>>f=exp(x*y+z);

>>F1=int(f)

F1=

1/y*exp(x*y+z)

>>F2=int(f,z)

F2=

exp(x*y+z)

3.2.2.2定积分及广义积分

数学中的定积分有时和不定积分使用的方法不同。

我们这里所讲的广义积分其积分区间端点中至少有一个为无穷,而函数在该区间内是连续的。

在Matlab中,只需在命令int中加入积分上下限即可。

F=int(f,a,b)

F=int(f,var,a,b)

参数说明:

·f:

被积函数;

·a,b:

积分上下限;a,b可为无穷大∞(若为负无穷大,则为:

—∞);

·F:

函数的积分值。

有时为无穷大。

定积分的计算,也可调用函数quad()或quad8(),其格式为:

[y,n]=quad(‘f’,a,b,tol)

[y,n]=quad8(‘f’,a,b,tol)

参数说明:

·f:

自定义的被积函数;

·a,b:

积分上下限;

·n:

计算过程中调用被积函数f的次数;tol:

精度要求,quad()的默认值为:

tol=1e-3,quad8()的默认值为:

tol=1e-6;

·quad()函数采用的是Simpson方法计算定积分的近似值;

·quad8()函数采用的是NewtonCotes方法计算定积分的近似值,其精度比前者更高。

例3-8计算

解:

f=1/(x^2+2*x+3);

>>F1=int(f,2,pi)

F1=

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

>>F2=int(f,-inf,inf)

F2=

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

例3-9计算

解:

先定义函数,文件名:

f.m

functiony=f(x)

y=1/sqrt(2*pi)*exp(-x.^2/2);

保存后,在命令窗口键入

formatlong

>>[y,n]=quad('f',-3,3)

则显示结果为:

y=

0.99729991863154

n=

57(表示被积函数f的调用次数)

3.2.3多重积分

3.2.3.1二重积分

一种方法:

由于积分区域的多样性和复杂性,通过人为地结合积分区域的图形,把二重积分转化为二次积分,用int命令进行计算;另一种方法:

利用Matlab提供的函数dblquad和quad2dggen计算,其调用格式如下:

·二重数值积分(在矩形区域上),使用dblquad函数,格式为:

y=dblquad(‘f’,x_m,x_M,y_m,y_M,tol)

·一般二重积分(在数值积分工具箱(NIT,即NumericalIntegrationToolbox)中提供了quad2dggen函数,该函数可从网上下载,网址:

fttp:

//

gration/nit.zip,安装之后,将其路径加载到Matlab路径下),格式为:

I=quad2dggen(被积函数名,下限函数名,上限函数名,y_m,y_M,tol)

例3-10计算

其中D为直线y=x和抛物线y=x2所围部分。

解:

由数学方法可得:

(1)画出积分区域示意图

>>symsxy

>>f=(2-x-y)/2;

>>y1=x;

>>y2=x^2;

>>ezplot(y1);holdon

>>ezplot(y2);

>>axis([0,2,0,2])

(2)确定积分限

a=fzero('x-x^2',0)

a=

0

>>b=fzero('x-x^2',1)

b=

1

这是第2次积分的上下限。

(3)积分运算

f_dy=int(f,y,x^2,x)%先对y积分

f_dy=

x-5/4*x^2-1/2*x*(x-x^2)+1/4*x^4

>>I=int(f_dy,a,b)%再对x积分

I=

11/120

例3-11试求下面的二次积分

解:

先定义函数,函数名为:

my2dfun.m

functionz=my2dfun(x,y)

globalkk;kk=kk+1;%定义全局变量,测定被积函数调用次数

z=exp(-x.^2/2).*sin(x.^2+y);

保存后在命令窗口执行下列命令:

clear

>>globalkk;kk=0;

>>y=dblquad('my2dfun',-2,2,-1,1),kk

y=

1.57449318974494

kk=

1038(表示被积函数调用次数)

3.2.3.2三重积分

三重积分的过程与二重积分过程相同,也是把三重积分转化成三次积分来计算,只不过在确定积分限时更繁琐而已。

在确定积分限时一般要结合三维的积分区域,所以一般先画出积分区域。

例3-12计算

其中区域V为三个坐标面及平面:

所围成的闭区域。

解:

由数学方法可得:

(1)画出积分区域示意图。

由于图形比较简单,所以我们没有画出。

(并且Matlab没有画三维符号函数的命令)

symsxyz

f=x;

(2)确定积分限。

a=0;b=1;

phi1=0;

phi2=(1-x)/2;

psi1=0;

psi2=1-x-2*y;

(3)积分计算。

f_dz=int(f,z,psi1,psi2)

f_dzdy=int(f_dz,y,phi1,phi2)

I=int(f_dzdy,x,a,b)

计算结果为:

f_dz=

x*(1-x-2*y)

f_dzdy=

-x*(1/2-1/2*x)^2+x*(1-x)*(1/2-1/2*x)

I=

1/48

3.2.4Taylor展式

数学定理表明:

若f(x)在x=0点附近有直到n+1阶连续导数,那么:

其中:

实际上是要将函数f(x)表示成xn(n从0到无穷)的和的形式。

这完全可以用Matlab提供的命令taylor来完成展开工作。

其常用的使用形式为:

·taylor(f)

·taylor(f,n)

·taylor(f,v)

·taylor(f,n,a)

参数说明:

f:

待展开的函数表达式,可以不用单引号生成;

n:

把函数展开到n阶,若不包含n,则缺省地展开到6阶;

v:

对函数f中的变量v展开,若不包含v,则对变量v=findsym(f)展开;

a:

Taylor展式的扩充功能,对函数f在x=a点展开。

例3-13计算

(1)把y=ex展开到6阶;

(2)把y=lnx在x=1点展开到6阶;

(3)把y=sinx在x=π/2点展开到6阶;

(4)把y=xt关于变量t展开到3阶。

解:

symsxt

y1=taylor(exp(-x))

y2=taylor(log(x),6,1)

y3=taylor(sin(x),pi/2,6)

y4=taylor(x^t,3,t)

运行结果为:

y1=

1-x+1/2*x^2-1/6*x^3+1/24*x^4-1/120*x^5

y2=

x-1-1/2*(x-1)^2+1/3*(x-1)^3-1/4*(x-1)^4+1/5*(x-1)^5

y3=

1-1/2*(x-1/2*pi)^2+1/24*(x-1/2*pi)^4

y4=

1+log(x)*t+1/2*log(x)^2*t^2

3.2.5Fourier级数

数学定理表明:

设函数f(x)已经展开为全区间上的一致收敛的三角级数:

其中:

虽然Matlab中还没有提供一个专门的命令用于求解Fourier级数,但根据上面的数学公式,也可以编写一个函数文件sfour.m,用于求函数f在区间

上的Fourier级数的系数:

function[a0,ak,bk]=sfour(f)

symsxn

a0=int(f,-pi,pi)/pi

an=int(f*cos(n*x),-pi,pi)/pi;

an=simple(an)

bn=int(f*sin(n*x),-pi,pi)/pi;

bn=simple(bn)

有了上面的函数,我们可以求得一些函数的Fourier级数的系数。

例3-14求函数y=x的Fourier级数的系数

解:

调用上面定义的函数sfour来计算:

>>symsx

>>f=x;

>>[a0,ak,bk]=sfour(f)

a0=

0

an=

0

bn=

2/n^2/pi*sin(pi*n)-2/n*cos(pi*n)

注:

在Matlab中,化简命令不能把sin(n*pi)和cos(n*pi)转化为(-1)^n。

所以bn的结果较长。

3.2.6梯度

设u=u(x,y,z)是一数量函数,点p(xp,yp,zp)是等高面u=u(x,y,z)=C上的任一点,则称向量

为函数u=u(x,y,z)在p点的梯度。

1.近似梯度函数gradient。

使用形式:

(1)[FX,FY]=gradient(F)

(2)[FX,FY]=gradient(F,H)

(3)[FX,FY]=gradient(F,HX,HY)

(4)[FX,FY,FZ]=gradient(F)

(5)[FX,FY,FZ]=gradient(F,HX,HY,HZ)

(6)[FX,FY,FZ,…]=gradient(F,…)

参数说明:

(1)F:

待求梯度的数值矩阵。

F可以为向量、二维矩阵、三维矩阵;

(2)FX,FY,FZ:

矩阵F在x、y、z方向上的数值梯度;

(3)H:

H为一标量,作为各个方向上各点之间的步长;

(4)HX,HY,HZ:

矩阵F在x、y、z方向上的具体步长。

HX,HY,HZ可为标量或与矩阵F各个方向上同维的向量。

例3-15计算函数

数值梯度,且以图形显示。

解:

[x,y]=meshgrid(-2:

.2:

2,-2:

.2:

2);%由两个向量生成的矩阵

>>z=x.*exp(-x.^2-y.^2);

>>[px,py]=gradient(z,0.2,0.2);

>>contour(z)%等高线图

>>holdon

>>quiver(px,py)%向量图

运行结果为:

 

数值梯度图

2.函数梯度和方向导数jacobian。

使用形式:

jacobian(f,v)

参数说明:

f:

函数向量或标量,当f为标量时,jacobian(f,v)=gradient(f);

v:

自变量向量或者单个变量。

例3-16求:

(1)u=xyz在点播M(1,1,1)处的梯度;

(2)u=x2+2y2+3z2+xy+3x-2y-6z在点O(0,0,0)及A(1,2,3)处的梯度大小。

symsxyz

>>u1=x*y*z;

>>u2=x^2+2*y^2+3*z^2+x*y+3*x-2*y-6*z;

>>v=[x,y,z];

>>J1=jacobian(u1,v);

>>J2=jacobian(u2,v);

J1_M=subs(subs(subs(J1,x,1),y,1),z,1)%subs(x,1)用1替换x,计算其值

J1_M=

111

>>J2_O=subs(subs(subs(J2,x,0),y,0),z,0)

J2_O=

3-2-6

>>J2_A=subs(subs(subs(J2,x,1),y,2),z,3)

J2_A=

7712

3.3最小二乘法

在生产实践中,常常需要根据实际测量得到的一系列数据找出函数关系,通常叫做配曲线或找经验公式。

本节我们介绍一种找直线的方法,它是广泛使用的一种处理数据的方法。

例3-17在某实验中测得数据如下:

X

104

180

190

177

147

134

150

191

204

121

Y

100

200

210

185

155

135

170

205

235

125

由此要推出x和y的函数关系:

y=f(x)。

解:

先把这些数据点描绘出来,如图所示,观察x和y大概满足的函数关系。

先把x和y进行适当的调整,使自变量x的值从小到大排列。

>>x=[104180190177147134150191204121];

>>y=[100200210185155135170205235125];

>>[x,i]=sort(x)

x=

104121134147150177180190191204

i=

11065742389

>>y=y(i)

y=

100125135155170185200210205235

>>plot(x,y,'r*')

>>holdon

这些数据点大致分布在一条直线上,即x和y有线性函数关系:

y=ax+b,由数学推断过程得:

其中n为

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 中考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1