MATLAB在微积分中的应用

MATLAB在微积分中的应用

MATLAB是MathWorks公司于1982年推出的一套高性能的数值计算和可视化数学软件.被誉为“巨人肩上的工具”.用Matlab编写程序犹如在演算纸上排列出公式与求解问题,所以又被称为演算纸式科学算法语言.在这个环境下,对所要求解的问题,用户只需简单地列出数学表达式,其结果便以数值或图形方式显示出来.

§1 MATLAB入门

1.1 matlab的数值计算

运行MATLAB的可执行文件,进入Matlab工作窗口,在提示符“>>”后输入算术表达式,按Enter键即可得到该表达式的值,就象在计算器中运算一样.加、减、乘、除、乘方的算符依次为+、-、*、/、^.

例1 计算2+3×5的值.

解 在Matlab工作区输入命令:2+3*5^9,按Enter键,可得计算结果

2+3*5^9 ans =

5859377

MATLAB会将最近一次的运算结果直接存入一变量ans,变量ans代表MATLAB运算後的答案,并将其数值显示到屏幕上.也可以将计算结果赋值给一个自定义的变量,自定义变量应遵循以下命名规则:

(1)MATLAB对变量名的大小写是敏感的.

(2)变量的第一个字符必须为英文字母,而且不能超过31个字符. (3)变量名可以包含下划线、数字,但不能为空格符、标点.

例2 计算11.31.9

0.239

sin1的值,并将其赋值给变量a.

解 a=11.3*1.9^0.23+sin(1)

a =

13.9391

如果在上述的例子结尾加上”;”,则计算结果不会显示在指令视窗上,要得知计算值只须键入该变量名即可.

MATLAB可以将计算结果以不同的精确度的数字格式显示,我们可以在命令窗口的File 菜单下点击preferences子菜单,在随之打开的preferences对话框中,选取Command Window选项,设置Numerical Format参数,或者直接在matlab工作区键入以下指令:format short (这是默认的), format long等.

- 1 -

1.2 Matlab的数组运算

Matlab数组是Matlab进行运算的单元.创建数组就像我们在纸上写一个数组一样,元素与元素用“,”号或空格进行分隔,行与行用“;”号进行分隔.

例3 命令a=[1 2 3 4 5 6]建立一个1行6列的数组. 该命令与a=[1,2,3,4,5,6]是一样的.

命令b=[1 2 3;4 5 6]建立一个2行3列的数组. 数组运算的运算符与数值运算一样. 例4 a=[1 1 1;2 2 2] (建立数组a) a =

1 1 1 2 2 2

b=[3 3 3;4 4 4] (建立数组b) b =

3 3 3 4 4 4

a+b (求数组a与数组b的和) ans =

4 4 4 6 6 6

a-b (求数组a与数组b的差) ans =

-2 -2 -2 -2 -2 -2

a+3 (数组a的每一个元素都加上3) ans =

4 4 4 5 5 5

2*b (数组b的每一个元素都乘以2) ans =

6 6 6 8 8 8

两个同类型数组的对应元素相乘除的运算符是“./”和“.*”. 例5 a.*b (a的对应元素与b的对应元素相乘) ans =

3 3 3 8 8 8

a./b (a的对应元素除以b的对应元素) ans =

- 2 -

0.[1**********]333 0.[1**********]333 0.[1**********]333 0.[1**********]000 0.[1**********]000 0.[1**********]000

运算符“./”及“.*”应与运算符“/”及“*”相区别,a*b表示矩阵a与b的乘积,a/b表示矩阵a乘以矩阵b的逆矩阵.

例6 a=[1 2;2 1] (建立矩阵a) a =

1 2 2 1

b=[1 3;0 1] (建立矩阵b) b =

1 3 0 1

a*b (求矩阵a与矩阵b的乘积ab) ans =

1 5 2 7

a/b (求矩阵a与矩阵b的逆矩阵的乘积) ans =

1 -1 2 -5

运算符“^”表示方阵的幂,而运算符“.^”表示数组中每一个元素的幂. 例7 a^2 (矩阵a的平方) ans =

5 4 4 5

a.^2 (矩阵(数组)a的每一个元素的平方) ans =

1 4 4 1

1.3 Matlab的符号运算

matlab可以进行符号运算,需要预先定义符号变量.使用指令sym或syms定义符号变量.

例8 a=sym(‘x’) (将符号变量x赋值给变量a) a = x

sin(a)/cos(a) (符号表达式sin(a)/cos(a)) ans =

sin(x)/cos(x)

- 3 -

syms x y (定义符号变量x和y)

b=(x+y)^2-4*x*y (将符号表达式赋值给变量b) b=

(x+y)^2-4*x*y

a+b (求变量a与b的和) ans =

x+(x+y)^2-4*x*y

1.4 Matlab 的数学常数和函数

Matlab数学常数如下: pi 数学常数 inf 无穷大 eps 最小的浮点数

§2 MATLAB绘制一元函数的图形

2.1 常用命令

matlab绘图命令比较多,我们选编一些常用命令,并简单说明其作用,这些命令的调用格式,可参阅例题及使用帮助help查找.

表1 二维绘图函数

- 4 -

表2 基本线型和颜色

表3 二维绘图工具

表4 axis命令

linspace 创建数组命令,调用格式为:

x=linspace(x1,x2,n),创建了x1到x2之间有n个数据的数组.

funtool 函数工具,在matlab指令窗键入funtool可打开“函数计算器”图形用户界面.

2.2 绘制函数图形举例

- 5 -

例1 画出ysinx的图形.

解 首先建立点的坐标,然后用plot命令将这些点绘出并用直线连接起来,采用中学五点作图法,选取五点(0,0)、(,1)、(,0)、(,1)、(2,0).

22

输入命令

x=[0,pi/2,pi,3*pi/2,2*pi];y=sin(x);plot(x,y)

这里分号表示该命令执行结果不显示.从图上看,这是一条折线,与我们熟知的正弦曲线误差较大,这是由于点选取的太少的缘故。可以想象,随点数增加,图形越来越接近

ysinx的图象.例如,在0到2之间取30个数据点,绘出的图形与ysinx的图象已

经非常接近了.

x=linspace(0,2*pi,30);y=sin(x);plot(x,y).

也可以如下建立该图形.

x=0:0.1:2*pi;y=sin(x);plot(x,y)

还可以给图形加标记、格栅线. x=0:0.1:2*pi; y=sin(x);

plot(x,y,’r—‘) title(‘正弦曲线’) xlabel(‘自变量 x’) ylabel(‘函数y=sinx’) text(5.5,0,’y=sinx’) grid

上述命令第三行选择了红色虚线,第四行给图加标题“正弦曲线”,第五行给x轴加标题“自变量x”,第六行给y轴加标题“函数ysinx”,第七行在点(5.5,0)处放置文本“ysinx”,第八行给图形加格栅线

.

- 6 -

例2 画出y2x和y(1/2)x的图象.

解 输入命令

x=-4:0.1:4;y1=2.^x;y2=(1/2).^x;plot(x,y1,x,y2); axis([-4,4,0,8])

matlab允许在一个图形中画多条曲线.plot(x1,y1,x2,y2,x3,y3)指令绘制

y1f(x1),y2f(x2)等多条曲线.matlab自动给这些曲线以不同颜色.

例3 画出yarctgx的图象. 解 输入命令

从图上看,yarctgx是有界函数,y是其水平渐近线

.

2

例4 在同一坐标系中画出ysinx,yx,ytgx的图象. 解 输入命令

x=-pi/2:0.1:pi/2;y1=sin(x);y2=tan(x); plot(x,x,x,y1,x,y2) axis equal

axis([-pi/2,pi/2,-3,3]) grid

从图上看,当x0时,sinxxtgx,当x0时,sinxxtgx,yx是ysinx和ytgx在原点的切线,因此,当x1时,sinxx,tgxx.

例5 画出y10x1及ylg(x1)的图形.

解 输入命令

x1=-1:0.1:2;y1=10.^x1-1;x2=-0.99:0.1:2;y2=log10(x2+1); plot(x1,y1,x2,y2)

- 7 -

从图上看,这两条曲线与我们所知的图象相差很远,这是因为坐标轴长度单位不一样的缘故.y10x1与ylg(x1)互为反函数,图象关于yx对称,为更清楚看出这一点,我们再画出yx的图象.

hold on

x=-1:0.01:2;y=x;plot(x,y,’r’) axis([-1,2,-1,2]) axis square;hold off

plot语句清除当前图形并绘出新图形,hold on语句保持当前图形

.

例6 画出心形线r3(1cosa)的图象.

解 输入命令

x=-2*pi:0.1:2*pi;r=3*(1+cos(x));polar(x,r) 例7 画出星形线x3cos3t,y3sin3t的图象. 解 这是参数方程,可化为极坐标方程. r

(cosa

sina)2

- 8 -

输入命令

x=0:0.01:2*pi;

r=3./(((cos(x)).^2).^(1/3)+((sin(x)).^2).^(1/3)).^(3/2); polar(x,r)

注意,如果建立r与t的关系,此时t只是参数,不是极坐标系下的极角.

练习

1.画出yarcsinx的图象.

2.画出ysecx在[0,]之间的图象. 3.在同一坐标系中画出y4.画出f(x)(1性.

5.画出y1ln(x2)及其反函数的图象. 6.画出y

x)3

x,yx2,y

x)3

x,yx3,yx的图象.

(1的图象,并根据图象特点指出函数f(x)的奇偶

x21及其反函数的图象.

§3 利用MATLAB求一元函数的极限

3.1 常用命令

matlab求极限命令可列表如下:

matlab代数方程求解命令solve调用格式.

- 9 -

solve(函数f(x)) 给出f(x)0的根.

3.2 理解极限概念

数列{xn}收敛或有极限是指当n无限增大时,xn与某常数无限接近或xn趋向于某一定值,就图形而言,也就是其点列以某一平行与y轴的直线为渐近线. 例1 观察数列{n当n时的变化趋势.

n1

解 输入命令

n=1:100;xn=n./(n+1)

得到该数列的前100项,从这前100项看出,随n的增大,

与1非常接近,画出x的

n

n1

图形.

stem(n,xn) 或

for i=1:100;

plot(n(i),xn(i),’r’) hold on end

其中for „ end语句是循环语句,循环体内的语句被执行100次,n(i)表示n的第i个分量.由图可看出,随n的增大,点列与直线y1无限接近,因此可得结论 lim

n=1. nn1

对函数的极限概念,也可用上述方法理解

.

例2 分析函数f(x)xsin,当x0时的变化趋势.

x

解 画出函数f(x)在[1,1]上的图形. x=-1:0.01:1;y=x.*sin(1./x);plot(x,y)

- 10 -

从图上看,xsin随着x的减小,振幅越来越小趋近于0,频率越来越高作无限次振荡.x

作出yx的图象.

hold on;plot(x,x,x,-x)

例3 分析函数f(x)sin当x0时的变化趋势. x

解 输入命令

x=-1:0.01:1;y=sin(1./x);plot(x,y)

从图上看,当x0时,sin在-1和1之间无限次振荡,极限不存在.仔细观察该x

图象,发现图象的某些峰值不是1和-1,而我们知道正弦曲线的峰值是1和-1,这是由于自变量的数据点选取未必使sin取到1和-1的缘故,读者可试增加数据点,比较它们的结x

果.

例4 考察函数f(x)当x0时的变化趋势. x

解 输入命令

x=linspace(-2*pi,2*pi,100);y=sin(x)./x;plot(x,y)

x

limsinx=1. x0x从图上看,在x0附近连续变化,其值与1无限接近,可见 例5 考察f(x)(11)x当x时的变化趋势. x

解 输入命令

x=1:20:1000;y=(1+1./x).^x;plot(x,y)

从图上看,当x时,函数值与某常数无限接近,我们知道,这个常数就是e. - 11 -

3.3 求函数极限

例6 求lim1(1xx13

x31).

解 输入命令

syms x;f=1/(x+1)-3/(x^3+1);limit(f,x,-1)

得结果ans=-1.画出函数图形.

ezplot(f);hold on;plot(-1,-1,’r.’)

例7 求limtgxsinx. x0x3

解 输入命令

limit((tan(x)-sin(x))/x^3)

得结果 ans=1/2

例8 求lim(x1x1)x. x

解 输入命令

limit(((x+1)/(x-1))^x,inf)

得结果 ans=exp(2)

例9 求xlim0xx.

解 输入命令

limit(x^x,x,0,’right’)

得结果 ans =1

例10 求xlim0(ctgx).

解 输入命令

limit((cot(x))^(1/log(x)),x,0,’right’)

得结果 ans=exp(-1).

- 12 -

3.4 求方程的解

例11 解方程ax2bxc0.

解 输入命令

syms a b c x;

f=a*x^2+b*x+c;

solve(f)

得结果 ans=

[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))]

[ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]

如果不指明自变量,系统默认为x,也可指定自变量,比如指定b为自变量. solve(f,b)

得结果 ans=-(a*x^2+c)/x.

例12 解方程x55x10.

解 输入命令

f=x^5-5*x-1;solve(f)

得结果 ans=

[ -1.[***********][1**********]53]

[ -.[***********][1**********]959]

[.[***********][1**********]791e-1

-1.[***********][1**********]56*i]

[.[***********][1**********]791e-1

+1.[***********][1**********]56*i]

[ 1.[***********][1**********]33]

画出图象

ezplot(f,[-2,2]);hold on;plot([-2,2],[0,0])

练习

1.计算下列函数的极限. (1)lim1sin2x. x1cos4x (2)lim(1cosx)3secx. x

2

(3)lim

x

2. (2x)2

2xe2 (4)lim

x

0. - 13 -

2.解方程x2x10.

3.解方程x3sinx1.

4.解方程x3pxq0.(p、q为实数)

§4 导数的计算

4.1 常用命令

建立符号变量命令sym和syms调用格式

x=sym(`x`), 建立符号变量x;

syms x y z , 建立多个符号变量x,y,z;

matlab求导命令diff调用格式

diff(函数f(x)) , 求f(x)的一阶导数f(x);

diff(函数f(x), n) , 求f(x)的n阶导数f

4.2 导数一般概念

导数是函数的变化率,几何意义是曲线在一点处的切线斜率.

(1) 导数是一个极限值

x 例1 设f(x)e,用定义计算f(0). (n)(x)(n是具体整数).

解 f(x)在某一点x0的导数定义为极限: limx0f(x0x)f(x0) x

我们记hx,输入命令:

syms h;limit((exp(0+h)-exp(0))/h,h,0)

得结果:ans=1.可知f(0)1

(2) 导数的几何意义是曲线的切线斜率

例2 画出f(x)ex在x0处(P(0,1))的切线及若干条割线,观察割线的变化趋势.

- 14 -

解 在曲线yex上另取一点M(h,eh),则PM的方程是: y1eh1.即 x0h0

h yx1 h

取h3,2,1,0.1,0.01,分别作出几条割线.

h=[3,2,1,0.1,0.01];a=(exp(h)-1)./h;x=-1:0.1:3;

plot(x,exp(x),’r’);hold on

for i=1:5;

plot(h(i),exp(h(i)),’r.’)

plot(x,a(i)*x+1)

end

axis square

作出yex在x0处的切线yx1

plot(x,x+1,’r’)

从图上看,随着M与P越来越接近,割线PM越来越接近曲线的割线.

4.3 求一元函数的导数

(1)yf(x)的一阶导数

例3 求ysin(x)的导数. x

解 打开matlab指令窗,输入指令

dy_dx=diff(sin(x)/x).

得结果

dy_dx=cos(x)/x-sin(x)/x^2.

matlab的函数名允许使用字母、空格、下划线及数字,不允许使用其他字符,在这里我们用dy_dx表示yx.

例4 求yln(sinx)的导数.

解 输入命令

dy_dx=diff(log(sin(x))).

得结果

dy_dx=cos(x)/sin(x).

- 15 -

在matlab中,函数lnx用log(x)表示,而log10(x)表示lgx.

例5 求y(x22x)20的导数.

解 输入命令 dy_dx=diff((x^2+2*x)^20).

得结果

dy_dx=20*(x^2+2*x)^19*(2*x+2).

注意2x输入时应为2*x.

例6 求yxx的导数.

解 输入命令 dy_dx=diff(x^x).

得结果

dy_dx =x^x*(log(x)+1).

利用matlab 命令diff一次可以求出若干个函数的导数.

例7 求下列函数的导数: x22x5, y2cosx22cos2x,

y34sinx, y4lnlnx. y1

解 输入命令

a=diff([sqrt(x^2- 2*x+5),cos(x^2)+2*cos(2*x),4^(sin(x)),

log(log(x))]).

得结果

a=

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

4^sin(x)*cos(x)*log(4), 1/x/log(x)].

dy1_dx=a(1).

dy1_dx=1/2/(x^2-2*x+5)^(1/2)*(2*x-2).

dy2_dx=a(2).

dy2_dx=-2*sin(x^2)*x-4*sin(2*x).

dy3_dx=a(3).

dy3_dx=4^sin(x)*cos(x)*log(4).

dy4_dx=a(4).

dy4_dx=1/x/log(x).

由本例可以看出,matlab函数是对矩阵或向量进行操作的,a(i)表示向量a的第i个分量.

(2) 参数方程所确定的函数的导数

设参数方程

- 16 - xx(t)dyy(t)确定函数yf(x),则y的导数. dxx(t)yy(t)

xa(tsint)dy 例8 设,求. dxya(1cost)

解 输入命令

dx_dt=diff(a*(t-sin(t)));dy_dt=diff(a*(1-cos(t)));

dy_dx=dy_dt/dx_dt.

得结果

dy_dx=sin(t)/(1-cos(t)).

其中分号的作用是不显示结果.

4.4 求高阶导数

例9 设f(x)x2e2x ,求f(20)(x).

解 输入命令 diff(x^2*exp(2*x),x,20).

得结果

ans =

99614720*exp(2*x)+20971520*x*exp(2*x)+1048576*x^2*exp(2*x).

练习

1.求下列函数的导数: (1)y(x1)(11) ; (2)yxsinxlnx; x

(3)y2sin2 ; (4)yln(x2xx2a2).

2.求下列参数方程所确定的函数的导数:

xt4xln(1t2) (1) ; (2) . y4tytarctgt

3.设yexcosx,求y(4).

4.验证yexsinx满足关系式:

y2y2y0.

§5 matlab自定义函数与导数应用

函数关系是指变量之间的对应法则,这种对应法则需要我们告诉计算机,这样,当我

- 17 -

们输入自变量时,计算机才会给出函数值,matlab软件包含了大量的函数,比如常用的正弦、余弦函数等.matlab允许用户自定义函数,即允许用户将自己的新函数加到已存在的matlab函数库中,显然这为matlab提供了扩展的功能,无庸置疑,这也正是matlab的精髓所在.因为matlab的强大功能就源于这种为解决用户特殊问题的需要而创建新函数的能力.matlab自定义函数是一个指令集合,第一行必须以单词function作为引导词,存为具有扩展名“.m”的文件,故称之为函数M-文件.

5.1 函数M-文件的定义格式

函数M-文件的定义格式为:

function 输出参数=函数名(输入参数)

函数体

„„

函数体

一旦函数被定义,就必须将其存为M-文件,以便今后可随时调用.比如我们希望建立函数f(x)x22x1,在matlab工作区中输入命令:

syms x;y=x^2+2*x+1;

不能建立函数关系,只建立了一个变量名为y的符号表达式,当我们调用y时,将返回这一表达式.

y

y=x^2+2*x+1

当给出x的值时,matlab不能给出相应的函数值来.

x=3;y

y=x^2+2*x+1

如果我们先给x赋值.

x=3;y=x^2+2*x+1

得结果:y=16

若希望得出y|x2的值,输入:

x=2;y

得结果:y=16,不是x2时的值.读者从这里已经领悟到在matlab工作区中输入命令:y=x^2+2*x+1不能建立函数关系,如何建立函数关系呢?我们可以点选菜单Fill\New\M-fill打开matlab文本编辑器,输入:

- 18 -

function y=f1(x)

y=x^2+2*x+1;

存为f1.m.调用该函数时,输入:

syms x;y=f1(x)

得结果:y= x^2+2*x+1.输入:

y1=f1(3)

得结果:y1=16

matlab求最小值命令fmin调用格式:

fmin(‘fun’,a,b) 给出f(x)在(a,b)上的最小值点.

5.2 自定义函数

例1 建立正态分布的密度函数

f(x,,.)e2(x)22.

解 打开文本编辑器,输入

function y=zhengtai(x,a,b)

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

存为zhengtai.m.调用时可输入命令

y=zhengtai(1,1,0)

得结果

y=0.2420.

此即f(1,1,0)的值.如果想画出标准正态分布的密度函数的图象,输入

ezplot(zhengtai(x,1,0)).

例2 解一元二次方程ax2bxc0.

解 我们希望当输入a,b,c的值时,计算机能给出方程的两个根.在文本编辑器中建立名为rootquad.m的文件.

function [x1,x2]=rootquad(a,b,c)

d=b*b-4*a*c;

x1=(-b+sqrt(d))/(2*a)

x2=(-b-sqrt(d))/(2*a)

比如求方程2x23x70的根,可用语句

[r1,r2]=rootquad(2,3,-7),

得结果 r1=1.2656 r2=-2.7656 .

- 19 -

5.3 验证罗必塔法则 罗必塔法则是指在求及的极限时,可用导数之比的极限来计算(如果导数之比的极限存在或)

xx 例3 以limab为例验证罗必塔法则. x0x

解 这是型极限 f=a^x-b^x;g=x;L=limit(f/g,x,0)

得结果:L=log(a)-log(b)

df=diff(f,x);dg=diff(g,x);L1=limit(df/dg,x,0)

得结果:L1=log(a)-log(b)

从结果看出 L=L1,即

xbx(axbx)'a=lim. limx0x0xx

5.4 函数的单调性与极值

例4 求函数f(x)x36x29x3的单调区间与极值.

解 求可导函数的单调区间与极值,就是求导函数的正负区间与正负区间的分界点,利用matlab解决该问题,我们可以先求出导函数的零点,再画出函数图象,根据图象可以直观看出函数的单调区间与极值.输入命令

f=x^3-6*x^2+9*x+3;df=diff(f,x);s=solve(df),

得结果 ans=[1,3], 画出函数图象.

ezplot(f,[0,4]).

从图上看,f(x)的单调增区间为(,1)、(1,),单调减区间是(1,3),极大值f(1)7,极小值f(3)3.

我们可以建立一个名为dandiao.m的M—文件,用来求求函数的单调区间.

disp(‘输入函数(自变量为x)’)

syms x

f=input('函数f(x)=')

df=diff(f);

s=solve(df)

a=[];

for i=1:size(s);

a(i)=s(i);

- 20 -

end

ezplot(f,[min(a)-1,max(a)+1])

要求函数yxln(1x)的单调区间与极值,可调用dandiao.m.输入

dandiao

在matlab工作区出现以下提示 输入函数(自变量为x) 函数f(x)=

在光标处输入:x-log(1+x),可得结果s=0.从图上看,f(x)的单调增区间为(0,),单调减区间是(,0),极小值f(0)0.

