MATLAB的符号计算.ppt
《MATLAB的符号计算.ppt》由会员分享,可在线阅读,更多相关《MATLAB的符号计算.ppt(105页珍藏版)》请在三一办公上搜索。
1、第三讲 MATLAB的符号计算,所谓符号计算是指在运算时,无须事先对变量赋值,而将所得到结果以标准的符号形式来表示。MathWorks公司以Maple的内核作为符号计算引擎(Engine),依赖Maple已有的函数库,开发了实现符号计算的两个工具箱:基本符号工具箱和扩展符号工具箱。,一、字符串,一个字符串由多个字符组成,用单引号()来界定。字符串是按行向量进行存储的。1.字符串占用的字节每一个字符会占用两个字节。str2=I like MATLAB%重复单引号来输入含有单引号的字符串,2.字符串函数length():用来计算字符串的长度。double():用来查看字符串的ASCII码储存内容。
2、char():用来将ASCII码转换成字符串形式。class()或ischar():用来判断某一个变量是否为字符串。class函数返回char则表示为字符串,而ischar返回值若为1则表示为字符串。strcmp(x,y):比较字符串x和y的内容是否相同。返回值若为1则相同,为0则不相同。findstr(x,x1):寻找在某个长字符串x中的子字符串x1,返回其起始位置。deblank(x):删除字符串尾部的空格。,3.使用一个变量来储存多个字符串(1)多个字符串组成一个新的行向量 将多个字符串变量直接用“,”连接。(2)使用二维字符数组 每个字符串放在一行构成二维字符数组。(3)使用str2m
3、at、strvcat和char函数构成字符串矩阵 总是按最长的设置,不足的末尾用空格补齐。例如:str6=str2mat(str1,str2,str3),4.执行字符串使用eval命令直接“执行”某一字符串。5.显示字符串直接使用disp命令显示字符串。disp(请输入2*2的矩阵a),二、符号表达式的建立,(一)定义符号常量(二)定义符号变量和符号表达式(三)符号矩阵,二、符号表达式的建立,(一)定义符号常量符号常量是不含变量的符号表达式,用sym命令来创建符号常量。格式:sym(常量)%创建符号常量【例1】:a=sym(sin(2)a=sin(2)(绝对准确的符号数值表示),格式:sym(
4、常量,参数)%把常量按某种格式转换为符号常量,参数设置,二、符号表达式的建立,【例2】:a=sym(sin(2)a=8190223105242182*2(-53)a=sym(sin(2),d)a=.90929742682568170941692642372800,二、符号表达式的建立,(二)定义符号变量和符号表达式参与符号运算的对象可以是符号变量、符号表达式或符号矩阵。符号变量要先定义,后引用。可以用sym函数、syms函数将运算量定义为符号型数据。引用符号运算函数时,用户可以指定函数执行过程中的变量参数;若用户没有指定变量参数,则使用findsym函数默认的变量作为函数的变量参数。,二、符号
5、表达式的建立,1、sym函数格式:sym(变量,参数)%把变量定义为符号对象说明:参数用来设置限定符号变量的数学特性,可以选择为 positive、real和unreal,positive 表示为“正、实”符号变量,real表示为“实”符号变量,unreal 表示为“非实”符号变量。如果不限定则参数可省略。格式:sym(表达式)%创建符号表达式,(二)定义符号变量和符号表达式,二、符号表达式的建立,【例3】作符号计算:a,b,x,y均为符号运算量。在符号运算前,应先将a,b,x,y定义为符号运算量。,(二)定义符号变量和符号表达式,二、符号表达式的建立,a=sym(a);%定义a为符号运算量,
6、输出变量名为ab=sym(b);x=sym(x);y=sym(y);x,y=solve(a*x-b*y-1,a*x+b*y-5,x,y)%以a,b为符号常数,x,y为符号变量即可得到方程组的解:x=3/ay=2/b,(二)定义符号变量和符号表达式,二、符号表达式的建立,【例4】已知一复数表达式 z=x+i*y,试求其共轭复数,并求该表达式与其共轭复数乘积的多项式。为了使乘积表达式x2+y2非负,这里,把变量x和y定义为实数。x=sym(x,real);y=sym(y,real);,(二)定义符号变量和符号表达式,二、符号表达式的建立,z=x+i*y;%定义复数表达式conj(z)%求共轭复数a
7、ns=x-i*yexpand(z*conj(z)%求表达式与其共轭复数乘积的多项式ans=x2+y2注:x=sym(x,unreal)可去掉x的属性,将x创建为纯格式的符号变量,输出结果一样。,(二)定义符号变量和符号表达式,二、符号表达式的建立,2、syms函数syms函数的功能与sym函数类似。syms函数可以在一个语句中同时定义多个符号变量,其一般格式为:syms arg1 arg2 argN 用于将arg1,arg2,argN等符号创建为符号型数据。,(二)定义符号变量和符号表达式,二、符号表达式的建立,【例5】使用syms命令创建符号变量和符号表达式。f1=sym(a*x2+b*x+
8、c)f1=a*x2+b*x+c syms a b c x%创建多个符号变量 f2=a*x2+b*x+c%创建符号表达式 f2=a*x2+b*x+c syms(a,b,c,x)f3=a*x2+b*x+c;%创建符号表达式,(二)定义符号变量和符号表达式,二、符号表达式的建立,(三)符号矩阵用sym和syms命令也可以创建符号矩阵。【例6】比较符号矩阵与字符串矩阵的不同。A=sym(a,b;c,d)%创建符号矩阵 A=a,b c,d%大小:2*2 sym object B=a,b;c,d%创建字符串矩阵 B=a,b;c,d%大小:1*9 char array C=a,b;c,d?Undefined
9、 function or variable a.,二、符号表达式的建立,(三)符号矩阵C=sym(B)%转换为符号矩阵 C=a,b c,d whos Name Size Bytes Class A 2x2 312 sym object B 1x9 18 char array C 2x2 312 sym objectGrand total is 25 elements using 642 bytes,二、符号表达式的建立,三、符号表达式的代数运算,(一)符号表达式的代数运算(二)符号数值任意精度控制和运算(三)符号对象与数值对象的转换,符号运算与数值运算的主要区别:传统的数值型运算因为要受到计算
10、机所保留的有效位数的限制,它的内部表示法总是采用计算机硬件提供的8位浮点表示法,因此每一次运算都会有一定的截断误差,重复的多次数值运算就可能会造成很大的累积误差。符号运算不需要进行数值运算,不会出现截断误差,因此符号运算是非常准确的。符号运算可以得出完全的封闭解或任意精度的数值解。符号运算的时间较长,而数值型运算速度快。,三、符号表达式的代数运算,(一)符号表达式的代数运算1.符号运算中的运算符(1)基本运算符运算符“”,“”,“*”,“”,“/”,“”分别实现符号矩阵的加、减、乘、左除、右除、求幂运算。运算符“.*”,“./”,“.”,“.”分别实现符号数组的乘、除、求幂,即数组间元素与元素
11、的运算。运算符“”,“.”分别实现符号矩阵的共轭转置、非共轭转置。,三、符号表达式的代数运算,(2)关系运算符在符号对象的比较中,没有“大于”、“大于等于”、“小于”、“小于等于”的概念,而只有是否“等于”的概念。运算符“=”、“=”分别对运算符两边的符号对象进行“相等”、“不等”的比较。当为“真”时,比较结果用1表示;当为“假”时,比较结果则用0表示。,(一)符号表达式的代数运算,三、符号表达式的代数运算,2.函数运算(1)三角函数和双曲函数三角反函数除了atan2函数仅能用于数值计算外,其余的函数在符号运算中与数值计算的使用方法相同。(2)指数和对数函数指数函数sqrt、exp、expm的
12、使用方法与数值计算的完全相同;对数函数在符号计算中只有自然对数log(表示ln),而没有数值计算中的log2和log10。,(一)符号表达式的代数运算,三、符号表达式的代数运算,(3)复数函数复数的共轭conj、求实部real、求虚部imag和求模abs函数与数值计算中的使用方法相同。但注意,在符号计算中,MATLAB没有提供求相角的命令。(4)矩阵代数命令MATLAB提供的常用矩阵代数命令有diag,triu,tril,inv,det,rank,poly,expm,eig等,它们的用法几乎与数值计算中的情况完全一样。,(一)符号表达式的代数运算,三、符号表达式的代数运算,【例7】求矩阵的行列
13、式值、非共轭转置和特征值。syms a11 a12 a21 a22 A=a11 a12;a21 a22%创建符号矩阵 A=a11,a12 a21,a22 det(A)%计算行列式 ans=a11*a22-a12*a21,(一)符号表达式的代数运算,三、符号表达式的代数运算,A.%计算非共轭转置 ans=a11,a21 a12,a22 eig(A)%计算特征值 ans=1/2*a11+1/2*a22+1/2*(a112-2*a11*a22+a222+4*a12*a21)(1/2)1/2*a11+1/2*a22-1/2*(a112-2*a11*a22+a222+4*a12*a21)(1/2),(一
14、)符号表达式的代数运算,三、符号表达式的代数运算,1.Symbolic Math Toolbox中的算术运算方式数值型:MATLAB的浮点运算。有理数型:Maple的精确符号运算。VPA型:Maple的任意精度运算。,(二)符号数值任意精度控制和运算,三、符号表达式的代数运算,2.任意精度控制任意精度的VPA型运算可以使用digits和vpa命令来实现。格式:digits(n)%设定默认的精度说明:n为所期望的有效位数。digits函数可以改变默认的有效位数来改变精度,随后的每个进行Maple函数的计算都以新精度为准。当有效位数增加时,计算时间和占用的内存也增加。命令“digits”用来显示默
15、认的有效位数,默认为32位。,(二)符号数值任意精度控制和运算,三、符号表达式的代数运算,2.任意精度控制格式:S=vpa(s,n)%将s表示为n位有效位数的符号对象说明:s可以是数值对象或符号对象,但计算的结果S一定是符号对象;当参数n省略时则以给定的digits指定精度。vpa命令只对指定的符号对象s按新精度进行计算,并以同样的精度显示计算结果,但并不改变全局的digits参数。,三、符号表达式的代数运算,(二)符号数值任意精度控制和运算,【例8】对表达式进行任意精度控制的比较。a=sym(2*sqrt(5)+pi)a=2*sqrt(5)+pi digits%显示默认的有效位数 digit
16、s=32 vpa(a)%用默认的位数计算并显示 ans=7.6137286085893726312809907207421,三、符号表达式的代数运算,(二)符号数值任意精度控制和运算,vpa(a,20)%按指定的精度计算并显示 ans=7.6137286085893726313 digits(15)%改变默认的有效位数 vpa(a)%按digits指定的精度计算并显示 ans=7.61372860858937,三、符号表达式的代数运算,(二)符号数值任意精度控制和运算,【例8续】用三种运算方式表达式比较2/3的结果。a1=2/3%数值型 a1=0.6667 a2=sym(2/3)%有理数型 a
17、2=2/3 a3=vpa(2/3,32)%VPA型 a3=.66666666666666666666666666666667,三、符号表达式的代数运算,(二)符号数值任意精度控制和运算,程序分析三种运算方式中数值型运算的速度最快。有理数型符号运算的计算时间和占用内存是最大的,产生的结果是非常准确的。VPA型的任意精度符号运算比较灵活,可以设置任意有效精度,当保留的有效位数增加时,每次运算的时间和使用的内存也会增加。数值型变量a1结果显示的有效位数并不是存储的有效位数,显示的有效位数由“format”命令控制。,三、符号表达式的代数运算,(二)符号数值任意精度控制和运算,1.将数值对象转换为符号
18、对象sym命令可以把数值型对象转换成有理数型符号对象,vpa命令可以将数值型对象转换为任意精度的VPA型符号对象。2.将符号对象转换为数值对象格式:N=double(S)%将符号变量S转换为数值变量NN=numeric(S)%将符号变量S转换为数值变量N,(三)符号对象与数值对象的转换,三、符号表达式的代数运算,【例9】将符号变量与数值变量进行转换。a1=sym(2*sqrt(5)+pi)a1=2*sqrt(5)+pi b1=double(a1)%转换为数值变量 b1=7.6137 a2=vpa(sym(2*sqrt(5)+pi),32)a2=7.61372860858937263128099
19、07207421,三、符号表达式的代数运算,(三)符号对象与数值对象的转换,【例9】续:b2=numeric(a2)%转换为数值变量 b2=7.6137 b3=eval(a1)%由符号变量得出数值结果b3=7.6137,三、符号表达式的代数运算,(三)符号对象与数值对象的转换,四、符号表达式的操作和转换,(一)符号表达式中自由变量的确定(二)符号表达式的化简(三)符号表达式的替换(四)求反函数和复合函数(五)符号表达式的转换,1.自由变量的确定原则MATLAB将基于以下原则选择一个自由变量:小写字母i和j不能作为自由变量。符号表达式中如果有多个字符变量,则按照以下顺序选择自由变量:首先选择x作
20、为自由变量;如果没有x,则选择在字母顺序中最接近x的字符变量;如果与x相同距离,则在x后面的优先。大写字母比所有的小写字母都靠后。,四、符号表达式的操作和转换,(一)符号表达式中自由变量的确定,2.findsym函数如果不确定符号表达式中的自由符号变量,可以用findsym函数来自动确定。格式:findsym(EXPR,n)%确定自由符号变量说明:EXPR可以是符号表达式或符号矩阵;n为按顺序得出符号变量的个数,当n省略时,则不按顺序得出EXPR中所有的符号变量。,(一)符号表达式中自由变量的确定,四、符号表达式的操作和转换,【例10】得出符号表达式中的符号变量。f=sym(a*x2+b*x+
21、c)f=a*x2+b*x+c findsym(f)%得出所有的符号变量 ans=a,b,c,x,(一)符号表达式中自由变量的确定,四、符号表达式的操作和转换,g=sym(sin(z)+cos(v)g=sin(z)+cos(v)findsym(g,1)%得出第一个符号变量 ans=z 说明:符号变量z和v距离x相同,以在x后面的z为自由符号变量。,(一)符号表达式中自由变量的确定,四、符号表达式的操作和转换,同一个多项式的符号表达式可以表示成三种形式:多项式形式:f(x)=x3-6x2+11x-6 因式形式:f(x)=(x-1)(x-2)(x-3)嵌套形式:f(x)=x(x(x-6)+11)-6
22、,(二)符号表达式的化简(Simplificate),四、符号表达式的操作和转换,【例11】三种形式的符号表达式的表示。f=sym(x3-6*x2+11*x-6)%多项式形式 f=x3-6*x2+11*x-6 g=sym(x-1)*(x-2)*(x-3)%因式形式 g=(x-1)*(x-2)*(x-3)h=sym(x*(x*(x-6)+11)-6)%嵌套形式 h=x*(x*(x-6)+11)-6,(二)符号表达式的化简(Simplificate),四、符号表达式的操作和转换,pretty:给出排版形式的输出结果 collect:将表达式写成多项式形式horner:将多项式形式写成嵌套形式fac
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 符号 计算
链接地址:https://www.31ppt.com/p-6512010.html