MATLAB R2007基础教程PPT教学课件-第8章 MATLAB的符号计算功能.ppt_第1页
MATLAB R2007基础教程PPT教学课件-第8章 MATLAB的符号计算功能.ppt_第2页
MATLAB R2007基础教程PPT教学课件-第8章 MATLAB的符号计算功能.ppt_第3页
MATLAB R2007基础教程PPT教学课件-第8章 MATLAB的符号计算功能.ppt_第4页
MATLAB R2007基础教程PPT教学课件-第8章 MATLAB的符号计算功能.ppt_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2019年12月6日,第1页,第8章MATLAB的符号计算功能,MATLABR2007基础教程清华大学出版社,教学目标教学重点教学内容,2019年12月6日,第2页,教学目标,掌握基本符号运算掌握符号函数图形绘制掌握符号微积分的运算掌握符号线性代数掌握符号方程的求解方法掌握符号积分变换了解Maple函数的调用方法了解符号函数计算器的使用,2019年12月6日,第3页,教学重点,符号函数图形绘制符号微积分的运算符号线性代数符号方程的求解方法符号积分变换,2019年12月6日,第4页,教学内容,符号运算简介符号表达式的化简与替换符号函数图形绘制符号微积分符号线性代数符号方程的求解符号积分变换MAPLE函数的调用符号函数计算器,2019年12月6日,第5页,符号运算简介,符号对象符号变量、表达式的生成findsym函数和subs函数符号和数值之间的转化任意精度的计算创建符号方程,2019年12月6日,第6页,符号对象,符号对象是符号工具箱中定义的另一种数据类型。符号对象是符号的字符串表示。在符号工具箱中符号对象用于表示符号变量、表达式和方程。下例说明了符号对象和普通的数据对象之间的差别。例7-1符号对象和普通数据对象之间的差别在命令窗口中输入如下命令sqrt(2)ans=1.4142x=sqrt(sym(2)x=2(1/2),返回数值结果,返回符号结果,2019年12月6日,第7页,由上例可以看出,当采用符号运算时,并不计算出表达式的结果,而是给出符号表达。如果可以查看符号x所表示的值,在窗口中输入:double(x)ans=1.4142另外,对符号进行的数学运算与对数值进行的数学运算并不相同,看下面的例子例7-2符号运算和数值运算之间的差别sym(2)/sym(5)ans=2/5,2019年12月6日,第8页,两个符号进行运算,结果为分数形式。继续输入:2/5+1/3ans=0.7333sym(2)/sym(5)+sym(1)/sym(3)ans=11/15double(sym(2)/sym(5)+sym(1)/sym(3)ans=0.7333由上例看出,当进行数值运算时,得到的结果为double型数据,采用符号进行运算时,输出的结果为分数形式。,2019年12月6日,第9页,符号变量、表达式的生成,MATLAB中有两个函数用于符号变量、符号表达式的生成,这两个函数为sym和syms,分别用于生成一个或多个符号对象。1.sym函数sym函数可以用于生成单个的符号变量。在上面一节中已经初步涉及了sym函数,本节将要详细介绍该函数。该函数的调用格式为:S=sym(A),如果参数A为字符串,则返回的结果为一个符号变量或者一个符号数值;如果A是一个数字或矩阵,则返回结果为该参数的符号表示。x=sym(x),该命令创建一个符号变量,该变量的内容为x,表达为x。x=sym(x,real),指定符号变量x为实数。x=sym(x,unreal),指定x为一个纯粹的变量,而不具有其他属性。S=sym(A,flag),其中参数flag可以为r,d,e,或者f中的一个。该函数将数值标量或者矩阵转化为参数形式,该函数的第二个参数用于指定浮点数转化的方法,该函数各个取值的意义如表所示。,2019年12月6日,第10页,创建复数符号变量,MATLAB中一种特殊的符号表达式为复数,创建复数符号变量可以有两种方法:直接创建法间接创建法,2019年12月6日,第11页,findsym函数,findsym函数该函数用于确定一个表达式中的符号变量。在上面的例子中,表达式f中包含有四个符号变量,表达式g中包含有1个符号变量,其他变量为普通变量。findsym函数通常由系统自动调用,在进行符号运算时,系统调用该函数确定表达式中的符号变量,执行相应的操作。,2019年12月6日,第12页,subs函数,subs函数subs函数可以将符号表达式中的符号变量用数值代替。在对多变量符号表达式使用subs函数时,如果不指定变量,则系统选择默认变量进行计算。默认变量的选择规则为:对于只包含一个字符的变量,选择靠近x的变量作为默认变量;如果有两个变量和x之间的距离相同,则选择字母表后面的的变量作为默认变量。,2019年12月6日,第13页,符号和数值之间的转化,在符号变量生成一节中已经介绍了sym函数,该函数用于生成符号变量,也可以将数值转化为符号变量。转化的方式由参数“flag”确定。flag的取值及具体意义在上面的一节中已经叙述过。sym的另一个重要作用为将数值矩阵转化为符号矩阵。,2019年12月6日,第14页,任意精度的计算,符号计算的一个非常显著的特点是:在计算过程中不会出现舍入误差,从而可以得到任意精度的数值解。如果希望计算结果精确,可以用符号计算来获得足够高的计算精度。符号计算相对于数值计算而言,需要更多的计算时间和存储空间。MATLAB工具箱中有三种不同类型的算术运算:数值型:MATLAB的浮点数运算;有理数类型:Maple的精确符号运算;VPA类型:Maple的任意精度算术运算。,2019年12月6日,第15页,在三种运算中,浮点运算速度最快,所需的内存空间小,但是结果精确度最低。双精度数据的输出位数由format命令控制,但是在内部运算时采用的是计算机硬件所提供的八位浮点运算。而且,在浮点运算的每一步,都存在一个舍入误差,如上面的运算中存在三步舍入误差:计算1/3的舍入误差,计算1/2+1/3的舍入误差,和将最后结果转化为十进制输出时的舍入误差。符号运算中的有理数运算,其时间复杂度和空间复杂度都是最大的,但是,只要时间和空间允许,能够得到任意精度的结果。可变精度的运算运算速度和精确度均位于上面两种运算之间。其具体精度由参数指定,参数越大,精确度越高,运行越慢。,2019年12月6日,第16页,创建符号方程(1/2),1创建抽象方程MATLAB中可以创建抽象方程,即只有方程符号,没有具体表达式的方程。若要创建方程,并计算其一阶微分的方法如下:f=sym(f(x);symsxh;df=(subs(f,x,x+h)-f)/hdf=(f(x+h)-f(x)/h抽象方程在积分变换中有着很多的应用。,2019年12月6日,第17页,创建符号方程(2/2),2创建符号方程创建符号方程的方法有两种:利用符号表达式创建先创建符号变量,通过符号变量的运算生成符号函数直接生成符号表达式创建M文件利用M文件创建的函数,可以接受任何符号变量作为输入,作为生成函数的自变量,2019年12月6日,第18页,符号表达式的化简与替换,符号表达式的化简符号表达式的替换,2019年12月6日,第19页,符号表达式的化简,MATLAB中下列函数可以实现符号表达式的化简collectexpandhornerfactorsimplifysimple,2019年12月6日,第20页,collect,该函数用于合并同类项,具体调用格式为:R=collect(S),合并同类项。其中S可以是数组,数组的每个元素为符号表达式。该命令将S中的每个元素进行合并同类项。R=collect(S,v),对指定的变量v进行合并,如果不指定,则默认为对x进行合并,或者由findsym函数返回的结果进行合并。,2019年12月6日,第21页,expand,expand函数用于符号表达式的展开。其操作对象可以是多种类型,如多项式、三角函数、指数函数等。用户可以利用expand函数对任意的符号表达式进行展开。,2019年12月6日,第22页,horner,horner函数将函数转化为嵌套格式。嵌套格式在多项式求值中可以降低计算的时间复杂度。该函数的调用格式为:R=horner(P),其中P为由符号表达式组成的矩阵,该命令将P中的所有元素转化为相应的嵌套形式。,2019年12月6日,第23页,factor和simplify,factor函数实现因式分解功能,如果输入的参数为正整数,则返回此数的素数因数。simplify函数实现表达式的化简,化简所选用的方法为Maple中的化简方法。,2019年12月6日,第24页,simple,该函数同样实现表达式的化简,并且该函数可以自动选择化简所选择的方法,最后返回表达式的最简单的形式。函数的化简方法包括:simplify、combine(trig)、radsimp、convert(exp)、collect、factor、expand等。该函数的调用格式为:r=simple(S),该命令尝试多种化简方法,显示全部化简结果,并且返回最简单的结果;如果S为矩阵,则返回使矩阵最简单的结果,但是对于每个元素而言,则并不一定是最简单的。r,how=simple(S),该命令在返回化简结果的同时返回化简所使用的方法。,2019年12月6日,第25页,符号表达式的替换,MATLAB中,可以通过符号替换使表达式的形式简化。符号工具箱中提供了两个函数用于表达式的替换:subexpr和subs。1subexpr该函数自动将表达式中重复出现的字符串用变量替换,该函数的调用格式为:Y,SIGMA=subexpr(X,SIGMA),指定用符号变量SIGMA来代替符号表达式(可以是矩阵)中重复出现的字符串。替换后的结果由Y返回,被替换的字符串由SIGMA返回;Y,SIGMA=subexpr(X,SIGMA),该命令与上面的命令不同之处在于第二个参数为字符串,该命令用来替换表达式中重复出现的字符串。,2019年12月6日,第26页,subs函数,2subs函数subs可以用指定符号替换表达式中的某一特定符号。该函数在第一节中已经有简单介绍,本节介绍该函数的更多功能。该函数的调用格式为:R=subs(S),对于S中出现的全部符号变量,如果在调用函数或工作区间中存在相应值,则将值代入,如果没有相应值,则对应的变量保持不变;R=subs(S,new),用新的符号变量替换S中的默认变量,即有findsym函数返回的变量;R=subs(S,old,new),用新的符号变量替换S中的变量,被替换的变量由old指定,如果new是数字形式的符号,则数值代替原来的符号计算表达式的值,所得结果仍是字符串形式,如果new是矩阵,则将S中的所有old替换为new,并将S中的常数项扩充为与new维数相同的常数矩阵。,2019年12月6日,第27页,符号函数图形绘制,符号函数曲线的绘制符号函数曲面网格图及表面图的绘制等值线的绘制,2019年12月6日,第28页,符号函数曲线的绘制,MATLAB中,ezplot函数和ezplot3函数分别实现符号函数二维和三维曲线的绘制。ezplot函数可以绘制显函数的图形,可以绘制隐函数的图形,也可以绘制参数方程的图形。对于显函数,其调用格式有:ezplot(f),绘制函数f在区间内的图形。ezplot(f,min,max),绘制函数f在指定区间min,max内的图形。该函数打开标签为FigureNo.1的图形窗口,并显示图像。如果已经存在图形窗口,在该函数在标签数最大的窗口中显示图形。ezplot(f,xminxmax,fign),在指定的窗口fign中绘制函数的图像。,2019年12月6日,第29页,对于隐函数,ezplot函数的调用格式有:ezplot(f),绘制函数在区间,的图形;ezplot(f,xmin,xmax,ymin,ymax),绘制函数在xminxxmax、yminyymax的图形;ezplot(f,min,max),绘制函数在minxmax、minymax的图形。对于参数方程,ezplot函数的调用格式有:ezplot(x,y),绘制参数方程x=x(t)、y=y(t)在的曲线;ezplot(x,y,tmin,tmax),绘制参数方程x=x(t)、y=y(t)在的曲线;,2019年12月6日,第30页,ezplot3函数,ezplot3函数用于绘制三维参数曲线。该函数的调用格式为:ezplot3(x,y,z),在默认区间内绘制参数方程x=x(t),y=y(t),z=z(t)的图像;ezplot3(x,y,z,tmin,tmax),在区间tminttmax内绘制参数方程x=x(t)、y=y(t)、z=z(t)的图像;ezplot3(.,animate),生成空间曲线的动态轨迹。,2019年12月6日,第31页,符号函数曲面网格图及表面图的绘制,MATLAB中,函数ezmesh、ezmeshc、ezsurf及ezsurfc实现三维曲面的绘制。1ezmesh、ezsurfezmesh、ezsurf函数分别用于绘制三维网格图和三维表面图。这两个函数的用法相同,下面以函数ezmesh函数为例介绍三维曲面的绘制。该函数的调用格式为:ezmesh(f),绘制函数f(x,y)的图像;ezmesh(f,domain),在指定区域绘制函数f(x,y)的图像;ezmesh(x,y,z),在默认区域绘制三维参数方程的图像;ezmesh(x,y,z,smin,smax,tmin,tmax)orezmesh(x,y,z,min,max),在指定区域绘制三维参数方程的图像。,2019年12月6日,第32页,ezmeshc、ezsurfc函数,2ezmeshc、ezsurfc这两个函数用于在在绘制三维曲面的同时绘制等值线。下面以ezmeshc函数为例介绍这两个函数的用法。ezmeshc(f),绘制二元函数在默认区域,的图形。ezmeshc(f,domain),绘制函数在指定区域的图形,绘图区域由domain指定,其中domain为41数组或者21数组,如xmin,xmax,ymin,ymax表示minxmax,,minymax,min,max表示minxmax,,minH=hilb(3)H=1.000000000000000.500000000000000.333333333333330.500000000000000.333333333333330.250000000000000.333333333333330.250000000000000.20000000000000该矩阵为双精度类型(double),下面将其转化为符号矩阵。,2019年12月6日,第44页,H=sym(H)H=1,1/2,1/31/2,1/3,1/41/3,1/4,1/5对该矩阵进行求逆、求行列式等操作:inv(H)ans=9,-36,30-36,192,-18030,-180,180det(H)ans=1/2160,2019年12月6日,第45页,利用左除符号“”求解线性系统:b=111;x=Hbx=3-2430上述运算得到的结果均为精确解,如果对相同的运算采用数值解,则得到的解会存在误差,见下面的代码:digits(16)V=vpa(H),2019年12月6日,第46页,V=1.,.5000000000000000,.3333333333333333.5000000000000000,.3333333333333333,.2500000000000000.3333333333333333,.2500000000000000,.2000000000000000inv(V)ans=9.000000000000179,-36.00000000000080,30.00000000000067-36.00000000000080,192.0000000000042,-180.000000000004030.00000000000067,-180.0000000000040,180.0000000000038det(V)ans=.462962962962953e-3Vbans=3.000000000000041-24.0000000000002130.00000000000019,2019年12月6日,第47页,上面的Hilbert矩阵为非奇异矩阵,下面查看对奇异矩阵的操作。首先,改变矩阵H的第一个元素,使其成为奇异矩阵,然后对其进行运算,见下面的代码:H(1,1)=8/9;det(H)ans=0inv(H)?Errorusing=sym.invError,(ininverse)singularmatrix,2019年12月6日,第48页,矩阵的特征值分解,在MATLAB中,矩阵的特征值和特征向量由函数eig计算。该函数的主要用法为:E=eig(A),计算符号矩阵A的符号特征值,返回结果为一个向量,向量的元素为矩阵A的特征值;V,E=eig(A),计算符号矩阵A的符号特征值和符号特征向量,返回结果为两个矩阵:V和E,V是矩阵A的特征向量组成的矩阵,E为A的特征值组成的对角矩阵,得到的结果满足。,2019年12月6日,第49页,Jordon标准型,当利用相似变换将矩阵对角化时会产生Jordon标准型。对于给定的矩阵,如果存在非奇异矩阵,使得矩阵最接近对角形,则矩阵称为的Jordon标准型。MATLAB中函数jordan用于计算矩阵的Jordon标准型。该函数的调用格式如下:J=jordan(A),计算矩阵的Jordon标准型;V,J=jordan(A),返回矩阵的Jordon标准型,同时返回相应的变换矩阵。,2019年12月6日,第50页,奇异值分解,奇异值分解是矩阵分析中的一个重要内容,在理论分析和实践计算中都有着广泛的应用。在MATLAB中,完全的奇异值分解只对可变精度的矩阵可行。进行奇异值分解的函数为svd,该函数的调用格式为:sigma=svd(A),计算矩阵的奇异值;sigma=svd(vpa(A),采用可变精度计算矩阵的奇异值;U,S,V=svd(A),矩阵奇异值分解,返回矩阵的奇异向量矩阵和奇异值所构成的对角矩阵。U,S,V=svd(vpa(A),采用可变精度计算对矩阵进行奇异值分解。,2019年12月6日,第51页,符号方程的求解,代数方程的求解求解代数方程组微分方程的求解微分方程组的求解复合方程反方程,2019年12月6日,第52页,代数方程的求解,代数方程包括线性方程、非线性方程和超越方程等。在MATLAB中函数solve用于求解代数方程和方程组,其调用格式如下:g=solve(eq),求解方程eq的解,对默认自变量求解,输入的参数eq可以是符号表达式或字符串;g=solve(eq,var),求解方程eq的解,对指定自变量求解;在上面的语句中,如果输入的表达式中不包含等号,则MATLAB求解其等于0时的解。例如g=solve(sym(x2-1)的结果与g=solve(sym(x2-1=0)相同。对于单个方程的情况,返回结果为一个符号表达式,或是一个符号表达式组成的数组,对于方程组的情况,返回结果为一个结构体,结构体的元素为每个变量对应的表达式,各个变量按照字母顺序排列。,2019年12月6日,第53页,求解代数方程组,代数方程组同样由函数solve函数进行,其格式为:g=solve(eq1,eq2,.,eqn),求由方程eq1、eq2、eqn等组成的系统,自变量为默认自变量;g=solve(eq1,eq2,.,eqn,var1,var2,.,varn),求由方程eq1、eq2、eqn等组成的系统,自变量为指定的自变量:var1、var2、varn。,2019年12月6日,第54页,微分方程的求解,MATLAB中微分方程的求解通过函数dsolve进行,该函数用于求解常微分方程。,2019年12月6日,第55页,dsolve函数,该函数的具体调用格式为r=dsolve(eq1,eq2,.,cond1,cond2,.,v)r=dsolve(eq1,eq2,.,cond1,cond2,.,v)其中eq1、eq2等表示待求解的方程,默认的自变量为。方程中用D表示微分,如Dy表示;如果在D后面带有数字,则表示多阶导数,如D2y表示。cond1、cond2等表示初始值,通常表示为y(a)=b或者Dy(a)=b。如果不指定初始值,或者初始值方程的个数少于因变量的个数,则最后得到的结果中会包含常数项,表示为C1、C2等。dsolve函数最多接受12个输入参数。,2019年12月6日,第56页,微分方程组的求解,求解微分方程组通过dsolve进行,格式为:r=dsolve(eq1,eq2,.,cond1,cond2,.,v)。该语句求解由参数eq1、eq2等指定的方程组成的系统,初值条件为cond1、cond2等,v为自变量。,2019年12月6日,第57页,复合方程,复合方程通过函数compose进行,该函数的调用格式为:compose(f,g),返回函数f(g(y),其中f=f(x),g=g(y),x是f的默认自变量,y是g的默认自变量;compose(f,g,z),返回函数f(g(z),自变量为z;compose(f,g,x,z),返回函数f(g(z),指定f的自变量为x;compose(f,g,x,y,z),返回函数f(g(z),f和g的自变量分别指定为x和y。,2019年12月6日,第58页,反方程,反方程通过函数finverse求得,该函数的调用格式为:g=finverse(f),在函数f的反函数存在的情况下,返回函数f的反函数,自变量为默认自变量;g=finverse(f,v),在函数f的反函数存在的情况下,返回函数f的反函数,自变量为v。,2019年12月6日,第59页,符号积分变换,符号傅立叶变换符号拉普拉斯变换符号Z变换,2019年12月6日,第60页,傅立叶变换,傅立叶变换由函数fourier实现,该函数的调用格式为:F=fourier(f),实现函数f的傅立叶变换,如果f的默认自变量为x,则返回f的傅立叶变换结果,默认自变量为w;如果f的默认自变量为w,则返回结果的默认自变量为t;F=fourier(f,v),返回结果为v的函数;F=fourier(f,u,v),f的自变量为u,返回结果为v的函数。,2019年12月6日,第61页,傅立叶逆变换,傅立叶逆变换由函数ifourier实现,该函数的调用格式为:f=ifourier(F),实现函数F的傅立叶逆变换,如果F的默认自变量为w,则返回结果f的默认自变量为x,如果F的自变量为x,则返回结果f的自变量为t;f=ifourier(F,u),实现函数F的傅立叶逆变换,返回结果f为u的函数;f=ifourier(F,v,u),实现函数F的傅立叶逆变换,F的自变量为v,返回结果f为u的函数。,2019年12月6日,第62页,符号拉普拉斯变换,laplace函数实现符号函数的拉普拉斯变换。该函数的调用格式为:laplace(F),实现函数F的拉普拉斯变换,如果F的默认自变量为t,返回结果的默认自变量为s;如果F的默认自变量为s,则返回结果为t的函数;laplace(F,t),返回函数的自变量为t;laplace(F,w,z),指定F的自变量为w,返回结果为z的函数;,2019年12月6日,第63页,拉普拉斯逆变换,拉普拉斯逆变换由函数ilaplace实现,该函数的调用格式为:F=ilaplace(L),实现函数L的拉普拉斯逆变换,如果L的自变量为s,则返回结果为t的函数,如果L的自变量为t,则返回结果为x的函数;F=ilaplace(L,y),返回结果为y的函数;F=ilaplace(L,y,x),指定L的自变量为y,返回结果为x的函数。,2019年12月6日,第64页,符号Z变换,Z变换由函数ztrans完成,该函数的用法为:F=ztrans(f),如果f的默认自变量为n,则返回结果为z的函数,如果f为函数z的函数,则返回结果为w的函数;F=ztrans(f,w),返回结果为w的函数;F=ztrans(f,k,w),f的自变量为k,返回结果为w的函数。,2019年12月6日,第65页,Z逆变换,Z逆变换由函数iztrans完成,其调用格式为:f=iztrans(F),若F的默认自变量为z,则返回结果为n的函数,如果F是n的函数,则返回结果为k的函数;f=iztrans(F,k),指定返回结果为k的函数;f=iztrans(F,w,k),指定F的自变量为w,返回结果为k的函数。,2019年12月6日,第66页,MAPLE函数的调用,maple函数的使用mfun函数的使用,2019年12月6日,第67页,maple函数的使用,maple是符号工具箱中的一个通用命令,使用它可以实现对MAPLE中大部分函数的调用。其使用格式为:r=maple(statement),其中statement为符合MAPLE语法的可执行语句的字符串,该命令将s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论