5.5 函数的最值

调用求函数最小值命令fmin时,可得出函数的最小值点,为求最小值,必须建立函数M—文件.

例5 求函数f(x)(x3)21在区间(0,5)上的最小值. 解 我们可以建立一个名为f.m的函数M-文件. function y=f(x) y=(x-3).^2-1; 并且调用fmin

x=fmin((‘f’,0,5)

得:x=3,f(x)在最小值点处的值(函数最小值)是f(3)1.

求最大值时可用x=fmin(‘-f(x)’,a,b)

练习

1.建立函数f(x,a)asinxsin3x,当a为何值时,该函数在x处取得极

33

值,它是极大值还是极小值,并求此极值.

2.确定下列函数的单调区间:

(1)y2x36x218x7 ; (2)y2x

8

(x0); x

(3)yln(xx2) ; (4)y(x1)(x1)3.

3.求下列函数的最大值、最小值:

3

2

4

2

(1)y2x3x,1x4; (2)yx8x2,1x3.

- 21 -

§6 一元函数积分的计算

6.1 常用命令

matlab积分命令int调用格式:

f(x)dx;

int(函数f(x,y),变量名x) 计算不定积分f(x,y)dx;

b

int(函数f(x),a,b) 计算定积分f(x)dx;

a

b

int(函数f(x,y),变量名x,a,b) 计算定积分f(x,y)dx.

a

int(函数f(x)) 计算不定积分

6.2 计算不定积分

例1 计算xlnxdx.

解 输入命令

int(x^2*log(x)) 可得结果

ans=1/3*x^3*log(x)-1/9*x^3. 注意设置符号变量.

例2 计算下列不定积分: 1.

2

a2x2dx; 2.x1dx; 3.x2arcsinxdx.

x1

解 首先建立函数向量. syms x

syms a real

y=[sqrt(a^2-x^2),(x-1)/(3*x-1)^(1/3),x^2*asin(x)]; 然后对y积分可得对y的每个分量积分的结果. int(y,x) ans =

[1/2*x*(a^2-x^2)^(1/2)+1/2*a^2*asin((1/a^2)^(1/2)*x), -1/3*(3*x-1)^(2/3)+1/15*(3*x-1)^(5/3),

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

6.3 求和运算

sum(x),给出向量x的各个元素的累加和,如果x是矩阵,则sum(x)是一个元素为x的每列列和的行向量.

- 22 -

例1 x=[1,2,3,4,5,6,7,8,9,10]; sum(x) ans=55

例2 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

符号表达式求和命令symsum调用格式. symsum(s,n), 求

s

km

n

symsum(s,k,m,n),求

s

n

当x的元素很有规律,比如为表达式是s(k)的数列时,可用symsum求得x的各项和,即

symsum(s(k),1,n)=s(1)s(2)s(n)

symsum(s(k),k,m,n)s(m)s(m1)s(n)

例3 syms k n symsum(k,1,10) ans=55

symsum(k^2,k,1,n)

ans=1/3*(n+1)^3-1/2*(n+1)^2+1/6*n+1/6 matlab求定积分命令int调用格式 int(函数f(x),a,b) , 计算定积分

a

b

f(x)dx;

int(函数f(x,y),变量名x,a,b) , 计算定积分

6.4 定积分的概念

a

b

f(x,y)dx.

定积分是一个和的极限.取f(x)ex,积分区间为[0,1],等距划分为20个子区间. x=linspace(0,1,21);

选取每个子区间的端点,并计算端点处的函数值. y=exp(x);

取区间的左端点乘以区间长度全部加起来. y1=y(1:20);s1=sum(y1)/20

- 23 -

s1=1.6757 s1可作为exdx的近似值. 若选取右端点

y2=y(2:21);s2=sum(y2)/20 s2=1.7616

s2也可以作为exdx的近似值.下面我们画出图象.

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)填充.从图上看s1

0

1

0

1

0exdxs2,当分点逐渐

1

增多时,s2s1的值越来越小,读者可试取50个子区间看一看结果怎样.下面按等分区间计算lim

n

i1

n

f()xilim

n. enni1

n

syms k n

s=symsum(exp(k/n)/n,k,1,n); limit(s,n,inf) 得结果

ans=exp(1)-1.

6.5 计算定积分和广义积分 例4 计算exdx.

解 输入命令:int(exp(x),0,1)

得结果ans=exp(1)-1.这与我们上面的运算结果是一致的. 例5 计算

1

0

0

2

x1dx

解 输入命令

- 24 -

int(abs(x-1),0,2)

得结果ans =1.本例用mathematica软件不能直接求解. 例6 判别广义积分

1



dx、edx与2

20(1x)2dx的敛散性,收敛xp

2

时计算积分值.

解 对第一个积分输入命令

syms p real;int(1/x^p,x,1,inf)

得结果ans =limit(-1/(p-1)*x^(-p+1)+1/(p-1),x = inf).由结果看出当p1时,x^(-p+1)为无穷,当p1时,ans=1/(p-1),这与课本例题是一致的. 对第二个积分输入命令

int(1/(2*pi)^(1/2)*exp(-x^2/2),-inf,inf) 得结果:

ans=[**************]3/[**************]84*2^(1/2)*pi^(1/2) 由输出结果看出这两个积分收敛.

对后一个积分输入命令 int(1/(1-x)^2,0,2)

结果得ans=inf.说明这个积分是无穷大不收敛.

t

例7 求积分dx

0

x

解 输入命令:int(sin(x)/x,0,t),可得结果sinint(t),通过查帮助(help sinint)

t

可知sinint(t)=dx,结果相当于没求!实际上matlab求出的只是形式上的结果,

0

x

因为这类积分无法用初等函数或其值来表示.尽管如此,我们可以得到该函数的函数值.输入vpa(sinint(0.5))可得sinint(0.5)的值.

练习

1.计算下列不定积分:

dx ; x2dx; (2)sin2xdx ; (3)

sin2xx25x1

dx; (5)x2e2xdx ; (6)dx. (4)x2x2x1

(1)

2.计算下列定积分: (1)

1xlnxdx ; (2)e

x3sin2x

dx;

- 25 -

(3)

1

e

sin(lnx)dx ; (4)

t

32dx. 1x42x21

1

3.求

dx并用diff对结果求导. 1(xlnx)2

4.求摆线xa(tsint),ya(1cost)的一拱(0t2)与x轴所围成的图形的面积.

§7 常微分方程

7.1 常用命令

matlab求解微分方程命令dsolve,调用格式为:

dsolve(‘微分方程’)给出微分方程的解析解,表示为t的函数; dsolve(‘微分方程’,‘初始条件’)给出微分方程初值问题的解,表示为t的函数; dsolve(‘微分方程’,‘变量x’)给出微分方程的解析解,表示为x的函数; dsolve(‘微分方程’,‘初始条件’,‘变量x’)给出微分方程初值问题的解,表示为x的函数.

7.2 求解一阶微分方程

微分方程在输入时,y应输入Dy,y应输入D2y等,D应大写.

dyx2

例1 求微分方程2xyxe的通解.

dx

解 输入命令

dsolve('Dy+2*x*y=x*exp(-x^2)')

结果为 ans =

1/2*(1+2*exp(-2*x*t)*C1*exp(x^2))/exp(x^2)

系统默认的自变量是t,显然系统把x当作常数,把y当作t的函数求解.输入命令 dsolve('Dy+2*x*y=x*exp(-x^2)','x') 得正确结果 ans =

1/2*(x^2+2*C1)/exp(x^2)

例2 求微分方程xyye0在初始条件y 解 输入命令

dsolve('x*Dy+y-exp(x)=0','y(1)=2*exp(1)','x')

- 26 -

x

x1

2e下的特解.

得结果为 ans =

1/x*(exp(x)+exp(1)) 例3 求微分方程(x21)dy

2xycosx0在初始条件yx0

1下的特解.

dx

解 输入命令

dsolve('(x^2-1)*Dy+2*x*y-cos(x)=0','y(0)=1','x')

得结果为 ans =

1/(x^2-1)*(sin(x)-1) 7.3 求解二阶微分方程 例4 求y3yex

0的通解. 解 输入命令

dsolve('D2y+3*Dy+exp(x)=0','x')

得结果 ans =

-1/4*exp(x)+C1+C2*exp(-3*x)

例5 求解微分方程

ye2yy0.

解 输入命令

dsolve('D2y-exp(2*y)*Dy=0','x')

得结果 ans =

1/2*log(-2*C1/(-1+exp(2*x*C1+2*C2*C1)))+x*C1+C2*C1 .

练习

求下列微分方程的通解:

1.2x2

yyy2

1 ; 2.dyydxxyx

; 3.ycos

yxx

x

; 4.(xcosysin2y)y1; 5.y3yyex

cos2x ; 6.y4yx1sinx;

7.

x22xyy2(y22xyx2

)dydx0;



yx11

- 27 -

d2xdx

2na2x02

dtdt

8. .

dxxx,

t00t0V0dt

§8 空间图形的绘制

Matlab绘制空间曲线的命令为plot3,调用格式绘制平面曲线的命令plot类似。 例1 画出螺旋线x2cos3t,

y2sin3t,z1.5t的图形.

解 输入命令

t=linspace(0,4*pi,300); x=2*cos(3*t); y=2*sin(3*t); z=1.5*t; plot3(x,y,z)

结果如图所示.

例2 画出圆锥螺线xtcos3t,

ytsin3t,z1.5t的图形.

解 输入命令

t=linspace(0,4*pi,300); x=t.*cos(3*t); y=t.*sin(3*t); z=1.5*t; plot3(x,y,z)

结果如图所示。

Matlab绘制空间曲面的命令为mesh和surf,mesh绘制网格形状的曲面,surf绘制由小平面组成的曲面。

例3 画出抛物面zxy的图形. 解 输入命令

x=linspace(-2,2,20);

y=linspace(-3,3,30);

- 28 -

2

2

[x,y]=meshgrid(x,y); z=x.^2+y.^2; mesh(x,y,z)

结果如图所示.

若使用surf(x,y,z)可得如图的结果。还可以对曲面进行平滑插值处理:shading interp,得如下结果。

可以采用曲面的参数方程:xrcost,yrsint,zr2,输入命令 r=linspace(0,2,20); t=linspace(0,2*pi,30); [r,t]=meshgrid(r,t); x=r.*cos(t); y=r.*sin(t); z=r.^2; mesh(x,y,z) 结果如图

或surf(x,y,z);shading interp绘制平滑曲面图

- 29 -

§9 偏导数的计算

9.1 常用命令

matlab求偏导命令diff调用格式:

diff(函数f(x,y),变量名x), 求f(x,y)对x的偏导数

f; x

nf

diff(函数f(x,y), 变量名x,n) ,求f(x,y)对x的n阶偏导数.

xn

matlab求雅可比矩阵命令jacobian,调用格式:

jacobian([函数f(x,y,z);函数g(x,y,z); 函数h(x,y,z)], [x,y,z])给出矩阵

fxgxhx

fygyhy

fzg

. zhz

9.2 求多元函数的偏导数

例1 设 u=x2y2z2求 u的一阶偏导数.

解 输入命令

diff((x^2+y^2+z^2)^(1/2), x). 得结果

ans=1/(x^2+y^2+z^2)^(1/2)*x. 在命令中将末尾的x换成y将给出y的偏导数 ans=1/(x^2+y^2+z^2)^(1/2)*y. 也可以输入命令

jacobian((x^2+y^2+z^2)^(1/2),[x y]). 得结果

ans=[1/(x^2+y^2+z^2)^(1/2)*x, 1/(x^2+y^2+z^2)^(1/2)*y].



给出矩阵,.

xy

例2 求下列函数的偏导数:

- 30 -

y

z1arctg(); z2xy .

x

解 输入命令

diff(atan(y/x), 得结果

ans=-y/x^2/(1+y^2/x^2); 输入命令

diff(atan(y/x), y), 得结果

ans=1/x/(1+y^2/x^2); 输入命令

diff(x^y, x), 得结果

ans=x^y*y/x; 输入命令

diff(x^y, y), 得结果

ans=x^y*log(x).

使用jacobian命令求偏导数更为方便. 输入命令

jacobian([atan(y/x),x^y],[x,y]), 得结果

ans=[ -y/x^2/(1+y^2/x^2), 1/x/(1+y^2/x^2)] [ x^y*y/x, x^y*log(x)].

9.3 求高阶偏导数

例3 设zx63y42x2y2,求2z2z2z

x2,y2,

xy

. 解 输入命令

diff(x^6-3*y^4+2*x^2*y^2,x,2)

2可得到zx

2

ans=30*x^4+4*y^2.

将命令中最后一个x换为y得2y

2

ans=-36*y^2+4*x^2. 输入命令

- 31 -

diff(diff(x^6-3*y^4+2*x^2*y^2,x),y)

2

可得

xy

ans=8*x*y.

2

同学们可自己计算比较它们的结果.

yx

2

注意命令diff(x^6-3*y^4+2*x^2*y^2,x,y),是对y求偏导数,不是求.

xy

9.4 求隐函数所确定函数的导数或偏导数 例4 设lnxee,求

yx

yx

dy. dx

解 F(x,y)lnxe

e,先求Fx,再求Fy.

输入命令

df_dx=diff(log(x)+exp(-y/x)-exp(1),x) 得到Fx

df_dx=1/x+y/x^2*exp(-y/x); 输入命令

df_dy=diff(log(x)+exp(-y/x)-exp(1),y)

 得到Fy

df_dy=-1/x*exp(-y/x).

输入命令

dy_dx=-df_dx/df_dy 可得所求结果

dy_dx=-(-1/x-y/x^2*exp(-y/x))*x/exp(-y/x).

例5 设sin(xy)cos(yz)tg(xz)0 ,求z,z.

xy

解 记F(x)sin(xy)cos(yz)tg(xz). 输入命令

a=jacobian(sin(x*y)+cos(y*z)+tan(z*x),[x,y,z])

,Fz 可得矩阵Fx,Fy

a=

- 32 -



[cos(x*y)*y+(1+tan(z*x)^2)*z,cos(x*y)*x-sin(y*z)*z, -sin(y*z)*y+(1+tan(z*x)^2)*x]; 输入命令

dz_dx=-a(1)/a(3) 得

dz_dx=

(-cos(x*y)*y-(1+tan(z*x)^2)*z)/(-sin(y*z)*y+(1+tan(z*x)^2)*x); 输入命令

dz_dy=-a(2)/a(3) 得

dz_dy=

(-cos(x*y)*x+sin(y*z)*z)/(-sin(y*z)*y+(1+tan(z*x)^2)*x).

练习

1.求下列隐函数的导数: (1)arctg

y

x

lnx2y2 ; (2)xyyx . 2.求下列函数的偏导数:

z

(1) zx2sin(xy) ; (2)u

y

3.设uxln(xy),求22x2,

y2,2xy

. 4.求下列多元隐函数的偏导数x,y

.

(1)cos2xcos2ycos2z1 ; (2)ezxyz.

5.证明函数uln

(xa)2(yb)2(a,b为常数)满足拉普拉斯方程

2x22y2

0. (提示:对结果用simplify化简)

§10 重积分与曲线积分

10.1 二重积分计算

2 例1 求二次积分1x1

0dx

2x

xydy.

解 建立符号变量x和y后,输入命令

- 33 -

int(int(x*y,y,2*x,x^2+1),x,0,1) 得结果ans=1/12.

例2 计算二重积分

22(xyx)dxdy,其中D是由直线y2,yx及D

y2x所围成的闭区域.

解 该二重积分可以化为二次积分

2

dyy(x2y2x)dx,输入命令

2

y

int(int(x^2+y^2-x,x,y/2,y),y,0,2)

得结果ans= 13/6.

例3 计算积分I



2

dy

sinx

dx.

yx

解 输入命令

int(int(sin(x)/x,x,y-pi,pi),y,pi,2*pi) 得结果ans =2.

若不借助于计算机计算,需要交换积分次序. 例4 求

x2y21

sin((x2y2))dxdy.

x2,二重积

解 积分区域用不等式可以表示成1x1,x2y分可化为二次积分dx

1

1x2x

2

sin((x2y2)dy,输入命令

int(int(sin(pi*(x^2+y^2)),y,-sqrt(1-x^2),sqrt(1-x^2)),x,-1,1)

由输出结果可以看出,结果中仍带有int,表明matlab求不出这一积分的值.采用极坐标可化为二次积分

int(int(r*sin(pi*r^2),r,0,1),a,0,2*pi) 可得结果为ans=2.

10.2 三重积分计算 例5 计算三重积分I

0

2

darsin(r2)dr,输入命令

1

1

dx

1x

dy

1xy

dz

(1xyz)3

解 输入命令

int(int(int(1/(1+x+y+z)^3,z,0,1-x-y),y,0,1-x),x,0,1) 得结果ans =-5/16+1/2*log(2).

- 34 -

例6 计算三重积分

222

,为球面xyz1及三个坐标面所围xyzdxdydz

成的在第一卦限内的区域.

解 该三重积分可化为累次积分

dx

1

x2

dy

x2y2

xyzdz.输入命令

int(int(int(x*y*z,z,0,sqrt(1-x^2-y^2)),y,0,sqrt(1-x^2)),x,0,1)

得结果ans =1/48.

10.3 曲线积分计算 例7 求曲线积分

Lxyds,其中L为曲线x2y21在第一象限内的一段.

2

解 曲线的参数方程是xcost,ysint,(0t)曲线积分可以化为

20

costsintdt.

输入命令

int(cos(t)*sin(t),0,pi/2) 执行后即可求出曲线积分结果1/2.

例8 计算曲线积分

L

y2ds,L为摆线的一拱x2(tsint),ya(1cost),

(0t2).

解 曲线积分可以化为

2

4(1cost)288costdt.输入命令

int(4*(1-cos(t))^2*sqrt(8-8*cos(t)),t,0,2*pi) 得结果ans =1024/15*4^(1/2).

练习

1.计算二重积分: (1)

x2y21

(xy)dxdy; (2)(x2y2)dxdy.

x2y2x

2.计算三重积分: (1) (2)

0zyxa ; xyzdxdydz,:

xdxdydz,:xyza,x0,y0,z0.

3.计算

L

x2y2ds ,L为圆周x2y2ax(a0).

- 35 -

4.计算

L(x2y2)dx(x2y2)dy,其中L为抛物线yx2上从点(0,0)到点

(2,4)的一段弧.

§11 级数

11.1 常用命令

求已知函数的taylor展开式taylor命令,调用格式为: taylor(函数f(x)) f(x)的5次taylor多项式; taylor(函数f(x),n) f(x)的n-1次taylor多项式; taylor(函数f(x),a) f(x)在a点的taylor多项式. 求级数的和命令symsum调用格式为: symsum(S,n),求

S;

km

n

symsum(S,k,m,n),求

S.

n

matlab求极限命令limit调用格式为:

limit(函数f(x),变量x,自变量的趋向值)

11.2 taylor展开式

例1 求函数y=cosx在x=0点处的5阶taylor展开式及在x展开式.

解 输入命令

syms x;taylor(cos(x))

3

处的6阶taylor

得结果 ans =

1-1/2*x^2+1/24*x^4 ; 输入命令

taylor(cos(x),pi/3,7)

得结果 ans =

1/2-1/2*3^(1/2)*(x-1/3*pi)-1/4*(x-1/3*pi)^2+1/12*3^(1/2)*(x- 1/3*pi)^3+1/48*(x-1/3*pi)^4-1/240*3^(1/2)*(x-1/3*pi)^5-1/1440*(x-1/3*pi)^6 .

- 36 -

11.3 级数求和 例2 求



1n12

n

. 解 输入命令

syms n;symsum(1/2^n,1,inf)

得结果 ans = 1 .

例3 求幂级数xn

n2

的和函数.n1n

解 输入命令

symsum(x^n/(n*2^n),n,1,inf)

得结果 ans =

-log(1-1/2*x) . 例4 求幂级数

nx

n

的和函数.

n1

解 输入命令

symsum(n*x^n,n,1,inf)

得结果 ans =

x/(x-1)^2 .

11.4 判别级数敛散性 

例5判断数项级数

1

n(n1)

的收敛性.n1 解 输入求和命令

symsum(1/(n*(n+1)),n,1,inf)

得结果

ans = 1 .

求和得是1,说明该级数收敛. 

例6 判别级数

sin

n1

n(n1)

的敛散性. - 37 -

解 输入命令

symsum(sin(pi/(n*(n+1))),1,inf)

得结果 ans =

sum(sin(pi/n/(n+1)),pi = 1 .. inf) .

由执行结果看出仍含有sum,说明用matlab不能求出其和,可采用比较判别法,取比较级数为P级数输入命令

limit(sin(pi/(n*(n+1)))/(1/n^2),n,inf)

1

,取二者通项比值的极限. 2nn1

得结果

ans = pi .

得值为pi,由所取P级数收敛,得知所要判别的级数也收敛.

3

例7 判别级数n的敛散性.

n14

解 用比值判别法,输入命令

limit((n+1)*(3/4)^(n+1)/(n*(3/4)^n),n,inf)

n

得结果 ans = 3/4 .

极限值小于1,由比值判别法知级数收敛.实际上输入求和命令

symsum(n*(3/4)^n,n,1,inf)

得结果 ans = 12 .

练习

1.给出函数f(x)esinx2cosx在点x0的7阶taylor展开式以及在x=1处的 5阶taylor展开式.

2.判别下列级数的敛散性,若收敛求其和.

111

(1)1 ; (2)tg;

3572nn1n1

n11n

(3)(1) ; (4)(1).

2nlnnnn1n1n2

x

x

- 38 -

3.求幂级数

(1)

n2

n

xnnn

2

的和函数.

4.求函数项级数

(1)nsin

n1

2n

xn)的和函数.

- 39 -

MATLAB在微积分中的应用

MATLAB是MathWorks公司于1982年推出的一套高性能的数值计算和可视化数学软件.被誉为“巨人肩上的工具”.用Matlab编写程序犹如在演算纸上排列出公式与求解问题,所以又被称为演算纸式科学算法语言.在这个环境下,对所要求解的问题,用户只需简单地列出数学表达式,其结果便以数值或图形方式显示出来.

§1 MATLAB入门

1.1 matlab的数值计算

运行MATLAB的可执行文件,进入Matlab工作窗口,在提示符“>>”后输入算术表达式,按Enter键即可得到该表达式的值,就象在计算器中运算一样.加、减、乘、除、乘方的算符依次为+、-、*、/、^.

例1 计算2+3×5的值.

解 在Matlab工作区输入命令:2+3*5^9,按Enter键,可得计算结果

2+3*5^9 ans =

5859377

MATLAB会将最近一次的运算结果直接存入一变量ans,变量ans代表MATLAB运算後的答案,并将其数值显示到屏幕上.也可以将计算结果赋值给一个自定义的变量,自定义变量应遵循以下命名规则:

(1)MATLAB对变量名的大小写是敏感的.

(2)变量的第一个字符必须为英文字母,而且不能超过31个字符. (3)变量名可以包含下划线、数字,但不能为空格符、标点.

例2 计算11.31.9

0.239

sin1的值,并将其赋值给变量a.

解 a=11.3*1.9^0.23+sin(1)

a =

13.9391

如果在上述的例子结尾加上”;”,则计算结果不会显示在指令视窗上,要得知计算值只须键入该变量名即可.

MATLAB可以将计算结果以不同的精确度的数字格式显示,我们可以在命令窗口的File 菜单下点击preferences子菜单,在随之打开的preferences对话框中,选取Command Window选项,设置Numerical Format参数,或者直接在matlab工作区键入以下指令:format short (这是默认的), format long等.

- 1 -

1.2 Matlab的数组运算

Matlab数组是Matlab进行运算的单元.创建数组就像我们在纸上写一个数组一样,元素与元素用“,”号或空格进行分隔,行与行用“;”号进行分隔.

例3 命令a=[1 2 3 4 5 6]建立一个1行6列的数组. 该命令与a=[1,2,3,4,5,6]是一样的.

命令b=[1 2 3;4 5 6]建立一个2行3列的数组. 数组运算的运算符与数值运算一样. 例4 a=[1 1 1;2 2 2] (建立数组a) a =

1 1 1 2 2 2

b=[3 3 3;4 4 4] (建立数组b) b =

3 3 3 4 4 4

a+b (求数组a与数组b的和) ans =

4 4 4 6 6 6

a-b (求数组a与数组b的差) ans =

-2 -2 -2 -2 -2 -2

a+3 (数组a的每一个元素都加上3) ans =

4 4 4 5 5 5

2*b (数组b的每一个元素都乘以2) ans =

6 6 6 8 8 8

两个同类型数组的对应元素相乘除的运算符是“./”和“.*”. 例5 a.*b (a的对应元素与b的对应元素相乘) ans =

3 3 3 8 8 8

a./b (a的对应元素除以b的对应元素) ans =

- 2 -

0.[1**********]333 0.[1**********]333 0.[1**********]333 0.[1**********]000 0.[1**********]000 0.[1**********]000

运算符“./”及“.*”应与运算符“/”及“*”相区别,a*b表示矩阵a与b的乘积,a/b表示矩阵a乘以矩阵b的逆矩阵.

例6 a=[1 2;2 1] (建立矩阵a) a =

1 2 2 1

b=[1 3;0 1] (建立矩阵b) b =

1 3 0 1

a*b (求矩阵a与矩阵b的乘积ab) ans =

1 5 2 7

a/b (求矩阵a与矩阵b的逆矩阵的乘积) ans =

1 -1 2 -5

运算符“^”表示方阵的幂,而运算符“.^”表示数组中每一个元素的幂. 例7 a^2 (矩阵a的平方) ans =

5 4 4 5

a.^2 (矩阵(数组)a的每一个元素的平方) ans =

1 4 4 1

1.3 Matlab的符号运算

matlab可以进行符号运算,需要预先定义符号变量.使用指令sym或syms定义符号变量.

例8 a=sym(‘x’) (将符号变量x赋值给变量a) a = x

sin(a)/cos(a) (符号表达式sin(a)/cos(a)) ans =

sin(x)/cos(x)

- 3 -

syms x y (定义符号变量x和y)

b=(x+y)^2-4*x*y (将符号表达式赋值给变量b) b=

(x+y)^2-4*x*y

a+b (求变量a与b的和) ans =

x+(x+y)^2-4*x*y

1.4 Matlab 的数学常数和函数

Matlab数学常数如下: pi 数学常数 inf 无穷大 eps 最小的浮点数

§2 MATLAB绘制一元函数的图形

2.1 常用命令

matlab绘图命令比较多,我们选编一些常用命令,并简单说明其作用,这些命令的调用格式,可参阅例题及使用帮助help查找.

表1 二维绘图函数

- 4 -

表2 基本线型和颜色

表3 二维绘图工具

表4 axis命令

linspace 创建数组命令,调用格式为:

x=linspace(x1,x2,n),创建了x1到x2之间有n个数据的数组.

funtool 函数工具,在matlab指令窗键入funtool可打开“函数计算器”图形用户界面.

2.2 绘制函数图形举例

- 5 -

例1 画出ysinx的图形.

解 首先建立点的坐标,然后用plot命令将这些点绘出并用直线连接起来,采用中学五点作图法,选取五点(0,0)、(,1)、(,0)、(,1)、(2,0).

22

输入命令

x=[0,pi/2,pi,3*pi/2,2*pi];y=sin(x);plot(x,y)

这里分号表示该命令执行结果不显示.从图上看,这是一条折线,与我们熟知的正弦曲线误差较大,这是由于点选取的太少的缘故。可以想象,随点数增加,图形越来越接近

ysinx的图象.例如,在0到2之间取30个数据点,绘出的图形与ysinx的图象已

经非常接近了.

x=linspace(0,2*pi,30);y=sin(x);plot(x,y).

也可以如下建立该图形.

x=0:0.1:2*pi;y=sin(x);plot(x,y)

还可以给图形加标记、格栅线. x=0:0.1:2*pi; y=sin(x);

plot(x,y,’r—‘) title(‘正弦曲线’) xlabel(‘自变量 x’) ylabel(‘函数y=sinx’) text(5.5,0,’y=sinx’) grid

上述命令第三行选择了红色虚线,第四行给图加标题“正弦曲线”,第五行给x轴加标题“自变量x”,第六行给y轴加标题“函数ysinx”,第七行在点(5.5,0)处放置文本“ysinx”,第八行给图形加格栅线

.

- 6 -

例2 画出y2x和y(1/2)x的图象.

解 输入命令

x=-4:0.1:4;y1=2.^x;y2=(1/2).^x;plot(x,y1,x,y2); axis([-4,4,0,8])

matlab允许在一个图形中画多条曲线.plot(x1,y1,x2,y2,x3,y3)指令绘制

y1f(x1),y2f(x2)等多条曲线.matlab自动给这些曲线以不同颜色.

例3 画出yarctgx的图象. 解 输入命令

从图上看,yarctgx是有界函数,y是其水平渐近线

.

2

例4 在同一坐标系中画出ysinx,yx,ytgx的图象. 解 输入命令

x=-pi/2:0.1:pi/2;y1=sin(x);y2=tan(x); plot(x,x,x,y1,x,y2) axis equal

axis([-pi/2,pi/2,-3,3]) grid

从图上看,当x0时,sinxxtgx,当x0时,sinxxtgx,yx是ysinx和ytgx在原点的切线,因此,当x1时,sinxx,tgxx.

例5 画出y10x1及ylg(x1)的图形.

解 输入命令

x1=-1:0.1:2;y1=10.^x1-1;x2=-0.99:0.1:2;y2=log10(x2+1); plot(x1,y1,x2,y2)

- 7 -

从图上看,这两条曲线与我们所知的图象相差很远,这是因为坐标轴长度单位不一样的缘故.y10x1与ylg(x1)互为反函数,图象关于yx对称,为更清楚看出这一点,我们再画出yx的图象.

hold on

x=-1:0.01:2;y=x;plot(x,y,’r’) axis([-1,2,-1,2]) axis square;hold off

plot语句清除当前图形并绘出新图形,hold on语句保持当前图形

.

例6 画出心形线r3(1cosa)的图象.

解 输入命令

x=-2*pi:0.1:2*pi;r=3*(1+cos(x));polar(x,r) 例7 画出星形线x3cos3t,y3sin3t的图象. 解 这是参数方程,可化为极坐标方程. r

(cosa

sina)2

- 8 -

输入命令

x=0:0.01:2*pi;

r=3./(((cos(x)).^2).^(1/3)+((sin(x)).^2).^(1/3)).^(3/2); polar(x,r)

注意,如果建立r与t的关系,此时t只是参数,不是极坐标系下的极角.

练习

1.画出yarcsinx的图象.

2.画出ysecx在[0,]之间的图象. 3.在同一坐标系中画出y4.画出f(x)(1性.

5.画出y1ln(x2)及其反函数的图象. 6.画出y

x)3

x,yx2,y

x)3

x,yx3,yx的图象.

(1的图象,并根据图象特点指出函数f(x)的奇偶

x21及其反函数的图象.

§3 利用MATLAB求一元函数的极限

3.1 常用命令

matlab求极限命令可列表如下:

matlab代数方程求解命令solve调用格式.

- 9 -

solve(函数f(x)) 给出f(x)0的根.

3.2 理解极限概念

数列{xn}收敛或有极限是指当n无限增大时,xn与某常数无限接近或xn趋向于某一定值,就图形而言,也就是其点列以某一平行与y轴的直线为渐近线. 例1 观察数列{n当n时的变化趋势.

n1

解 输入命令

n=1:100;xn=n./(n+1)

得到该数列的前100项,从这前100项看出,随n的增大,

与1非常接近,画出x的

n

n1

图形.

stem(n,xn) 或

for i=1:100;

plot(n(i),xn(i),’r’) hold on end

其中for „ end语句是循环语句,循环体内的语句被执行100次,n(i)表示n的第i个分量.由图可看出,随n的增大,点列与直线y1无限接近,因此可得结论 lim

n=1. nn1

对函数的极限概念,也可用上述方法理解

.

例2 分析函数f(x)xsin,当x0时的变化趋势.

x

解 画出函数f(x)在[1,1]上的图形. x=-1:0.01:1;y=x.*sin(1./x);plot(x,y)

- 10 -

从图上看,xsin随着x的减小,振幅越来越小趋近于0,频率越来越高作无限次振荡.x

作出yx的图象.

hold on;plot(x,x,x,-x)

例3 分析函数f(x)sin当x0时的变化趋势. x

解 输入命令

x=-1:0.01:1;y=sin(1./x);plot(x,y)

从图上看,当x0时,sin在-1和1之间无限次振荡,极限不存在.仔细观察该x

图象,发现图象的某些峰值不是1和-1,而我们知道正弦曲线的峰值是1和-1,这是由于自变量的数据点选取未必使sin取到1和-1的缘故,读者可试增加数据点,比较它们的结x

果.

例4 考察函数f(x)当x0时的变化趋势. x

解 输入命令

x=linspace(-2*pi,2*pi,100);y=sin(x)./x;plot(x,y)

x

limsinx=1. x0x从图上看,在x0附近连续变化,其值与1无限接近,可见 例5 考察f(x)(11)x当x时的变化趋势. x

解 输入命令

x=1:20:1000;y=(1+1./x).^x;plot(x,y)

从图上看,当x时,函数值与某常数无限接近,我们知道,这个常数就是e. - 11 -

3.3 求函数极限

例6 求lim1(1xx13

x31).

解 输入命令

syms x;f=1/(x+1)-3/(x^3+1);limit(f,x,-1)

得结果ans=-1.画出函数图形.

ezplot(f);hold on;plot(-1,-1,’r.’)

例7 求limtgxsinx. x0x3

解 输入命令

limit((tan(x)-sin(x))/x^3)

得结果 ans=1/2

例8 求lim(x1x1)x. x

解 输入命令

limit(((x+1)/(x-1))^x,inf)

得结果 ans=exp(2)

例9 求xlim0xx.

解 输入命令

limit(x^x,x,0,’right’)

得结果 ans =1

例10 求xlim0(ctgx).

解 输入命令

limit((cot(x))^(1/log(x)),x,0,’right’)

得结果 ans=exp(-1).

- 12 -

3.4 求方程的解

例11 解方程ax2bxc0.

解 输入命令

syms a b c x;

f=a*x^2+b*x+c;

solve(f)

得结果 ans=

[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))]

[ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]

如果不指明自变量,系统默认为x,也可指定自变量,比如指定b为自变量. solve(f,b)

得结果 ans=-(a*x^2+c)/x.

例12 解方程x55x10.

解 输入命令

f=x^5-5*x-1;solve(f)

得结果 ans=

[ -1.[***********][1**********]53]

[ -.[***********][1**********]959]

[.[***********][1**********]791e-1

-1.[***********][1**********]56*i]

[.[***********][1**********]791e-1

+1.[***********][1**********]56*i]

[ 1.[***********][1**********]33]

画出图象

ezplot(f,[-2,2]);hold on;plot([-2,2],[0,0])

练习

1.计算下列函数的极限. (1)lim1sin2x. x1cos4x (2)lim(1cosx)3secx. x

2

(3)lim

x

2. (2x)2

2xe2 (4)lim

x

0. - 13 -

2.解方程x2x10.

3.解方程x3sinx1.

4.解方程x3pxq0.(p、q为实数)

§4 导数的计算

4.1 常用命令

建立符号变量命令sym和syms调用格式

x=sym(`x`), 建立符号变量x;

syms x y z , 建立多个符号变量x,y,z;

matlab求导命令diff调用格式

diff(函数f(x)) , 求f(x)的一阶导数f(x);

diff(函数f(x), n) , 求f(x)的n阶导数f

4.2 导数一般概念

导数是函数的变化率,几何意义是曲线在一点处的切线斜率.

(1) 导数是一个极限值

x 例1 设f(x)e,用定义计算f(0). (n)(x)(n是具体整数).

解 f(x)在某一点x0的导数定义为极限: limx0f(x0x)f(x0) x

我们记hx,输入命令:

syms h;limit((exp(0+h)-exp(0))/h,h,0)

得结果:ans=1.可知f(0)1

(2) 导数的几何意义是曲线的切线斜率

例2 画出f(x)ex在x0处(P(0,1))的切线及若干条割线,观察割线的变化趋势.

- 14 -

解 在曲线yex上另取一点M(h,eh),则PM的方程是: y1eh1.即 x0h0

h yx1 h

取h3,2,1,0.1,0.01,分别作出几条割线.

h=[3,2,1,0.1,0.01];a=(exp(h)-1)./h;x=-1:0.1:3;

plot(x,exp(x),’r’);hold on

for i=1:5;

plot(h(i),exp(h(i)),’r.’)

plot(x,a(i)*x+1)

end

axis square

作出yex在x0处的切线yx1

plot(x,x+1,’r’)

从图上看,随着M与P越来越接近,割线PM越来越接近曲线的割线.

4.3 求一元函数的导数

(1)yf(x)的一阶导数

例3 求ysin(x)的导数. x

解 打开matlab指令窗,输入指令

dy_dx=diff(sin(x)/x).

得结果

dy_dx=cos(x)/x-sin(x)/x^2.

matlab的函数名允许使用字母、空格、下划线及数字,不允许使用其他字符,在这里我们用dy_dx表示yx.

例4 求yln(sinx)的导数.

解 输入命令

dy_dx=diff(log(sin(x))).

得结果

dy_dx=cos(x)/sin(x).

- 15 -

在matlab中,函数lnx用log(x)表示,而log10(x)表示lgx.

例5 求y(x22x)20的导数.

解 输入命令 dy_dx=diff((x^2+2*x)^20).

得结果

dy_dx=20*(x^2+2*x)^19*(2*x+2).

注意2x输入时应为2*x.

例6 求yxx的导数.

解 输入命令 dy_dx=diff(x^x).

得结果

dy_dx =x^x*(log(x)+1).

利用matlab 命令diff一次可以求出若干个函数的导数.

例7 求下列函数的导数: x22x5, y2cosx22cos2x,

y34sinx, y4lnlnx. y1

解 输入命令

a=diff([sqrt(x^2- 2*x+5),cos(x^2)+2*cos(2*x),4^(sin(x)),

log(log(x))]).

得结果

a=

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

4^sin(x)*cos(x)*log(4), 1/x/log(x)].

