MATLAB的符号计算功能.ppt
《MATLAB的符号计算功能.ppt》由会员分享,可在线阅读,更多相关《MATLAB的符号计算功能.ppt(73页珍藏版)》请在三一办公上搜索。
1、2023/11/8,第1页,第8章 MATLAB 的符号计算功能,MATLAB R2007基础教程 清华大学出版社,教学目标教学重点教学内容,2023/11/8,第2页,教学目标,掌握基本符号运算掌握符号函数图形绘制掌握符号微积分的运算掌握符号线性代数掌握符号方程的求解方法掌握符号积分变换了解 Maple 函数的调用方法了解符号函数计算器的使用,2023/11/8,第3页,教学重点,符号函数图形绘制符号微积分的运算符号线性代数符号方程的求解方法符号积分变换,2023/11/8,第4页,教学内容,符号运算简介 符号表达式的化简与替换 符号函数图形绘制 符号微积分 符号线性代数 符号方程的求解 符
2、号积分变换 MAPLE 函数的调用 符号函数计算器,2023/11/8,第5页,符号运算简介,符号对象 符号变量、表达式的生成 findsym 函数和 subs 函数 符号和数值之间的转化 任意精度的计算 创建符号方程,2023/11/8,第6页,符号对象,符号对象是符号工具箱中定义的另一种数据类型。符号对象是符号的字符串表示。在符号工具箱中符号对象用于表示符号变量、表达式和方程。下例说明了符号对象和普通的数据对象之间的差别。例 7-1 符号对象和普通数据对象之间的差别在命令窗口中输入如下命令 sqrt(2)ans=1.4142 x=sqrt(sym(2)x=2(1/2),返回数值结果,返回符
3、号结果,2023/11/8,第7页,由上例可以看出,当采用符号运算时,并不计算出表达式的结果,而是给出符号表达。如果可以查看符号 x 所表示的值,在窗口中输入:double(x)ans=1.4142另外,对符号进行的数学运算与对数值进行的数学运算并不相同,看下面的例子例 7-2 符号运算和数值运算之间的差别 sym(2)/sym(5)ans=2/5,2023/11/8,第8页,两个符号进行运算,结果为分数形式。继续输入:2/5+1/3ans=0.7333 sym(2)/sym(5)+sym(1)/sym(3)ans=11/15 double(sym(2)/sym(5)+sym(1)/sym(3
4、)ans=0.7333由上例看出,当进行数值运算时,得到的结果为 double 型数据,采用符号进行运算时,输出的结果为分数形式。,2023/11/8,第9页,符号变量、表达式的生成,MATLAB 中有两个函数用于符号变量、符号表达式的生成,这两个函数为 sym 和syms,分别用于生成一个或多个符号对象。1.sym 函数sym 函数可以用于生成单个的符号变量。在上面一节中已经初步涉及了 sym 函数,本节将要详细介绍该函数。该函数的调用格式为:S=sym(A),如果参数 A 为字符串,则返回的结果为一个符号变量或者一个符号数值;如果 A 是一个数字或矩阵,则返回结果为该参数的符号表示。x=s
5、ym(x),该命令创建一个符号变量,该变量的内容为 x,表达为 x。x=sym(x,real),指定符号变量 x 为实数。x=sym(x,unreal),指定 x 为一个纯粹的变量,而不具有其他属性。S=sym(A,flag),其中 参数 flag 可以为 r,d,e,或者 f 中的一个。该函数将数值标量或者矩阵转化为参数形式,该函数的第二个参数用于指定浮点数转化的方法,该函数各个取值的意义如表所示。,2023/11/8,第10页,创建复数符号变量,MATLAB 中一种特殊的符号表达式为复数,创建复数符号变量可以有两种方法:直接创建法间接创建法,2023/11/8,第11页,findsym 函
6、数,findsym 函数该函数用于确定一个表达式中的符号变量。在上面的例子中,表达式 f 中包含有四个符号变量,表达式 g 中包含有 1 个符号变量,其他变量为普通变量。findsym 函数通常由系统自动调用,在进行符号运算时,系统调用该函数确定表达式中的符号变量,执行相应的操作。,2023/11/8,第12页,subs 函数,subs 函数subs 函数可以将符号表达式中的符号变量用数值代替。在对多变量符号表达式使用 subs 函数时,如果不指定变量,则系统选择默认变量进行计算。默认变量的选择规则为:对于只包含一个字符的变量,选择靠近 x 的变量作为默认变量;如果有两个变量和 x 之间的距离
7、相同,则选择字母表后面的的变量作为默认变量。,2023/11/8,第13页,符号和数值之间的转化,在符号变量生成一节中已经介绍了 sym 函数,该函数用于生成符号变量,也可以将数值转化为符号变量。转化的方式由参数“flag”确定。flag 的取值及具体意义在上面的一节中已经叙述过。sym 的另一个重要作用为将数值矩阵转化为符号矩阵。,2023/11/8,第14页,任意精度的计算,符号计算的一个非常显著的特点是:在计算过程中不会出现舍入误差,从而可以得到任意精度的数值解。如果希望计算结果精确,可以用符号计算来获得足够高的计算精度。符号计算相对于数值计算而言,需要更多的计算时间和存储空间。MATL
8、AB 工具箱中有三种不同类型的算术运算:数值型:MATLAB 的浮点数运算;有理数类型:Maple 的精确符号运算;VPA 类型:Maple 的任意精度算术运算。,2023/11/8,第15页,在三种运算中,浮点运算速度最快,所需的内存空间小,但是结果精确度最低。双精度数据的输出位数由 format 命令控制,但是在内部运算时采用的是计算机硬件所提供的八位浮点运算。而且,在浮点运算的每一步,都存在一个舍入误差,如上面的运算中存在三步舍入误差:计算 1/3 的舍入误差,计算 1/2+1/3 的舍入误差,和将最后结果转化为十进制输出时的舍入误差。符号运算中的有理数运算,其时间复杂度和空间复杂度都是
9、最大的,但是,只要时间和空间允许,能够得到任意精度的结果。可变精度的运算运算速度和精确度均位于上面两种运算之间。其具体精度由参数指定,参数越大,精确度越高,运行越慢。,2023/11/8,第16页,创建符号方程(1/2),1创建抽象方程MATLAB 中可以创建抽象方程,即只有方程符号,没有具体表达式的方程。若要创建方程,并计算其一阶微分的方法如下:f=sym(f(x);syms x h;df=(subs(f,x,x+h)-f)/hdf=(f(x+h)-f(x)/h抽象方程在积分变换中有着很多的应用。,2023/11/8,第17页,创建符号方程(2/2),2创建符号方程创建符号方程的方法有两种:
10、利用符号表达式创建先创建符号变量,通过符号变量的运算生成符号函数直接生成符号表达式创建 M 文件利用 M 文件创建的函数,可以接受任何符号变量作为输入,作为生成函数的自变量,2023/11/8,第18页,符号表达式的化简与替换,符号表达式的化简 符号表达式的替换,2023/11/8,第19页,符号表达式的化简,MATLAB中下列函数可以实现符号表达式的化简collectexpandhornerfactorsimplifysimple,2023/11/8,第20页,collect,该函数用于合并同类项,具体调用格式为:R=collect(S),合并同类项。其中 S 可以是数组,数组的每个元素为符
11、号表达式。该命令将 S 中的每个元素进行合并同类项。R=collect(S,v),对指定的变量 v 进行合并,如果不指定,则默认为对 x 进行合并,或者由 findsym 函数返回的结果进行合并。,2023/11/8,第21页,expand,expand 函数用于符号表达式的展开。其操作对象可以是多种类型,如多项式、三角函数、指数函数等。用户可以利用 expand 函数对任意的符号表达式进行展开。,2023/11/8,第22页,horner,horner 函数将函数转化为嵌套格式。嵌套格式在多项式求值中可以降低计算的时间复杂度。该函数的调用格式为:R=horner(P),其中 P 为由符号表达
12、式组成的矩阵,该命令将 P 中的所有元素转化为相应的嵌套形式。,2023/11/8,第23页,factor 和 simplify,factor 函数实现因式分解功能,如果输入的参数为正整数,则返回此数的素数因数。simplify 函数实现表达式的化简,化简所选用的方法为 Maple 中的化简方法。,2023/11/8,第24页,simple,该函数同样实现表达式的化简,并且该函数可以自动选择化简所选择的方法,最后返回表达式的最简单的形式。函数的化简方法包括:simplify、combine(trig)、radsimp、convert(exp)、collect、factor、expand 等。该
13、函数的调用格式为:r=simple(S),该命令尝试多种化简方法,显示全部化简结果,并且返回最简单的结果;如果 S 为矩阵,则返回使矩阵最简单的结果,但是对于每个元素而言,则并不一定是最简单的。r,how=simple(S),该命令在返回化简结果的同时返回化简所使用的方法。,2023/11/8,第25页,符号表达式的替换,MATLAB 中,可以通过符号替换使表达式的形式简化。符号工具箱中提供了两个函数用于表达式的替换:subexpr 和 subs。1subexpr该函数自动将表达式中重复出现的字符串用变量替换,该函数的调用格式为:Y,SIGMA=subexpr(X,SIGMA),指定用符号变量
14、 SIGMA 来代替符号表达式(可以是矩阵)中重复出现的字符串。替换后的结果由 Y 返回,被替换的字符串由 SIGMA 返回;Y,SIGMA=subexpr(X,SIGMA),该命令与上面的命令不同之处在于第二个参数为字符串,该命令用来替换表达式中重复出现的字符串。,2023/11/8,第26页,subs 函数,2subs函数 subs 可以用指定符号替换表达式中的某一特定符号。该函数在第一节中已经有简单介绍,本节介绍该函数的更多功能。该函数的调用格式为:R=subs(S),对于 S 中出现的全部符号变量,如果在调用函数或工作区间中存在相应值,则将值代入,如果没有相应值,则对应的变量保持不变;
15、R=subs(S,new),用新的符号变量替换 S 中的默认变量,即有 findsym 函数返回的变量;R=subs(S,old,new),用新的符号变量替换 S 中的变量,被替换的变量由 old 指定,如果 new 是数字形式的符号,则数值代替原来的符号计算表达式的值,所得结果仍是字符串形式,如果 new 是矩阵,则将 S 中的所有 old 替换为 new,并将 S 中的常数项扩充为与 new 维数相同的常数矩阵。,2023/11/8,第27页,符号函数图形绘制,符号函数曲线的绘制 符号函数曲面网格图及表面图的绘制 等值线的绘制,2023/11/8,第28页,符号函数曲线的绘制,MATLAB
16、 中,ezplot 函数和 ezplot3 函数分别实现符号函数二维和三维曲线的绘制。ezplot 函数可以绘制显函数的图形,可以绘制隐函数的图形,也可以绘制参数方程的图形。对于显函数,其调用格式有:ezplot(f),绘制函数 f 在区间 内的图形。ezplot(f,min,max),绘制函数 f 在指定区间 min,max 内的图形。该函数打开标签为 Figure No.1 的图形窗口,并显示图像。如果已经存在图形窗口,在该函数在标签数最大的窗口中显示图形。ezplot(f,xmin xmax,fign),在指定的窗口 fign 中绘制函数的图像。,2023/11/8,第29页,对于隐函数
17、,ezplot 函数的调用格式有:ezplot(f),绘制函数在区间,的图形;ezplot(f,xmin,xmax,ymin,ymax),绘制函数在 xmin x xmax、ymin y ymax 的图形;ezplot(f,min,max),绘制函数在 min x max、min y max 的图形。对于参数方程,ezplot 函数的调用格式有:ezplot(x,y),绘制参数方程 x=x(t)、y=y(t)在的曲线;ezplot(x,y,tmin,tmax),绘制参数方程 x=x(t)、y=y(t)在的曲线;,2023/11/8,第30页,ezplot3 函数,ezplot3 函数用于绘制三
18、维参数曲线。该函数的调用格式为:ezplot3(x,y,z),在默认区间内绘制参数方程 x=x(t),y=y(t),z=z(t)的图像;ezplot3(x,y,z,tmin,tmax),在区间 tmin t tmax 内绘制参数方程 x=x(t)、y=y(t)、z=z(t)的图像;ezplot3(.,animate),生成空间曲线的动态轨迹。,2023/11/8,第31页,符号函数曲面网格图及表面图的绘制,MATLAB 中,函数 ezmesh、ezmeshc、ezsurf及ezsurfc 实现三维曲面的绘制。1ezmesh、ezsurfezmesh、ezsurf 函数分别用于绘制三维网格图和三
19、维表面图。这两个函数的用法相同,下面以函数 ezmesh 函数为例介绍三维曲面的绘制。该函数的调用格式为:ezmesh(f),绘制函数 f(x,y)的图像;ezmesh(f,domain),在指定区域绘制函数 f(x,y)的图像;ezmesh(x,y,z),在默认区域绘制三维参数方程的图像;ezmesh(x,y,z,smin,smax,tmin,tmax)or ezmesh(x,y,z,min,max),在指定区域绘制三维参数方程的图像。,2023/11/8,第32页,ezmeshc、ezsurfc 函数,2ezmeshc、ezsurfc这两个函数用于在在绘制三维曲面的同时绘制等值线。下面以
20、ezmeshc 函数为例介绍这两个函数的用法。ezmeshc(f),绘制二元函数在默认区域,的图形。ezmeshc(f,domain),绘制函数在指定区域的图形,绘图区域由 domain 指定,其中 domain 为 41 数组或者 21 数组,如 xmin,xmax,ymin,ymax 表示 min x max,,min y max,min,max 表示 min x max,,min y max。ezmeshc(x,y,z),绘制参数方程 x=x(s,t),y=y(s,t),and z=z(s,t)在默认区域,的图形。ezmeshc(x,y,z,smin,smax,tmin,tmax),ez
21、meshc(x,y,z,min,max),绘制参数方程在指定区域的图形,指定的方法与 domain 相同。ezmeshc(.,n),指定绘图的网格数,默认值为 60。ezmeshc(.,circ),在以指定区域中心为中心的圆盘上绘制图像。,2023/11/8,第33页,等值线的绘制,在 MATLAB 中,用于绘制符号函数等值线的函数有 ezcontour 和ezcontourf,这两个函数分别用于绘制等值线和带有区域填充的等值线。下面以 ezcontour 函数为例介绍这两个函数的用法。该函数的调用格式为:ezcontour(f),绘制符号二元函数 f(x,y)在默认区域的等值线图;ezcon
22、tour(f,domain),绘制符号二元函数 f(x,y)在指定区域的等值线图;ezcontour(.,n),绘制等值线图,并指定等值线的数目。,2023/11/8,第34页,符号微积分,符号表达式求极限 符号微分 符号积分 级数求和 Taylor 级数,2023/11/8,第35页,符号表达式求极限,极限是微积分的基础,微分和积分都是“无穷逼近”时的结果。在 MATLAB 中函数 limit 用于求表达式的极限。该函数的调用格式为:limit(F,x,a),当 x 趋近于 a 时表达式 F 的极限;limit(F,a),当 F 中的自变量趋近于 a 时 F 的极限,自变量由 findsym
23、 函数确定;limit(F),当 F 中的自变量趋近于 0 时 F 的极限,自变量由 findsym 函数确定;limit(F,x,a,right),当 x 从右侧趋近于 a 时 F 的极限;limit(F,x,a,left),当 x 从左侧趋近于 a 时 F 的极限;,2023/11/8,第36页,符号微分,MATLAB 中函数 diff 实现函数求导和求微分,可以实现一元函数求导和多元函数求偏导。该函数在前面的 MATLAB 的数学功能一章已有介绍,用于计算向量或矩阵的差分。当输入参数为符号表达式时,该函数实现符号微分,其调用格式为:diff(S),实现表达式 S 的求导,自变量由函数 f
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 符号 计算 功能
链接地址:https://www.31ppt.com/p-6512012.html