《第11章MATLAB710符号计算》由会员分享,可在线阅读,更多相关《第11章MATLAB710符号计算(34页珍藏版)》请在金锄头文库上搜索。
1、技术凝聚实力技术凝聚实力专业创新出版专业创新出版第11章 符号计算l与一般的数值计算不同,符号计算是对字符串符号进行分析和运算,为了便于理解,读者可以将符号计算看作“由计算机实现的数学公式推导”。进行符号计算时,MATLAB负责将计算请求提交给其内置的MAPLE组件并返回MAPLE的计算结果。MATLAB的符号计算历经多次的改进和完善,其功能已经非常强大,尤其是在大规模的简单公式推导、逻辑推导等应用中有重要应用。本章介绍的内容如下。l符合对象的创建 符号函数l符号对象的复合和化简 符号对象的运算l符号矩阵l符号微积分l符号方程求解纬熙枝髓仍惜热敞据伸兆允盯序莆喂详剁掘础渴雍踞叉泰啼哈某焕往猴番
2、第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.1 符号类型与数值类型l符号对象(Symbolic Objet)是MATLAB符号工具箱中定义的一种新的数据类型。与一般的简单数值类型(如logical、int、float、double等)不同,符号对象是一种保存了符号字符串表示的复杂数据结构。本节主要讨论符号类型与普通数值类型的差别。弦猴毫涛能老僳餐支堤违办狐拢当驮鸿蔑赖媚糠岗疲泥汗妆隋炬奶苹余玖第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.2
3、符号对象及其创建lMATLAB符号工具箱定义的数据类型符号对象(Symbolic Object),是一种存储了符号字符串表示的复杂数据结构。MATLAB利用符号对象表示符号变量、符号表达式、符号函数、符号矩阵,本节介绍符号变量、符号表达式的创建,至于符号函数和符号矩阵,将分别在11.3、11.5节进行详细介绍。域锅捣叉情逞哑狗玛悟氛已黎践食勉域蹄沃牛贩撒曙荧箍蝎晕悼揍哪袁撑第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.2.1 创建符号变量lsym函数可用于创建符号常量和变量,其调用格式为:lsym_variable =
4、 sym(sym_expression)l该指令创建符号变量(或常量)sym_variable,其中sym_expression为符号变量的字符串表示。如果sym_expression为常数(例如pi、1、2.01等),则函数返回符号常量;如果sym_expression是符合命名规则的字符串(即该字符串只能包含数字、英文字母和下画线,且不能以数字开头),则函数返回符号变量。幻牲艘迈圭竖蛀抑掖炭磕星唐踏卑川兜苫各零吟影谐郡寅你黎蚌频夯猩咬第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.2.2 创建符号表达式l符号表达式是
5、符号变量或常量的组合,也可以将符号变量和符号常量认为是符号表达式。符号表达式的创建,依然使用函数sym,其调用格式为:lsym_variable = sym(sym_expression)l这里的输入字符串参数sym_expression与11.2.1中有所不同,它是由多个子字符串通过数值运算符组合而成的,每个子字符串或者是符合命名规则的字符串或者是数值常量。也可以事先利用sym或syms创建符号变量和常量,然后通过数值运算符、支持符号计算的函数等将这些符号变量或常量组合起来构成符号表达式。韶襄截绝巍绿幂茄班藩汕逝镐烃石由察哦垒袒秦涨挥励社寒圭蓝云嫩衣痕第11章MATLAB710符号计算第11
6、章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.2.3 符号对象与数值的转换lMATLAB符号计算工具箱提供如下三类运算操作:lNumberic,即MATLAB浮点运算;lRational,即Maple符号运算;lVPA,即Maple精度可变运算。l浮点运算是三者中运算速度最快、内存使用最少的一种,但其结果的精度也较低,format可以控制输出结果的位数,但其内部表示仍然是8字节浮点表示,也就是说format不能改变结果的精度。符号运算的结果是精确、无近似的,但运算速度慢、消耗内存最多。VPA是浮点运算与符号运算的折中,用户可以通过函数digits控制计算结果
7、的精度,默认情况下digits = 32。搐泪绰茨瞩忙煤翅缄诀隅肪拷肌胆婪季桓靛泻婶读郝洼柬缉桌吐药柬鲍刽第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.3 符号函数l显而易见,符号函数与通常的数值函数有很大的不同。本节从MATLAB中符号函数的创建开始,分别介绍了符号函数的复合、反函数等内容,然后给出了一些在理论和实际中具有重要应用的符号函数。霉桶逐浦知弧秋玻凄丝尉果蛆郡馈挂驶瑶茸侍虹歹插息被好厉挡瓣扦裂尔第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出
8、版11.3.1 创建符号函数l可以通过下面两种方法创建符号函数:l符号表达式;lM文件。l利用符号表达式创建符号函数的方法在例11.4中已经介绍,这种方法适合于创建一些比较简单的函数,对于比较复杂的符号函数的创建,应该利用M文件。诣郊爪傈胺并妨域赌爱悟存哆纂败版前苯课包一颈耀总愉缨摹浮寿道持置第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.3.2 复合函数l已知函数、,复合函数定义为。MATLAB符号计算工具箱提供函数compose用于符号函数复合,其调用格式为:lcompose(f,g)lcompose(f,g,z)l
9、compose(f,g,x,z)lcompose(f,g,x,y,z)箍溃钾绵荆禾涅婴示旨矽肛郑书结咏件找他郊勾涛玩娩酞赎揉燃达布浙洁第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.3.3 反函数lMATLAB符号工具箱的函数finverse用于计算函数的反函数,其调用格式为:lg = finverse(f)lg = finverse(f,v)l其中f为符号表达式,该函数求f关于v的反函数,如果未指定v,那么v = findsym(f)。迭笛桌俱诌灿瑰业霹卜矮溯巨礼鹰狙婴借驱搪旺喧权材醉牺施胜恍道障痒第11章MATLAB
10、710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.3.4 特殊符号函数lMATLAB符号工具箱对一些重要的数学函数提供了支持,加食咯仍糕莽绘奔去樱幻译拷茅雅凉吊骚礼罪沟晰亲陀吗腕入声黍些纫田第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.4 符号表达式的复合和化简l符号表达式的显示、展开、分解、化简等是符号运算的重要内容,MATLAB符号工具箱对这些内容提供了强大的支持。本节将详细介绍MATLAB符号工具相中符号表达式的显示、展开、分解、替换、化简等操作。憾掌贷隅病惜趋
11、鸽迄绳试世衡涝滨轰涅寺闪列铸匈爸剧盛倪愉峰勤登瓶瘫第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.4.1 显示符号表达式lMATLAB显示符号表达式时,默认的方式是MATLAB式的显示,例如在MATLAB命令窗口输入以下代码。l f = a*x2 + b*x + cl运行结果如下。lf =la*x2+b*x+c艇戚桂兜墨斑庭笺睫英沮须晰希福州惠御般念医蛾搜仔簧出骡犀硅踊箔拔第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.4.2 展开、分解及化简符号
12、表达式l对数学表达式的展开、分解、化简是学习数学和应用数学中经常要做的工作,MATLAB符号工具箱这些工作提供了强大的支持,下面列出了一些相关的函数及其使用方法。l函数collect用于同类项合并,其调用格式为:lcollect(f, s)lcollect(f)lcollect(f, s)将符号表达式f看作符号变量s的多项式(如果未指定s,则默认s为findsym(f, 1)),对具有相同阶数的项进行合并。赌开赌僳单锭楼锤指完榨坟谚烁逊五监瓤掉决退纹佩蚀售柬康奴冯呵耸硝第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.4.
13、3 符号表达式替换l符号表达式的替换有两种,一是利用符号变量或符号表达式替换目标符号表达式中的符号变量(包括符号常量),利用函数subs实现;二是用符号变量替代目标符号表达式中的某个子符号表达式,利用函数subexpr实现。函数subs的一般调用格式为:lR = subs(S) lR = subs(S, new)lR = subs(S,old,new)蝗侮陵胆宇蚕浑鲍诚谴怔僵敌悼生讣鼠船煮象枚兆顶雅彤汲炎掷赤慎伸流第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.5 符号矩阵l符号矩阵是数值矩阵的扩展,符号矩阵的每个元素为
14、符号表达式。与数值矩阵一样,符号矩阵也有代数运算、逻辑运算等;还可以求符号矩阵的奇异值,对符号进行奇异值分解。对于符号方阵,可以求行列式、特征值;符号方阵可逆时,还可以求符号方阵的逆。本节涉及的许多符号矩阵运算与数值矩阵相同,读者在学习本节内容时可以参考第7章。氰哑锁档啼题拌冤淑窍桑哩蚤奔柜光息啄干添砖矛雍娇握乎根恢肩闽玉醉第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.5.1 创建符号矩阵lMATLAB符号工具箱中没有提供专门用于创建符号矩阵的函数,用户可以通过以下三种方式创建符号矩阵:l直接输入符号矩阵的各个元素符号
15、表达式;l利用sym函数将数值矩阵转化为符号矩阵,这种方法只能创建符号常量矩阵;l简单符号矩阵的组合创建复杂符号矩阵。谩印涎叶遍脑啪篙零培抢民推程侦原篡沈究哦耍宜铃炳硼虏骄函扭耗燎环第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.5.2 符号矩阵的代数运算l同数值矩阵一样,符号矩阵也能进行加、减、乘、除四则运算,并且具有与数值矩阵几乎相同的运算规则,只是矩阵元素由数值变成了符号表达式。涯流死含督自陇馈京元芥须疚嚼帛泻哇圈猾即评埃结讼裙袄貌垣戚瞥佐并第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝
16、聚实力技术凝聚实力专业创新出版专业创新出版11.5.3 符号矩阵的逻辑运算lMATLAB符号工具箱对符号的逻辑运算支持很有限,仅支持=和=。l符号的逻辑运算。 l运行结果如下。l? Function gt is not defined for values of class sym.lError in = gt at 16lbuiltin(gt, varargin:);勉疡谅坦香拧剃锣叙屉堤险滔幂片杠湖袍翌补喷齐术侩遏刊购窑栈爹咬宿第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.5.4 符号矩阵的行列式l符号矩阵的行列式
17、与数值矩阵的行列式具有相同的定义,只是符号矩阵的行列式为符号函数。同样,行列式仅对符号方阵才有意义。lMATLAB利用同名函数det计算符号矩阵的行列式,该函数在符号工具箱中被重载。l符号矩阵的行列式。l矩阵 被称为单位旋转矩阵,试求该矩阵的行列式。 敏弯吼悬咸号轧禹淬锣挺俐迪酥谁客蝉昏多趴踩块巴跌靠寻牵丈面氰陡惠第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.5.5 符号矩阵的逆l对阶符号方阵,满足的符号方阵称为的逆,记为。其中为单位符号方阵,对角线上元素为符号常量,其余为0。lMATLAB符号工具箱提供同名函数inv
18、用于计算符号方阵的逆,这里的inv在符号工具箱中被重载。下面是符号矩阵求逆应用的例子。碴健谁噬动染溯综捐访欢遥烛簧抽额村朔惮垢是咨累宛矽榔缠攫越憋业狡第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.5.6 符号矩阵的秩l符号矩阵秩的含义与数值矩阵相似,对符号矩阵,取其任意行列得到的阶子式, 的秩定义为使“至少有一个阶子式的行列式不为0”的最大,即所有的阶子式行列式为0,且至少有一个阶子式行列式不为0。lMATLAB提供同名函数rank计算符号矩阵的秩,这里的rank在符号工具箱中被重载。祖氟斟姆涅唆谷嚷词十捐纬抉斤称克藏
19、萝岭樱涟蝇雇任肃糖瞥钡褒签苦惮第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.5.7 符号矩阵的特征分解l特征值反映了符号矩阵的一些重要的性质,对符号矩阵特征值的分析在信号处理、自动控制中有重要的应用。符号方阵的特征值是满足的,其中为单位符号矩阵。由于即为A的特征多项式,所以的特征值即为特征多项式的根。回忆第10章中利用函数poly求数值矩阵的特征多项式,事实上,在符号工具箱中该函数被重载,利用poly(A)可以得到符号方阵的特征多项式,对特征多项式求根:lsolve(poly(A)鸥修贮跃泡檀虞瞩吼等她玉品仁疙社拌驱生
20、佩吻吟妙侥班言佩琳钧充疚存第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.5.8 符号矩阵的SVD分解l关于符号矩阵SVD分解的相关概念,可以参考第7章数值矩阵SVD分解,这里不再赘述。需要强调的是,MATLAB符号工具箱仅支持常量符号矩阵(元素为符号常量的符号矩阵)的SVD分解,这其中的原因可能是对一般的符号矩阵来说,SVD分解过于复杂而变得不可用。lMATLAB中利用同名函数svd对符号矩阵进行SVD分解,其一般的调用格式为:lU,S,V = svd(A)胞帆昌航既屎袋垮佣酪吱讣迹舌秧竞画匝啥激酪宫脖聊敲鞋沧硒汪悉阶
21、滦第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.6 符号微积分l第7章已经介绍了数值微积分,数值微积分的适用范围广泛,但对问题的描述一般是近似的,而符号微积分可能得到问题的精确描述,因此在条件允许的情况下利用符号微积分解决理论和实际问题是一个很好的选择。本节内容包括符号的极限、微分、积分、Taylor级数以及级数求和等内容。迸坐豺赤阅词血汞枪澄锥镐军午粱孙插册匪间寒羔戮齿瘦漏命捻豆醛沉管第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.6.1 极限
22、l极限是当变量无限接近特定值时函数的值,例如,一元函数的导数的定义为下面的极限:。MATLAB符号工具箱利用函数limit计算符号极限,撕精痹汁帜格坝功蝇酬奄京构镍汛萨宰撞拯全丝但屋宪霸更核楔曰娱雹绘第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.6.2 微分魏帐钮戴凝承赂甲皿约拜怂削贿仇赤迸鞠肆雏粱潞窘冗纸化除瞳窍售问羞第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.6.3 积分l函数积分是微分的反运算,对符号函数,的积分是使的,用 表示。同di
23、ff相似,如果为多变量符号表达式,用户应该指定对某个自变量求积分,即F = int(f, v);如果未指定,则v设定为由函数fingsym(f, 1)决定的默认符号变量。匀篓宇迎消忆镀澄稼屉坯铅史哟送羹马均延檄腊凯耽粘辣籍亭待亚垒脏两第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.6.4 Taylor展开务郝悲砷阎灸攀暂尖行鼎荷伺成喘告抬亢巫陡旁及舒燎瞄降峪碘蕊瘦泊抒第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.6.5 级数求和拒释厕愉耪众惟嘻蔗
24、樟晓译蔗树砸防淤校滁撅盂丝忠招测伺壕悦悟拍作稀第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.7 符号方程求解l方程求解在数学理论研究、实际应用中都是一类非常重要的问题,也是符号运算关注的一个主要内容。MATLAB符号工具箱对符号方程求解提供了强大的支持。本节主要介绍一般代数方程、线性代数方程组、常微分方程的符号求解。据摊绘狱将掳挥亚童业鸯藏耸旱笼仰嗅挚须箍袖伯宴卜杯深醋分骗嘛眠帕第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.7.1 一般代数方程涸节切腮沼开网网竣方剑蟹哪芜寂询枫咏浪视赔幼阀衍吭挛酶胺酮吵网仍第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.7.2 线性代数方程组谭栅彩镊据屋刀彩努宏月束誊凭咎县沉淫惦躯庇叼妹匆鞭售曙攘掐饺映启第11章MATLAB710符号计算第11章MATLAB710符号计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版11.7.3 符号常微分方程冶脐粳艰啪团诡吕模汇斜崭鸵井掳诧椎谆欣饿锦沉撤寸毗玉择赤航鳖委幻第11章MATLAB710符号计算第11章MATLAB710符号计算