dy1_dx=a(1).

dy1_dx=1/2/(x^2-2*x+5)^(1/2)*(2*x-2).

dy2_dx=a(2).

dy2_dx=-2*sin(x^2)*x-4*sin(2*x).

dy3_dx=a(3).

dy3_dx=4^sin(x)*cos(x)*log(4).

dy4_dx=a(4).

dy4_dx=1/x/log(x).

由本例可以看出,matlab函数是对矩阵或向量进行操作的,a(i)表示向量a的第i个分量.

(2) 参数方程所确定的函数的导数

设参数方程

- 16 - xx(t)dyy(t)确定函数yf(x),则y的导数. dxx(t)yy(t)

xa(tsint)dy 例8 设,求. dxya(1cost)

解 输入命令

dx_dt=diff(a*(t-sin(t)));dy_dt=diff(a*(1-cos(t)));

dy_dx=dy_dt/dx_dt.

得结果

dy_dx=sin(t)/(1-cos(t)).

其中分号的作用是不显示结果.

4.4 求高阶导数

例9 设f(x)x2e2x ,求f(20)(x).

解 输入命令 diff(x^2*exp(2*x),x,20).

得结果

ans =

99614720*exp(2*x)+20971520*x*exp(2*x)+1048576*x^2*exp(2*x).

