资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,MATLAB的符号运算,MATLAB的符号运算,1,一、相关知识,在微积分中,我们曾经学习了求函数的极限和微分的运算,那时我们根据微积分的原理,学习了一整套各种各样的方法,其中包括了许多技巧,现在,我们尝试用软件来解决这样的问题。,在MATLAB中,常用的初等函数表示方法如下:,函数名,功能,MATLAB命令,幂函数,求x的a次幂,xa,求x的平方根,sqrt(x),指数函数,求a的x次幂,ax,求e的x次幂,exp(x),一、相关知识在微积分中,我们曾经学习了求函数的极限和微分的运,2,对数函数,求x的自然对数,log(x),求x的以2为底的对数,log2(x),求x的以10为底的对数,log10(x),三角函数,正弦函数,sin(x),余弦函数,cos(x),正切函数,tan(x),余切函数,cot(x),正割函数,sec(x),余割函数,csc(x),对数函数求x的自然对数log(x)求x的以2为底的对数log,3,反三角函数,反正弦函数,asin(x),反余弦函数,acos(x),反正切函数,atan(x),反余切函数,acot(x),反正割函数,asec(x),反余割函数,acsc(x),绝对值函数,求x的绝对值,abs(x),反三角函数反正弦函数asin(x)反余弦函数acos(x)反,4,MATLAB提供的命令函数limit()可以完成极限运算,其调用格式如下:,limit(F,x,a,left),该命令对表达式F求极限,独立变量x从左边趋于a,函数中除F外的参数均可省略,left可换成right。举例如下:,例1:求极限 。,解:可用以下程序完成:,clear,F=sym(1+,a,/x)x),limit(F,x,inf,left),MATLAB提供的命令函数limit()可以完成极限运算,其,5,结果为exp(,a,)。其中,语句F=sym(1+,a,/x)x)表示定义符号表达式,也,可用以下的语句来完成:,clear;,syms x%这里是把x先说明成符号。,F=(1+a/x)x%这里的定义形式和前面不同。,limit(F,x,inf,left)%这里的x本身就是符号,因,此不需要单引号。,结果为exp(a)。其中,语句F=sym(1+a/x),6,MATLAB提供的函数diff()可以完成对给定函数求导函数的运算,其调用格式如下:,diff(fun,x,n),其意义是求函数fun关于变量x的n阶导数,n为1时可省略。这里的fun用上例的后一种方式来定义较为妥当。我们看下面的例:,clear;,syms x%这里是把x先说明成符号。,F=(1+a/x)x%这里的定义形式和前面不同。,limit(F,x,inf,left)%这里的x本身就是符号,因,此不需要单引号。,MATLAB提供的函数diff()可以完成对给定函数求导函数,7,MATLAB提供的函数diff()可以完成对给定函数求导函数的运算,其调用格式如下:,diff(fun,x,n),其意义是求函数fun关于变量x的n阶导数,n为1时可省略。这里的fun用上例的后一种方式来定义较为妥当。我们看下面的例:,例2:求函数 的一阶和三阶导数。,MATLAB提供的函数diff()可以完成对给定函数求导函数,8,解:可用以下程序完成:,clear;,syms x,y=log(x+2)/(1-x);,dy=diff(y,x),dy3=diff(y,x,3),pretty(dy3),这里用到的另一个函数:pretty(),其功能是使它作用的表达式更符合数学上的书写习惯。,解:可用以下程序完成:,9,二、实验内容,1求下列极限,将完成实验的程序写到文件sy31.m中:,1)2),3)4),5),二、实验内容 1求下列极限,将完成实验的程序写到文件sy3,10,2求下列函数的导数,将完成实验的程序写到文件sy32.m中:,1),2),3),4),计算,5),计算,2求下列函数的导数,将完成实验的程序写到文件sy32.m中,11,MATLAB中的积分运算,MATLAB中的积分运算,12,一、相关知识,在微积分中,我们曾经学习了求函数不定积分和定积分的运算,那时我们根据微积分的原理,学习了一整套各种各样的方法,其中包括了许多技巧,现在我们尝试用软件来解决这样的问题。,MATLAB,提供的命令函数,int(),可以完成积分运算,其调用格式有如下几种:,int(fun),计算函数,fun,关于默认变量的不定积分,int(fun,x),计算函数,fun,关于变量x的不定积分,int(fun,x,a,b),计算函数,fun,关于变量,x,从,a,到,b,的定积分,我们通过例子来学习具体的用法:,一、相关知识在微积分中,我们曾经学习了求函数不定积分和定积分,13,例,1,:计算不定积分 。,解:可以用下面的程序完成:,clear,y=sym(x5+x3-sqrt(x)/4),int(y),pretty(ans),数学建模-Matlab符号计算描述ppt课件,14,例,2,:,计算定积分 。,解:可以用下面的程序实现计算:,clear,syms x,y=(x*exp(x)/(1+x)2;,int(y,0,1),数学建模-Matlab符号计算描述ppt课件,15,例,3,:计算二重积分 ,其中,D,为曲线,和 所围成的区域。,解:,区域,D,可用不等式表示为:,所以,计算该积分的,MATLAB,程序为,:,clear,syms x y,f=x*x+y;,int(int(f,y,x*x,sqrt(x),x,0,1),例3:计算二重积分 ,,16,例,4,:被积曲面,S,为球面 在第一卦限部分的外则,计算曲面积分 。,解:先把问题转化为二重积分,积分区域为,x,y,平面内的第一象限部分。具体的计算公式为:,然后计算该二次积分,程序如下:,例4:被积曲面S为球面 在第,17,clear,syms x y z,z=sqrt(1-x2-y2),f=x*y*z,I=int(int(f,y,0,sqrt(1-x2),x,0,1),这里我们看到,所有的积分计算都是利用函数,int,完成的,当我们遇到二重积分、三重积分和曲线、曲面积分时需要先化为相应的累次积分,再用,int,来完成积分的计算。,clear,18,三、实验内容,1,求下列函数的积分:,1),2),3),2,求二重积分:,,3,求三重积分:,由曲面 ,,,所围成。,三、实验内容1求下列函数的积分:,19,4,求曲面积分:,其中 为锥面,在平面 和平面 之间的曲面的外则。,4求曲面积分:,其中 为锥面,20,方程和方程组的求解,方程和方程组的求解,21,一、相关知识,在,MATLAB,中,由函数,solve()、null()、fsolve(),fzero,等来解决线性方程(组)和非线性方程(组)的求解问题,其具体格式如下:,X=solve(eqn1,eqn2,eqnN,var1,var2,varN),X=fsolve(fun,x0,options),函数,solve,用来解符号方程、方程组,以及超越方程,如三角函数方程等非线性方程。参数,eqnN,为方程组中的第,N,个方程,,varN,则是第,N,个变量。,一、相关知识在MATLAB中,由函数solve()、null,22,二、相关知识,函数,null(A),则用来解线性方程组,AX=O,的基础解系,实际是求系数矩阵,A,的零空间,在,null,函数中可加入参数,r,,表示有理基。通过求系数矩阵的秩和增广矩阵的秩,可以判定方程组是否有解,以及是否需要求基础解系。,X=fsolve(fun,x0,options),函数,solve,用来解符号方程、方程组,以及超越方程,如三角函数方程等非线性方程。参数,eqnN,为方程组中的第,N,个方程,,varN,则是第,N,个变量。,二、相关知识函数null(A)则用来解线性方程组AX=O的基,23,例,1:,求解方程 的,MATLAB,程序为:,X=solve(x2-x-6=0,x),结果为:,X=3,-2,例,2:,求解方程组 的程序为:,X,Y=solve(x2+y-6=0,y2+x-6=0,x,y),结果为:,X=2,-3,1/2-1/2*21(1/2),1/2+1/2*21(1/2),Y=2,-3,1/2+1/2*21(1/2),1/2-1/2*21(1/2),例1:求解方程 的MATLA,24,例,3,:求解方程组 的程序为:,clear,format rat,A=5,0,4,2;1,-1,2,1;4,1,2,0;1,1,1,1;,B=3;1;1;0;,X=AB,结果请大家自己运行。,数学建模-Matlab符号计算描述ppt课件,25,例,4,:求方程组,的通解的程序为:,clear,format rat,A=1,2,2,1;2,1,-2,-2;1,-1,-4,-3,C=null(A,r),求出矩阵,A,的解空间的有理基。,结果如下:,数学建模-Matlab符号计算描述ppt课件,26,C=,2 5/3,-2 -4/3,1 0,0 1,接着,用命令:,syms k1 k2,X=k1*C(:,1)+k2*C(:,2),C=,27,求出的通解为:,X=,2*k1+5/3*k2,-2*k1-4/3*k2,k1,k2,求出的通解为:,28,例,5:,求方程组,的通解的程序为:,clear,format rat,A=sym(1,2,2,1;2,1,-2,-2;1,-1,-4,-3),b=sym(1;2;2),B=A,b,n=length(A(1,:),RA=rank(eval(A),RB=rank(eval(B),数学建模-Matlab符号计算描述ppt课件,29,if(RA=RB&RA=n),X=eval(AB),在方程组满秩时,求出唯一解,elseif(RA=RB&RAn),C=eval(Ab),在方程组不满秩时,求出特解,D=null(eval(A),r),求出矩阵,A,的零空间的,基,即方程组的基础解系,syms k1 k2,X=k1*D(:,1)+k2*D(:,2)+C 求出方程组的全部解,数学建模-Matlab符号计算描述ppt课件,30,else,fprintf(No Solution for the Equations),end,结果请大家自己运行。,现在我们转而来看非线性方程组的求解,对于非线性方程组,我们用函数,fsolve,来求解。,else,31,例,6:,求解非线性方程组,时,我们采用如下的方法,先建立存放函数的,m文件,,文件名必须与函数名一致,这里就应该为,sy6_6.m,,内容如下:,function y=sy6_6(x),y(1)=x(1)-0.5*sin(x(1)-0.3*cos(x(2),y(2)=x(2)-0.5*cos(x(1)+0.3*sin(x(2),接着,我们建立另一个,m,文件,sy6_6_1.m,,其内容为:,数学建模-Matlab符号计算描述ppt课件,32,clear,format short,x0=0.1,0.1,fsolve(sy6_6,x0,optimset(fsolve)这里的optimset(fsolve),部分是优化设置,可以不用,function y=sy6_6(x),y(1)=x(1)-0.5*sin(x(1)-0.3*cos(x(2),y(2)=x(2)-0.5*cos(x(1)+0.3*sin(x(2),接着,我们建立另一个,m,文件,sy6_6_1.m,,其内容为:,clear,33,clear,format short,x0=0.1,0.1,fsolve(sy6_6,x0,optimset(fsolve)这里的optimset(fsolve),部分是优化设置,可以不用,结果是:,0.5414,0.3310。,clear,34,三、实验内容,1,利用,MATLAB
展开阅读全文