1、MATLABMATLAB的符号运算的符号运算 一、相关知识一、相关知识p在微积分中,我们曾经学习了求函数的极限和微分在微积分中,我们曾经学习了求函数的极限和微分的运算,那时我们根据微积分的原理,学习了一整的运算,那时我们根据微积分的原理,学习了一整套各种各样的方法,其中包括了许多技巧,现在套各种各样的方法,其中包括了许多技巧,现在我我们尝试用软件来解决这样的问题。们尝试用软件来解决这样的问题。p在在MATLAB中,常用的初等函数表示方法如下:中,常用的初等函数表示方法如下:函数名函数名功能功能MATLABMATLAB命令命令幂函数幂函数求求x x的的a a次幂次幂xaxa求求x x的平方根的平
2、方根sqrt(xsqrt(x)指数函数指数函数求求a a的的x x次幂次幂axax求求e e的的x x次幂次幂exp(xexp(x)对数函数对数函数求求x x的自然对数的自然对数log(xlog(x)求求x x的以的以2 2为底的对数为底的对数log2(x)log2(x)求求x x的以的以1010为底的对数为底的对数log10(x)log10(x)三角函数三角函数正弦函数正弦函数sin(xsin(x)余弦函数余弦函数cos(xcos(x)正切函数正切函数tan(xtan(x)余切函数余切函数cot(xcot(x)正割函数正割函数sec(xsec(x)余割函数余割函数csc(xcsc(x)反三角
3、函数反三角函数反正弦函数反正弦函数asin(xasin(x)反余弦函数反余弦函数acos(xacos(x)反正切函数反正切函数atan(xatan(x)反余切函数反余切函数acot(xacot(x)反正割函数反正割函数asec(xasec(x)反余割函数反余割函数acsc(xacsc(x)绝对值函数绝对值函数求求x x的绝对值的绝对值abs(xabs(x)pMATLAB提供的命令函数提供的命令函数limit()可以完成极限运算,可以完成极限运算,其调用格式如下:其调用格式如下:p limit(F,x,a,left)p该命令对表达式该命令对表达式F求极限,独立变量求极限,独立变量x从左边趋于从左
4、边趋于a,函数中除函数中除F外的参数均可省略,外的参数均可省略,left可换可换成成right。举例如下:。举例如下:p例例1:求极限:求极限 。p解:可用以下程序完成:解:可用以下程序完成:pclear pF=sym(1+a/x)x)plimit(F,x,inf,left)xxxaS)1(limp结果为结果为exp(a)。其中,语句。其中,语句F=sym(1+a/x)x)表示定义符号表达式表示定义符号表达式p也也可用以下的语句来完成:可用以下的语句来完成:pclear;psyms x%这里是把这里是把x先说明成符号。先说明成符号。pF=(1+a/x)x%这里的定义形式和前面不同。这里的定义形
5、式和前面不同。plimit(F,x,inf,left)%这里的这里的x本身就是符号,本身就是符号,因因 p 此不需要单引号。此不需要单引号。xxa1pMATLAB提供的函数提供的函数diff()可以完成对给定函数求可以完成对给定函数求导函数的运算,其调用格式如下:导函数的运算,其调用格式如下:diff(fun,x,n)p其意义是求函数其意义是求函数fun关于变量关于变量x的的n阶导数,阶导数,n为为1时时可省略。这里的可省略。这里的fun用上例的后一种方式来定义较用上例的后一种方式来定义较为妥当。我们看下面的例:为妥当。我们看下面的例:pclear;psyms x%这里是把这里是把x先说明成符
6、号。先说明成符号。pF=(1+a/x)x%这里的定义形式和前面不同。这里的定义形式和前面不同。plimit(F,x,inf,left)%这里的这里的x本身就是符号,本身就是符号,因因 p 此不需要单引号。此不需要单引号。pMATLAB提供的函数提供的函数diff()可以完成对给定函数求可以完成对给定函数求导函数的运算,其调用格式如下:导函数的运算,其调用格式如下:diff(fun,x,n)p其意义是求函数其意义是求函数fun关于变量关于变量x的的n阶导数,阶导数,n为为1时时可省略。这里的可省略。这里的fun用上例的后一种方式来定义较用上例的后一种方式来定义较为妥当。我们看下面的例:为妥当。我
7、们看下面的例:p例例2:求函数:求函数 的一阶和三阶导数。的一阶和三阶导数。2ln1xyxp解:可用以下程序完成:解:可用以下程序完成:pclear;psyms xpy=log(x+2)/(1-x);pdy=diff(y,x)pdy3=diff(y,x,3)ppretty(dy3)p这里用到的另一个函数:这里用到的另一个函数:pretty(),其功能是使它,其功能是使它作用的表达式更符合数学上的书写习惯。作用的表达式更符合数学上的书写习惯。二、实验内容二、实验内容 p1求下列极限,将完成实验的程序写到文件求下列极限,将完成实验的程序写到文件sy31.m中:中:1)2)3)4)5)xxFxarc
8、tanlim10 xxxxF1011lim220sin)1ln(lim3xxxFxarctan4limxxFx31115lim()11xFxxp2求下列函数的导数,将完成实验的程序写到文求下列函数的导数,将完成实验的程序写到文件件sy32.m中:中:p1)p2)p3)p4),计算,计算 p5),计算,计算xxy3coscos13xxxylnsin2 xxeyxsin13cosxyex(4)y2sin2yxx(20)y MATLABMATLAB中的积分运算中的积分运算 一、相关知识一、相关知识p在微积分中,我们曾经学习了求函数不定积分和定在微积分中,我们曾经学习了求函数不定积分和定积分的运算,那
9、时我们根据微积分的原理,学习了积分的运算,那时我们根据微积分的原理,学习了一整套各种各样的方法,其中包括了许多技巧,现一整套各种各样的方法,其中包括了许多技巧,现在我们尝试用软件来解决这样的问题。在我们尝试用软件来解决这样的问题。pMATLAB提供的命令函数提供的命令函数int()可以完成积分运算,可以完成积分运算,其调用格式有如下几种:其调用格式有如下几种:pint(fun)计算函数计算函数fun关于默认变量的不定积分关于默认变量的不定积分pint(fun,x)计算函数计算函数fun关于变量关于变量x的不定积分的不定积分pint(fun,x,a,b)计算函数计算函数fun关于变量关于变量x从
10、从a到到b的的定积分定积分p我们通过例子来学习具体的用法:我们通过例子来学习具体的用法:p例例1:计算不定积分:计算不定积分 。p解:可以用下面的程序完成:解:可以用下面的程序完成:pclearpy=sym(x5+x3-sqrt(x)/4)pint(y)ppretty(ans)53()4xxxdxp例例2:计算定积分计算定积分 。p解:可以用下面的程序实现计算:解:可以用下面的程序实现计算:pclearpsyms xpy=(x*exp(x)/(1+x)2;pint(y,0,1)120(1)xxedxxp例例3:计算二重积分:计算二重积分 ,其中,其中D为曲线为曲线 和和 所围成的区域。所围成的
11、区域。p解:解:区域区域D可用不等式表示为:可用不等式表示为:p所以,计算该积分的所以,计算该积分的MATLAB程序为程序为:pclearpsyms x ypf=x*x+y;pint(int(f,y,x*x,sqrt(x),x,0,1)2()Dxy dxdy2yx2xy2,01xyxxp例例4:被积曲面:被积曲面S为球面为球面 在第一卦限部在第一卦限部分的外则,计算曲面积分分的外则,计算曲面积分 。p解:先把问题转化为二重积分,积分区域为解:先把问题转化为二重积分,积分区域为x,y平平面内的第一象限部分。具体的计算公式为:面内的第一象限部分。具体的计算公式为:p然后计算该二次积分,程序如下:然
12、后计算该二次积分,程序如下:2221xyzSIxyzdxdySxyzdxdyI21122001xxyxy dydx pclearpsyms x y zpz=sqrt(1-x2-y2)pf=x*y*zpI=int(int(f,y,0,sqrt(1-x2),x,0,1)p这里我们看到,所有的积分计算都是利用函数这里我们看到,所有的积分计算都是利用函数int完成的,当我们遇到二重积分、三重积分和曲线、完成的,当我们遇到二重积分、三重积分和曲线、曲面积分时需要先化为相应的累次积分,再用曲面积分时需要先化为相应的累次积分,再用int来完成积分的计算。来完成积分的计算。三、实验内容三、实验内容1求下列函数
13、的积分:求下列函数的积分:1)2)3)2求二重积分:求二重积分:,3求三重积分:求三重积分:,由曲面,由曲面 ,所围成。所围成。dxxxx)4(35cxdxbxaxsinsinsin102)1(dxxxexDdxdyxyx1 1,0 1,0DVzdxdydz22yxz1z2z4求曲面积分:求曲面积分:,其中,其中 为锥面为锥面 在平面在平面 和平面和平面 之间的曲面的外则。之间的曲面的外则。222e dxdyxy22zxy1z 2z 方程和方程组的求解方程和方程组的求解 一、相关知识一、相关知识p在在MATLAB中,由函数中,由函数solve()、null()、fsolve(),fzero等来
14、解决线性方程(组)和非线性方程(组)等来解决线性方程(组)和非线性方程(组)的求解问题,其具体格式如下:的求解问题,其具体格式如下:pX=solve(eqn1,eqn2,eqnN,var1,var2,varN)p X=fsolve(fun,x0,options)p函数函数solve用来解符号方程、方程组,以及超越方用来解符号方程、方程组,以及超越方程,如三角函数方程等非线性方程。参数程,如三角函数方程等非线性方程。参数eqnN为方程组中的第为方程组中的第N个方程,个方程,varN则是第则是第N个变个变量。量。二、相关知识二、相关知识p函数函数null(A)则用来解线性方程组则用来解线性方程组A
15、X=O的基础解系,的基础解系,实际是求系数矩阵实际是求系数矩阵A的零空间,在的零空间,在null函数中可加函数中可加入参数入参数r,表示有理基。通过求系数矩阵的秩表示有理基。通过求系数矩阵的秩和增广矩阵的秩,可以判定方程组是否有解,以及和增广矩阵的秩,可以判定方程组是否有解,以及是否需要求基础解系。是否需要求基础解系。p X=fsolve(fun,x0,options)p函数函数solve用来解符号方程、方程组,以及超越方用来解符号方程、方程组,以及超越方程,如三角函数方程等非线性方程。参数程,如三角函数方程等非线性方程。参数eqnN为方程组中的第为方程组中的第N个方程,个方程,varN则是第
16、则是第N个变个变量。量。p例例1:求解方程求解方程 的的MATLAB程序为:程序为:X=solve(x2-x-6=0,x)p结果为:结果为:X=3,-2p例例2:求解方程组求解方程组 的程序为:的程序为:pX,Y=solve(x2+y-6=0,y2+x-6=0,x,y)p结果为:结果为:X=2,-3,1/2-1/2*21(1/2),1/2+1/2*21(1/2)pY=2,-3,1/2+1/2*21(1/2),1/2-1/2*21(1/2)260 xx226060 xyyxp例例3:求解方程组:求解方程组 的程序为:的程序为:pclearpformat ratpA=5,0,4,2;1,-1,2,
17、1;4,1,2,0;1,1,1,1;pB=3;1;1;0;pX=ABp结果请大家自己运行。结果请大家自己运行。134123412312345423214210 xxxxxxxxxxxxxxp例例4:求方程组:求方程组 p的通解的程序为:的通解的程序为:pclearpformat ratpA=1,2,2,1;2,1,-2,-2;1,-1,-4,-3pC=null(A,r)求出矩阵求出矩阵A的解空间的有理基。的解空间的有理基。p结果如下:结果如下:1234123412342202220430 xxxxxxxxxxxxpC=p 2 5/3 p -2 -4/3 p 1 0 p 0 1p接着,用命令:接
18、着,用命令:psyms k1 k2pX=k1*C(:,1)+k2*C(:,2)p求出的通解为:求出的通解为:pX=p 2*k1+5/3*k2p-2*k1-4/3*k2p k1p k2p例例5:求方程组求方程组 p的通解的程序为:的通解的程序为:pclearpformat ratpA=sym(1,2,2,1;2,1,-2,-2;1,-1,-4,-3)pb=sym(1;2;2)pB=A,bpn=length(A(1,:)pRA=rank(eval(A)pRB=rank(eval(B)1234123412342212222433xxxxxxxxxxxxpif(RA=RB&RA=n)p X=eval(
19、AB)在方程组满秩时,求出唯一解在方程组满秩时,求出唯一解pelseif(RA=RB&RAn)p C=eval(Ab)在方程组不满秩时,求出特解在方程组不满秩时,求出特解p D=null(eval(A),r)求出矩阵求出矩阵A的零空间的零空间的的 基,即方程组的基础解系基,即方程组的基础解系p syms k1 k2p X=k1*D(:,1)+k2*D(:,2)+C 求出方程组的全部解pelsep fprintf(No Solution for the Equations)pendp结果请大家自己运行。结果请大家自己运行。p现在我们转而来看非线性方程组的求解,对于非线现在我们转而来看非线性方程组
20、的求解,对于非线性方程组,我们用函数性方程组,我们用函数fsolve来求解。来求解。p例例6:求解非线性方程组求解非线性方程组 p时,我们采用如下的方法,先建立存放函数的时,我们采用如下的方法,先建立存放函数的m文件,文件名必须与函数名一致,这里就应该为,文件名必须与函数名一致,这里就应该为sy6_6.m,内容如下:内容如下:pfunction y=sy6_6(x)py(1)=x(1)-0.5*sin(x(1)-0.3*cos(x(2)py(2)=x(2)-0.5*cos(x(1)+0.3*sin(x(2)p接着,我们建立另一个接着,我们建立另一个m文件文件sy6_6_1.m,其内容,其内容为
21、:为:1122120.5sin0.3cos00.5cos0.3sin0 xxxxxxpclearpformat shortpx0=0.1,0.1pfsolve(sy6_6,x0,optimset(fsolve)这里的optimset(fsolve)部分是优化设置,可以不用部分是优化设置,可以不用pfunction y=sy6_6(x)py(1)=x(1)-0.5*sin(x(1)-0.3*cos(x(2)py(2)=x(2)-0.5*cos(x(1)+0.3*sin(x(2)p接着,我们建立另一个接着,我们建立另一个m文件文件sy6_6_1.m,其内容,其内容为:为:pclearpformat
22、 shortpx0=0.1,0.1pfsolve(sy6_6,x0,optimset(fsolve)这里的optimset(fsolve)部分是优化设置,可以不用部分是优化设置,可以不用p结果是:结果是:0.5414,0.3310。三、实验内容三、实验内容p1利用利用MATLAB求线性方程组求线性方程组 p 的全部解。的全部解。p2利用利用MATLAB求方程求方程 的解。的解。p3利用利用MATLAB求方程求方程 在区间在区间p 中的全部解。中的全部解。cosx1234234123412343212240 xxxxxxxxxxxxxxx 0 xxe25sin0 xxxe0,10p4利用利用MATLAB求方程组求方程组 的解。的解。p5利用函数利用函数fzero求解方程求解方程 在区间在区间 上的根。上的根。0.7sin0.2cos00.7cos0.2sin0 xxyyxy220.2xx e 3,3