练习

1.求下列函数的导数: (1)y(x1)(11) ; (2)yxsinxlnx; x

(3)y2sin2 ; (4)yln(x2xx2a2).

2.求下列参数方程所确定的函数的导数:

xt4xln(1t2) (1) ; (2) . y4tytarctgt

3.设yexcosx,求y(4).

4.验证yexsinx满足关系式:

y2y2y0.

§5 matlab自定义函数与导数应用

函数关系是指变量之间的对应法则,这种对应法则需要我们告诉计算机,这样,当我

- 17 -

们输入自变量时,计算机才会给出函数值,matlab软件包含了大量的函数,比如常用的正弦、余弦函数等.matlab允许用户自定义函数,即允许用户将自己的新函数加到已存在的matlab函数库中,显然这为matlab提供了扩展的功能,无庸置疑,这也正是matlab的精髓所在.因为matlab的强大功能就源于这种为解决用户特殊问题的需要而创建新函数的能力.matlab自定义函数是一个指令集合,第一行必须以单词function作为引导词,存为具有扩展名“.m”的文件,故称之为函数M-文件.

5.1 函数M-文件的定义格式

函数M-文件的定义格式为:

function 输出参数=函数名(输入参数)

函数体

„„

函数体

一旦函数被定义,就必须将其存为M-文件,以便今后可随时调用.比如我们希望建立函数f(x)x22x1,在matlab工作区中输入命令:

