MATLABch07MATLAB符号计算与工具箱.ppt
《MATLABch07MATLAB符号计算与工具箱.ppt》由会员分享,可在线阅读,更多相关《MATLABch07MATLAB符号计算与工具箱.ppt(55页珍藏版)》请在三一办公上搜索。
1、,第7讲 MATLAB符号计算,张建瓴,本章将介绍符号运算的概念、基本用法和MAPLE资源的调用,同时将详细介绍MATLAB的符号函数计算器。,内容提要,7.1 概述,除数值计算外,像公式推导,因式分解等这一类含有x、y、z、等符号变量的符号表达式的抽象运算,以及求解代数方程或微分方程的精确解等,在工程领域和科学研究中也占有很大比例。,MATLAB的符号数学工具箱包括基本符号数学工具箱和扩展符号数学工具箱两个子工具箱。,其中基本符号数学工具箱是MATLAB语言的自然扩展,它集中了大约100多个MATLAB函数,在扩展符号数学工具箱内可以调用所有非图形类的属于MAPLE的工具包,并且运用MAPL
2、E的编程特征完成自设的运算。,符号数学工具箱一共有三个通道与MAPLE交换信息:,1、通过基本符号数学工具箱。即在用MATLAB语言编写的多个函数中,通过若干个专用函数进行符号运算。用于符号运算的专用函数按照内容可分为:,(1)函数体(Funcfion Body)符号表达式和符号矩阵的操作;(2)线性代数;(3)微积分;(4)符号方程的求解;(5)多项式的化简、展开和代入;(6)特殊的数学函数。,2、通过maple.m、mpa.m两个专门设计的M文件进行符号运算。这种符号运算的运算方式要求掌握一些MAPLE的基本语句。,3、通过MATLAB中的函数计算器(Function Caculator)
3、也可以进行较为简单的符号运算,这是MATLAB最方便、最直观的符号运算方法。,在数值计算参与输入、输出和中间计算的过程中,所有运作的变量都是被赋了值的数值变量;而在符号计算的过程中,参与运作的变量都是符号变量(Symbolic Variable)(包括符号表达式中出现的数字也当作符号处理)。使用字符串进行符号分析而不是基于数组的数值分析,是符号数学工具箱区别于其他工具箱的重要特征。,7.2 符号变量,在进行符号计算时,首先要定义基本的符号对象(可以是常数、变量以及表达式等),然后利用这些基本符号对象去构成新的表达式,从而进行所需的符号运算。在运算中,凡是由包含符号对象的表达式所生成的新对象也都
4、是符号对象。,可以使用sym和syms这两个函数命令来创建和定义基本的符号对象。,sym函数的调用格式:,1、S=sym(arg),从表达式arg创建一个sym对象S,如果arg是一个字符串(string),则S是符号变量或符号数;如arg是数值标量或矩阵,则S是这些给定数值的符号形式。以下是sym函数调用形式的具体实现方式:,一、用sym函数定义符号变量,(1)x=sym(x)建立符号变量x,变量的值为单引号内的字符或字符串,这里是和变量名相同的字符x;,(2)x=sym(x,real)设定符号变量为实型变量(Real),此时conj(x)和x相等;,1、S=sym(arg)(续),(3)x
5、=sym(x,unreal)使x为纯粹的形式变量,没有附加属性。一般用来清除x的实型属性;,(4)类似pi=sym(pi)和delta=sym(l/10)建立符号数,这种方式避免了浮点数本身的近似,建立的符号数是数值的精确表示。这种方式建立的符号数pi可以临时代替内置的同名数值函数pi。,2、S=sym(A,flag),可以将数值或矩阵转化为符号形式,其中flag选项有四项参数,即f,r,e和d,它们对应于不同的符号形式,r为缺省项。各项的含义如下:,(1)选项f 代表十六进制浮点形式。格式为:1.F*2(e)or-1.F*2(e),其中F是由13位十六进制数组成的字符串,e是整数(但F前面的
6、“1”是十进制数)。例如:sym(1/10,f)ans=1.999999999999a*2(-4)因为1/10不能用浮点精确地表示。,2、S=sym(A,flag)(续1),(2)选项r 代表有理数形式。像p/q、p*pi/q,sqrt(p)、2q和l0q之类的有理数形式,有效地补偿了舍入误差,但是也有可能表示的浮点值和原值不相等。如果找不到简单的有理数形式近似,则可采用形式p*2q产生正确的浮点数,其中p是很大的整数。例如:,sym(4/3,r)ans=4/3 而 sym(1+sqrt(5),r)ans=7286977268806824*2(-51),2、S=sym(A,flag)(续2),
7、(3)选项e 估计误差。根据eps(浮点运算的相对精度)给出理论表达式和实际计算的误差。例如:sym(3*pi/4,e)ans=3*pi/4-103*eps/249,(4)选项d 表示十进制小数。其有效数字位数由digits函数定义,缺省的有效位数是32位。如果有效位数小于16位,则会损失一些精度。例如:digits(10),sym(4/3,d)ans=1.333333333,digits(20),sym(4/3,d)ans=1.3333333333333332593,在符号变量和变量值相同时,可以用sym的简捷方式来建立符号变量,即用函数sym来表达。该函数的用法及其与sym函数的关系如下:
8、。,(1)syms argl arg2 等价于argl=sym(argl);arg2=sym(arg2);,(2)syms argl arg2 real等价于argl=sym(argl,real);arg2=sym(arg2,real);,二、用syms函数定义符号变量,(3)syms argl arg2 positive等价于argl=sym(arg1,positive);arg2=sym(arg2,positive);,(4)syms argl arg2 unreal等价于argl=sym(argl,unreal);arg2=sym(arg2,unreal);,例7-1example7_1
9、.m,创建一个字符型数据变量和一个符号型数据变量,并比较它们的不同。,f=sym(a)创建一个符号变量f f=a f1=a 创建一个字符变量f1 f1=a size(f)求符号变量f的大小 ans=1 结果为一个ll的矩阵 size(f1)求字符变量f1的大小 ans=1 结果同样为一个ll的矩阵,例7-1example7_1.m(续),f=fl 对变量f和f1进行逻辑运算,看两变量是否相等 ans=1 返回结果为1,表示“真”,二者内容是相等的 abs(f1)求字符型变量f1的ASIIC码值 ans=97 abs(f)求符号型变量f的ASIIC码值 ans=abs(a)可见f和f1的ASCI
10、I码值是不相同的,因此两个变量是不同的,7.3 符号表达式和符号方程,一、符号表达式和符号方程的概念,符号表达式(Symbolic Expression)和符号方程(Symbolic Equation)是将表达式和方程赋给一个符号变量,通过引用该符号变量来引用相应的表达式或方程。它们是两个不同的符号对象。符号表达式是代表数字、函数、算子和变量的字符串和字符串数组,不要求变量有预先确定的值,而符号方程是含有等号的表达式。它们的区别在于表达式不含等号,而方程必须带等号。如:,f=sym(a*x2+b*x2+c)%表达式f=sym(a*x2+b*x2+c=0)%方程,f=sym(arg),采用sym
11、命令来创建符号表达式和符号方程的调用格式为,1、采用sym命令,二、符号表达式和符号方程的建立,arg代表一个表达式或方程,注意,不要遗忘单引号。,(1)创建一个表达式 f=sym(a*x2+b*x+c)f=a*x2+b*x+c,(2)创建一个方程 f=sym(a*x2+b*x+c=0)f=a*x2+b*x+c=0,2、直接建立法,符号表达式和符号方程也可以直接采用与MATLAB中字符串变量的创建方法一样来建立。如:,(1)建立一个表达式 f=a*x2+b*x+c f=a*x2+b*x+c,(2)创建一个方程 f=a*x2+b*x+c=0 f=a*x2+b*x+c=0,【注意】:,符号表达式和
12、符号方程对空格很敏感。因此,在创建符号表达式或符号方程时,不要在字符间任意加空格符;在符号计算中出现的数字也是当作符号处理的;符号矩阵是数组,其元素是符号表达式。,7.4 符号矩阵,一、符号矩阵的建立,符号矩阵的创建有两种方法,即由sym命令创建和由字符串直接输入创建。,1、由sym命令建立符号矩阵,矩阵元素是不带等号的符号表达式,各矩阵元素的长度可以不同,矩阵行之间用分号隔开,各元素间用逗号或空格隔开。例如:,A=sym(4+x x2 x;x3 5x-3 x*a)A=4+x,x2,x x3,5*x-3,x*a,或利用简捷方式,命令如下:syms x aA=4+x x2 x;x3 5*x-3
13、x*a,2、由字符串直接输入创建矩阵,此种输入法与MATLAB字符串矩阵的输入相似。它不需要调用sym函数,但要保证在同一列中各元素字符串有同样的长度,在较短的字符串前后用空格符填充。,A=4+x x2 x;x3 5*x-3 x*a A=4+x x2 x x3 5x-3 x*a,【注意】:,此种方法在建立时要求符号矩阵每一行的两端都有方括号,而MATLAB字符串矩阵仅在首尾有方括号。,数字矩阵转换成符号矩阵是通过sym函数命令来实现的,起调用格式是:,由于MATLAB的数值型和符号型是两种不同的数据类型,因此在MATLAB中,这两个数据类型的变量之间不能直接进行符号运算,必须在MATLAB的工
14、作空间内将数值型转换为符号型后才能进行符号运算。不管数值矩阵的元素是以分数或是浮点数表示,转换后的符号矩阵都将以最接近有理式的形式给出。,二、数字矩阵和符号矩阵的转换,1、数字矩阵转换为符号矩阵,sym(A),例7-3example7_3.m,数值矩阵转化为符号矩阵,A=2/5 4/0.78 sqrt(23)/3;0.33 0.3333 log(4)输入数值矩阵A A=0.4000 5.1282 1.5986 0.3300 0.3333 1.3863 FA=sym(A)将数值矩阵A转化为符号矩阵FA FA=2/5 200/39 sqrt(23/9),在数值计算中,可以用一个指令来实现对矩阵中的
15、任何一个子矩阵进行引用和修改,但在符号计算中,引用(Quote)和修改(Modify)只能对符号矩阵中具体的元素一个一个地进行。,三、符号矩阵的引用和修改,例7-5example7_5.m,用函数sym和syms建立符号变量、表达式和矩阵。,(1)用命令建立符号变量x和beta,并设置附加属性为实型变量,命令为:,x=sym(x,real);x=x beta=sym(beta,real);%采用简捷方式:syms x beta real beta=beta,例7-5example7_5.m(续1),(2)建立复数变量z,z=x+beta*i;conj(x)%用下面的命令计算相应变量的共轭复数:
16、ans=x conj(z)ans=x-i*beta expand(z*conj(z)ans=x2+beta2,例7-5example7_5.m(续2),(3)建立三次函数y=ax3+bx2+cx+d的符号表达式,其命令为:,y=sym(a*x3+b*x2+c*x+d)y=a*x3+b*x2+c*x+d,这个命令将符号表达式ax3+bx2+cx+d赋值给变量y,由于没有建立对应于表达式中d、b、c、d和x的变量,y中的内容只是一个简单的字符串。为了使y成为一个真正的符号表达式,可以执行符号数学运算(微积分等),必须显式地建立这些变量。其命令如下:,a=sym(a),b=sym(b),c=sym(
17、c),d=sym(d)x=sym(x)%用简捷方式:syms a b c d x,例7-5example7_5.m(续3),如果用上述两个命令建立符号矩阵,命令为:,syms a b c d A=a a+c d+b;c d a+c;a+c+d c c+d*a A=a a+c d+b c d a+c a+c+d c c+d*a,例7-5example7_5.m(续4),syms eee dddA(1,3)=eee;%用“eee”代替矩阵A中的A(1,3)位置的元素A(3,2)=ddd;%用“ddd代替矩阵A中的A(3,2)位置上的元素A,结果为:A=a a+c eee c d a+c a+c+d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLABch07MATLAB 符号 计算 工具箱
链接地址:https://www.31ppt.com/p-5438890.html