syms x;y=x^2+2*x+1;

不能建立函数关系,只建立了一个变量名为y的符号表达式,当我们调用y时,将返回这一表达式.

y

y=x^2+2*x+1

当给出x的值时,matlab不能给出相应的函数值来.

x=3;y

y=x^2+2*x+1

如果我们先给x赋值.

x=3;y=x^2+2*x+1

得结果:y=16

若希望得出y|x2的值,输入:

x=2;y

得结果:y=16,不是x2时的值.读者从这里已经领悟到在matlab工作区中输入命令:y=x^2+2*x+1不能建立函数关系,如何建立函数关系呢?我们可以点选菜单Fill\New\M-fill打开matlab文本编辑器,输入:

- 18 -

function y=f1(x)

y=x^2+2*x+1;

存为f1.m.调用该函数时,输入:

syms x;y=f1(x)

得结果:y= x^2+2*x+1.输入:

y1=f1(3)

得结果:y1=16

matlab求最小值命令fmin调用格式:

fmin(‘fun’,a,b) 给出f(x)在(a,b)上的最小值点.

5.2 自定义函数

例1 建立正态分布的密度函数

f(x,,.)e2(x)22.

解 打开文本编辑器,输入

function y=zhengtai(x,a,b)

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

存为zhengtai.m.调用时可输入命令

y=zhengtai(1,1,0)

得结果

y=0.2420.

此即f(1,1,0)的值.如果想画出标准正态分布的密度函数的图象,输入

ezplot(zhengtai(x,1,0)).

例2 解一元二次方程ax2bxc0.

解 我们希望当输入a,b,c的值时,计算机能给出方程的两个根.在文本编辑器中建立名为rootquad.m的文件.

function [x1,x2]=rootquad(a,b,c)

d=b*b-4*a*c;

x1=(-b+sqrt(d))/(2*a)

x2=(-b-sqrt(d))/(2*a)

比如求方程2x23x70的根,可用语句

[r1,r2]=rootquad(2,3,-7),

得结果 r1=1.2656 r2=-2.7656 .

- 19 -

5.3 验证罗必塔法则 罗必塔法则是指在求及的极限时,可用导数之比的极限来计算(如果导数之比的极限存在或)

xx 例3 以limab为例验证罗必塔法则. x0x

解 这是型极限 f=a^x-b^x;g=x;L=limit(f/g,x,0)

得结果:L=log(a)-log(b)

df=diff(f,x);dg=diff(g,x);L1=limit(df/dg,x,0)

得结果:L1=log(a)-log(b)

从结果看出 L=L1,即

xbx(axbx)'a=lim. limx0x0xx

5.4 函数的单调性与极值

例4 求函数f(x)x36x29x3的单调区间与极值.

解 求可导函数的单调区间与极值,就是求导函数的正负区间与正负区间的分界点,利用matlab解决该问题,我们可以先求出导函数的零点,再画出函数图象,根据图象可以直观看出函数的单调区间与极值.输入命令

f=x^3-6*x^2+9*x+3;df=diff(f,x);s=solve(df),

得结果 ans=[1,3], 画出函数图象.

ezplot(f,[0,4]).

从图上看,f(x)的单调增区间为(,1)、(1,),单调减区间是(1,3),极大值f(1)7,极小值f(3)3.

我们可以建立一个名为dandiao.m的M—文件,用来求求函数的单调区间.

disp(‘输入函数(自变量为x)’)

syms x

f=input('函数f(x)=')

df=diff(f);

s=solve(df)

a=[];

for i=1:size(s);

a(i)=s(i);

- 20 -

end

ezplot(f,[min(a)-1,max(a)+1])

要求函数yxln(1x)的单调区间与极值,可调用dandiao.m.输入

dandiao

在matlab工作区出现以下提示 输入函数(自变量为x) 函数f(x)=

在光标处输入:x-log(1+x),可得结果s=0.从图上看,f(x)的单调增区间为(0,),单调减区间是(,0),极小值f(0)0.

5.5 函数的最值

调用求函数最小值命令fmin时,可得出函数的最小值点,为求最小值,必须建立函数M—文件.

例5 求函数f(x)(x3)21在区间(0,5)上的最小值. 解 我们可以建立一个名为f.m的函数M-文件. function y=f(x) y=(x-3).^2-1; 并且调用fmin

x=fmin((‘f’,0,5)

得:x=3,f(x)在最小值点处的值(函数最小值)是f(3)1.

求最大值时可用x=fmin(‘-f(x)’,a,b)

练习

1.建立函数f(x,a)asinxsin3x,当a为何值时,该函数在x处取得极

33

值,它是极大值还是极小值,并求此极值.

2.确定下列函数的单调区间:

(1)y2x36x218x7 ; (2)y2x

8

(x0); x

(3)yln(xx2) ; (4)y(x1)(x1)3.

3.求下列函数的最大值、最小值:

3

2

4

2

(1)y2x3x,1x4; (2)yx8x2,1x3.

- 21 -

§6 一元函数积分的计算

6.1 常用命令

matlab积分命令int调用格式:

f(x)dx;

int(函数f(x,y),变量名x) 计算不定积分f(x,y)dx;

b

int(函数f(x),a,b) 计算定积分f(x)dx;

a

b

int(函数f(x,y),变量名x,a,b) 计算定积分f(x,y)dx.

a

int(函数f(x)) 计算不定积分

6.2 计算不定积分

例1 计算xlnxdx.

解 输入命令

int(x^2*log(x)) 可得结果

ans=1/3*x^3*log(x)-1/9*x^3. 注意设置符号变量.

例2 计算下列不定积分: 1.

2

a2x2dx; 2.x1dx; 3.x2arcsinxdx.

x1

解 首先建立函数向量. syms x

syms a real

y=[sqrt(a^2-x^2),(x-1)/(3*x-1)^(1/3),x^2*asin(x)]; 然后对y积分可得对y的每个分量积分的结果. int(y,x) ans =

[1/2*x*(a^2-x^2)^(1/2)+1/2*a^2*asin((1/a^2)^(1/2)*x), -1/3*(3*x-1)^(2/3)+1/15*(3*x-1)^(5/3),

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

6.3 求和运算

sum(x),给出向量x的各个元素的累加和,如果x是矩阵,则sum(x)是一个元素为x的每列列和的行向量.

- 22 -

例1 x=[1,2,3,4,5,6,7,8,9,10]; sum(x) ans=55

例2 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

符号表达式求和命令symsum调用格式. symsum(s,n), 求

s

km

n

symsum(s,k,m,n),求

s

n

当x的元素很有规律,比如为表达式是s(k)的数列时,可用symsum求得x的各项和,即

symsum(s(k),1,n)=s(1)s(2)s(n)

symsum(s(k),k,m,n)s(m)s(m1)s(n)

例3 syms k n symsum(k,1,10) ans=55

symsum(k^2,k,1,n)

ans=1/3*(n+1)^3-1/2*(n+1)^2+1/6*n+1/6 matlab求定积分命令int调用格式 int(函数f(x),a,b) , 计算定积分

a

b

f(x)dx;

int(函数f(x,y),变量名x,a,b) , 计算定积分

6.4 定积分的概念

a

b

f(x,y)dx.

定积分是一个和的极限.取f(x)ex,积分区间为[0,1],等距划分为20个子区间. x=linspace(0,1,21);

选取每个子区间的端点,并计算端点处的函数值. y=exp(x);

取区间的左端点乘以区间长度全部加起来. y1=y(1:20);s1=sum(y1)/20

- 23 -

s1=1.6757 s1可作为exdx的近似值. 若选取右端点

y2=y(2:21);s2=sum(y2)/20 s2=1.7616

s2也可以作为exdx的近似值.下面我们画出图象.

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)填充.从图上看s1

0

1

0

1

0exdxs2,当分点逐渐

1

增多时,s2s1的值越来越小,读者可试取50个子区间看一看结果怎样.下面按等分区间计算lim

n

i1

n

f()xilim

n. enni1

n

syms k n

s=symsum(exp(k/n)/n,k,1,n); limit(s,n,inf) 得结果

ans=exp(1)-1.

6.5 计算定积分和广义积分 例4 计算exdx.

解 输入命令:int(exp(x),0,1)

得结果ans=exp(1)-1.这与我们上面的运算结果是一致的. 例5 计算

1

0

0

2

x1dx

解 输入命令

- 24 -

int(abs(x-1),0,2)

得结果ans =1.本例用mathematica软件不能直接求解. 例6 判别广义积分

1



dx、edx与2

20(1x)2dx的敛散性,收敛xp

2

时计算积分值.

解 对第一个积分输入命令

syms p real;int(1/x^p,x,1,inf)

得结果ans =limit(-1/(p-1)*x^(-p+1)+1/(p-1),x = inf).由结果看出当p1时,x^(-p+1)为无穷,当p1时,ans=1/(p-1),这与课本例题是一致的. 对第二个积分输入命令

int(1/(2*pi)^(1/2)*exp(-x^2/2),-inf,inf) 得结果:

ans=[**************]3/[**************]84*2^(1/2)*pi^(1/2) 由输出结果看出这两个积分收敛.

对后一个积分输入命令 int(1/(1-x)^2,0,2)

结果得ans=inf.说明这个积分是无穷大不收敛.

t

例7 求积分dx

0

x

解 输入命令:int(sin(x)/x,0,t),可得结果sinint(t),通过查帮助(help sinint)

t

可知sinint(t)=dx,结果相当于没求!实际上matlab求出的只是形式上的结果,

0

x

因为这类积分无法用初等函数或其值来表示.尽管如此,我们可以得到该函数的函数值.输入vpa(sinint(0.5))可得sinint(0.5)的值.

练习

1.计算下列不定积分:

dx ; x2dx; (2)sin2xdx ; (3)

sin2xx25x1

dx; (5)x2e2xdx ; (6)dx. (4)x2x2x1

(1)

2.计算下列定积分: (1)

1xlnxdx ; (2)e

x3sin2x

dx;

- 25 -

(3)

1

e

sin(lnx)dx ; (4)

t

32dx. 1x42x21

1

3.求

dx并用diff对结果求导. 1(xlnx)2

4.求摆线xa(tsint),ya(1cost)的一拱(0t2)与x轴所围成的图形的面积.

§7 常微分方程

7.1 常用命令

matlab求解微分方程命令dsolve,调用格式为:

dsolve(‘微分方程’)给出微分方程的解析解,表示为t的函数; dsolve(‘微分方程’,‘初始条件’)给出微分方程初值问题的解,表示为t的函数; dsolve(‘微分方程’,‘变量x’)给出微分方程的解析解,表示为x的函数; dsolve(‘微分方程’,‘初始条件’,‘变量x’)给出微分方程初值问题的解,表示为x的函数.

7.2 求解一阶微分方程

微分方程在输入时,y应输入Dy,y应输入D2y等,D应大写.

dyx2

例1 求微分方程2xyxe的通解.

dx

解 输入命令

dsolve('Dy+2*x*y=x*exp(-x^2)')

结果为 ans =

1/2*(1+2*exp(-2*x*t)*C1*exp(x^2))/exp(x^2)

系统默认的自变量是t,显然系统把x当作常数,把y当作t的函数求解.输入命令 dsolve('Dy+2*x*y=x*exp(-x^2)','x') 得正确结果 ans =

1/2*(x^2+2*C1)/exp(x^2)

例2 求微分方程xyye0在初始条件y 解 输入命令

dsolve('x*Dy+y-exp(x)=0','y(1)=2*exp(1)','x')

- 26 -

x

x1

2e下的特解.

得结果为 ans =

1/x*(exp(x)+exp(1)) 例3 求微分方程(x21)dy

2xycosx0在初始条件yx0

1下的特解.

dx

解 输入命令

dsolve('(x^2-1)*Dy+2*x*y-cos(x)=0','y(0)=1','x')

得结果为 ans =

1/(x^2-1)*(sin(x)-1) 7.3 求解二阶微分方程 例4 求y3yex

0的通解. 解 输入命令

dsolve('D2y+3*Dy+exp(x)=0','x')

得结果 ans =

-1/4*exp(x)+C1+C2*exp(-3*x)

例5 求解微分方程

ye2yy0.

解 输入命令

dsolve('D2y-exp(2*y)*Dy=0','x')

得结果 ans =

1/2*log(-2*C1/(-1+exp(2*x*C1+2*C2*C1)))+x*C1+C2*C1 .

练习

求下列微分方程的通解:

1.2x2

yyy2

1 ; 2.dyydxxyx

; 3.ycos

yxx

x

; 4.(xcosysin2y)y1; 5.y3yyex

cos2x ; 6.y4yx1sinx;

7.

x22xyy2(y22xyx2

)dydx0;



yx11

- 27 -

d2xdx

2na2x02

dtdt

8. .

dxxx,

t00t0V0dt

§8 空间图形的绘制

Matlab绘制空间曲线的命令为plot3,调用格式绘制平面曲线的命令plot类似。 例1 画出螺旋线x2cos3t,

y2sin3t,z1.5t的图形.

解 输入命令

t=linspace(0,4*pi,300); x=2*cos(3*t); y=2*sin(3*t); z=1.5*t; plot3(x,y,z)

结果如图所示.

例2 画出圆锥螺线xtcos3t,

ytsin3t,z1.5t的图形.

解 输入命令

t=linspace(0,4*pi,300); x=t.*cos(3*t); y=t.*sin(3*t); z=1.5*t; plot3(x,y,z)

结果如图所示。

Matlab绘制空间曲面的命令为mesh和surf,mesh绘制网格形状的曲面,surf绘制由小平面组成的曲面。

例3 画出抛物面zxy的图形. 解 输入命令

x=linspace(-2,2,20);

y=linspace(-3,3,30);

- 28 -

2

2

[x,y]=meshgrid(x,y); z=x.^2+y.^2; mesh(x,y,z)

结果如图所示.

若使用surf(x,y,z)可得如图的结果。还可以对曲面进行平滑插值处理:shading interp,得如下结果。

可以采用曲面的参数方程:xrcost,yrsint,zr2,输入命令 r=linspace(0,2,20); t=linspace(0,2*pi,30); [r,t]=meshgrid(r,t); x=r.*cos(t); y=r.*sin(t); z=r.^2; mesh(x,y,z) 结果如图

或surf(x,y,z);shading interp绘制平滑曲面图

- 29 -

§9 偏导数的计算

9.1 常用命令

matlab求偏导命令diff调用格式:

diff(函数f(x,y),变量名x), 求f(x,y)对x的偏导数

f; x

nf

diff(函数f(x,y), 变量名x,n) ,求f(x,y)对x的n阶偏导数.

xn

matlab求雅可比矩阵命令jacobian,调用格式:

jacobian([函数f(x,y,z);函数g(x,y,z); 函数h(x,y,z)], [x,y,z])给出矩阵

fxgxhx

fygyhy

fzg

. zhz

9.2 求多元函数的偏导数

例1 设 u=x2y2z2求 u的一阶偏导数.

解 输入命令

diff((x^2+y^2+z^2)^(1/2), x). 得结果

ans=1/(x^2+y^2+z^2)^(1/2)*x. 在命令中将末尾的x换成y将给出y的偏导数 ans=1/(x^2+y^2+z^2)^(1/2)*y. 也可以输入命令

jacobian((x^2+y^2+z^2)^(1/2),[x y]). 得结果

ans=[1/(x^2+y^2+z^2)^(1/2)*x, 1/(x^2+y^2+z^2)^(1/2)*y].



给出矩阵,.

xy

例2 求下列函数的偏导数:

- 30 -

y

z1arctg(); z2xy .

x

解 输入命令

diff(atan(y/x), 得结果

ans=-y/x^2/(1+y^2/x^2); 输入命令

diff(atan(y/x), y), 得结果

ans=1/x/(1+y^2/x^2); 输入命令

diff(x^y, x), 得结果

ans=x^y*y/x; 输入命令

diff(x^y, y), 得结果

ans=x^y*log(x).

使用jacobian命令求偏导数更为方便. 输入命令

jacobian([atan(y/x),x^y],[x,y]), 得结果

ans=[ -y/x^2/(1+y^2/x^2), 1/x/(1+y^2/x^2)] [ x^y*y/x, x^y*log(x)].

9.3 求高阶偏导数

例3 设zx63y42x2y2,求2z2z2z

x2,y2,

xy

. 解 输入命令

diff(x^6-3*y^4+2*x^2*y^2,x,2)

2可得到zx

2

ans=30*x^4+4*y^2.

将命令中最后一个x换为y得2y

2

ans=-36*y^2+4*x^2. 输入命令

- 31 -

diff(diff(x^6-3*y^4+2*x^2*y^2,x),y)

2

可得

xy

ans=8*x*y.

2

同学们可自己计算比较它们的结果.

yx

2

注意命令diff(x^6-3*y^4+2*x^2*y^2,x,y),是对y求偏导数,不是求.

xy

9.4 求隐函数所确定函数的导数或偏导数 例4 设lnxee,求

yx

yx

dy. dx

解 F(x,y)lnxe

e,先求Fx,再求Fy.

输入命令

df_dx=diff(log(x)+exp(-y/x)-exp(1),x) 得到Fx

df_dx=1/x+y/x^2*exp(-y/x); 输入命令

df_dy=diff(log(x)+exp(-y/x)-exp(1),y)

 得到Fy

df_dy=-1/x*exp(-y/x).

输入命令

dy_dx=-df_dx/df_dy 可得所求结果

dy_dx=-(-1/x-y/x^2*exp(-y/x))*x/exp(-y/x).

例5 设sin(xy)cos(yz)tg(xz)0 ,求z,z.

xy

解 记F(x)sin(xy)cos(yz)tg(xz). 输入命令

a=jacobian(sin(x*y)+cos(y*z)+tan(z*x),[x,y,z])

,Fz 可得矩阵Fx,Fy

a=

- 32 -



[cos(x*y)*y+(1+tan(z*x)^2)*z,cos(x*y)*x-sin(y*z)*z, -sin(y*z)*y+(1+tan(z*x)^2)*x]; 输入命令

dz_dx=-a(1)/a(3) 得

dz_dx=

(-cos(x*y)*y-(1+tan(z*x)^2)*z)/(-sin(y*z)*y+(1+tan(z*x)^2)*x); 输入命令

dz_dy=-a(2)/a(3) 得

dz_dy=

(-cos(x*y)*x+sin(y*z)*z)/(-sin(y*z)*y+(1+tan(z*x)^2)*x).

练习

1.求下列隐函数的导数: (1)arctg

y

x

lnx2y2 ; (2)xyyx . 2.求下列函数的偏导数:

z

(1) zx2sin(xy) ; (2)u

y

3.设uxln(xy),求22x2,

y2,2xy

. 4.求下列多元隐函数的偏导数x,y

.

(1)cos2xcos2ycos2z1 ; (2)ezxyz.

5.证明函数uln

(xa)2(yb)2(a,b为常数)满足拉普拉斯方程

2x22y2

0. (提示:对结果用simplify化简)

§10 重积分与曲线积分

10.1 二重积分计算

2 例1 求二次积分1x1

0dx

2x

xydy.

解 建立符号变量x和y后,输入命令

- 33 -

int(int(x*y,y,2*x,x^2+1),x,0,1) 得结果ans=1/12.

例2 计算二重积分

22(xyx)dxdy,其中D是由直线y2,yx及D

y2x所围成的闭区域.

解 该二重积分可以化为二次积分

2

dyy(x2y2x)dx,输入命令

2

y

int(int(x^2+y^2-x,x,y/2,y),y,0,2)

得结果ans= 13/6.

例3 计算积分I



2

dy

sinx

dx.

yx

解 输入命令

int(int(sin(x)/x,x,y-pi,pi),y,pi,2*pi) 得结果ans =2.

若不借助于计算机计算,需要交换积分次序. 例4 求

x2y21

sin((x2y2))dxdy.

x2,二重积

解 积分区域用不等式可以表示成1x1,x2y分可化为二次积分dx

1

1x2x

2

sin((x2y2)dy,输入命令

int(int(sin(pi*(x^2+y^2)),y,-sqrt(1-x^2),sqrt(1-x^2)),x,-1,1)

由输出结果可以看出,结果中仍带有int,表明matlab求不出这一积分的值.采用极坐标可化为二次积分

int(int(r*sin(pi*r^2),r,0,1),a,0,2*pi) 可得结果为ans=2.

10.2 三重积分计算 例5 计算三重积分I

0

2

darsin(r2)dr,输入命令

1

1

dx

1x

dy

1xy

dz

(1xyz)3

解 输入命令

int(int(int(1/(1+x+y+z)^3,z,0,1-x-y),y,0,1-x),x,0,1) 得结果ans =-5/16+1/2*log(2).

- 34 -

例6 计算三重积分

222

,为球面xyz1及三个坐标面所围xyzdxdydz

成的在第一卦限内的区域.

解 该三重积分可化为累次积分

dx

1

x2

dy

x2y2

xyzdz.输入命令

int(int(int(x*y*z,z,0,sqrt(1-x^2-y^2)),y,0,sqrt(1-x^2)),x,0,1)

得结果ans =1/48.

10.3 曲线积分计算 例7 求曲线积分

Lxyds,其中L为曲线x2y21在第一象限内的一段.

2

解 曲线的参数方程是xcost,ysint,(0t)曲线积分可以化为

20

costsintdt.

输入命令

int(cos(t)*sin(t),0,pi/2) 执行后即可求出曲线积分结果1/2.

例8 计算曲线积分

L

y2ds,L为摆线的一拱x2(tsint),ya(1cost),

(0t2).

解 曲线积分可以化为

2

4(1cost)288costdt.输入命令

int(4*(1-cos(t))^2*sqrt(8-8*cos(t)),t,0,2*pi) 得结果ans =1024/15*4^(1/2).

练习

1.计算二重积分: (1)

x2y21

(xy)dxdy; (2)(x2y2)dxdy.

x2y2x

2.计算三重积分: (1) (2)

0zyxa ; xyzdxdydz,:

xdxdydz,:xyza,x0,y0,z0.

3.计算

L

x2y2ds ,L为圆周x2y2ax(a0).

- 35 -

4.计算

L(x2y2)dx(x2y2)dy,其中L为抛物线yx2上从点(0,0)到点

(2,4)的一段弧.

§11 级数

11.1 常用命令

求已知函数的taylor展开式taylor命令,调用格式为: taylor(函数f(x)) f(x)的5次taylor多项式; taylor(函数f(x),n) f(x)的n-1次taylor多项式; taylor(函数f(x),a) f(x)在a点的taylor多项式. 求级数的和命令symsum调用格式为: symsum(S,n),求

S;

km

n

symsum(S,k,m,n),求

S.

n

matlab求极限命令limit调用格式为:

limit(函数f(x),变量x,自变量的趋向值)

11.2 taylor展开式

例1 求函数y=cosx在x=0点处的5阶taylor展开式及在x展开式.

解 输入命令

syms x;taylor(cos(x))

3

处的6阶taylor

得结果 ans =

1-1/2*x^2+1/24*x^4 ; 输入命令

taylor(cos(x),pi/3,7)

得结果 ans =

1/2-1/2*3^(1/2)*(x-1/3*pi)-1/4*(x-1/3*pi)^2+1/12*3^(1/2)*(x- 1/3*pi)^3+1/48*(x-1/3*pi)^4-1/240*3^(1/2)*(x-1/3*pi)^5-1/1440*(x-1/3*pi)^6 .

- 36 -

11.3 级数求和 例2 求



1n12

n

. 解 输入命令

syms n;symsum(1/2^n,1,inf)

得结果 ans = 1 .

例3 求幂级数xn

n2

的和函数.n1n

解 输入命令

symsum(x^n/(n*2^n),n,1,inf)

得结果 ans =

-log(1-1/2*x) . 例4 求幂级数

nx

n

的和函数.

n1

解 输入命令

symsum(n*x^n,n,1,inf)

得结果 ans =

x/(x-1)^2 .

11.4 判别级数敛散性 

例5判断数项级数

1

n(n1)

的收敛性.n1 解 输入求和命令

symsum(1/(n*(n+1)),n,1,inf)

得结果

ans = 1 .

求和得是1,说明该级数收敛. 

例6 判别级数

sin

n1

n(n1)

的敛散性. - 37 -

解 输入命令

symsum(sin(pi/(n*(n+1))),1,inf)

得结果 ans =

sum(sin(pi/n/(n+1)),pi = 1 .. inf) .

由执行结果看出仍含有sum,说明用matlab不能求出其和,可采用比较判别法,取比较级数为P级数输入命令

limit(sin(pi/(n*(n+1)))/(1/n^2),n,inf)

1

,取二者通项比值的极限. 2nn1

得结果

ans = pi .

得值为pi,由所取P级数收敛,得知所要判别的级数也收敛.

3

例7 判别级数n的敛散性.

n14

解 用比值判别法,输入命令

limit((n+1)*(3/4)^(n+1)/(n*(3/4)^n),n,inf)

n

得结果 ans = 3/4 .

极限值小于1,由比值判别法知级数收敛.实际上输入求和命令

symsum(n*(3/4)^n,n,1,inf)

得结果 ans = 12 .

练习

1.给出函数f(x)esinx2cosx在点x0的7阶taylor展开式以及在x=1处的 5阶taylor展开式.

2.判别下列级数的敛散性,若收敛求其和.

111

(1)1 ; (2)tg;

3572nn1n1

n11n

(3)(1) ; (4)(1).

2nlnnnn1n1n2

x

x

- 38 -

3.求幂级数

(1)

n2

n

xnnn

2

的和函数.

4.求函数项级数

(1)nsin

n1

2n

xn)的和函数.

- 39 -


相关文章

  • [微积分应用基础]课程教学大纲
  • <微积分应用基础>课程教学大纲 课程代号: 学时数:64 理论学时数:54 实践学时数:10 学分:4 开课单位:基础部 一.本课程的性质.地位和作用 <微积分应用基础>是全院工科类.经管类各专业必修的公共基础课. ...查看


  • 方波和方波信号的卷积及卷积过程演示
  • 课程设计任务书 目 录 1 引 言 ...................................................................................................... ...查看


  • [数学实验]实验教学大纲_4
  • <数学实验>实验教学大纲 (2007年修订) 课程代码:0501122001.0503122002课程性质:非独立设课实验学分:1学分 适用专业:数学与应用数学 信息与计算科学 一.实验教学目标 <数学实验>是大学数 ...查看


  • 用MATLAB符号工具箱编程求常微分方程的通解
  • 洛阳师范学院学报2005年第2期・81・ 用MATLAB符号工具箱编程求常微分方程的通解 唐洪浪,桂现才 (湛江师范学院数学系,广东湛江524048) 摘 要:用MATLAB的函数dsolve解常微分方程时,只能得出解析解,对于解的结果只能 ...查看


  • 电力拖动论文
  • 电力拖动课程设计 作 者 段发鑫 系 (院) 信息工程学院 专 业 电气工程及其自动化 年 级 2010级 学 号 K031041513 指导教师 耿东山 日 期 2013.5.5 基于MATLAB的数字PID直流电机调速 系统 摘 要: ...查看


  • 控制系统数字仿真大作业
  • <控制系统数字仿真>课程 大作业 姓 名 : 学 号 : 班 级 : 日 期 : 同组人员 : 目录 一.引言 ................................................. 2 二.设计方法 ...查看


  • 数值分析课程设计(最终版)
  • 本文主要通过Matlab 软件,对数值分析中的LU 分解法.最小二乘法.复化Simpon 积分.Runge-Kutta 方法进行编程,并利用这些方法在MATLAB 中对一些问题进行求解,并得出结论. 实验一线性方程组数值解法中,本文选取LU ...查看


  • 微机继电保护实验报告
  • 课程名称:微机继电保护 实验项目:电力系统继电保护仿真实验 实验地点:电力系统仿真实验室 专业班级:电气 学生姓名:指导教师: 本科实验报告 1200学号:0000000000 000000 000000 2015年 12 月 2 日 微机 ...查看


  • 精确制导导弹制导控制系统仿真
  • 4.4分 我来评价 5人评价 请选择星星评价 想要纸本书?按需印刷服务 精确制导导弹制导控制系统仿真 作者:符文星 出版日期:2010 页数:167 关键词:导弹制导 控制系统 系统仿真 分类: 工业技术 >火箭.导弹 在线阅读精确制 ...查看


热门内容