十二章 Matlab的符号运算.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
十二章 Matlab的符号运算

Matlab的符号运算 除了数值运算,在数学和工程中还经常用到符号运算。比如我们经常使用的对某个表达式进行特点运算,如微分、积分等。它们的区别在于:数值运算中,参与运算的变量是被赋值的数值变量;而在符号运算中,参与运算的是非数值的所谓符号变量,其中出现的数值都当作符号来被处理的。 我们先看一个具体实例: 对于函数,求其对于x的微分和积分:命令如下 f = ‘sin(x)^2’; dfdx = diff(f); intf = int(f) 这样,我们就可以得到正确的表达式。实际上,我们首先定义了符号表达式f,然后由相关的符号运算得到了微分和积分的结果。 下面我们就来介绍相关内容。 一、定义符号对象 在MATLAB的symbolic math toolbox中定义了一种新的数据类型,为符号对象。该对象用来存储代表符号的字符串,可以是符号变量,符号表达式或符号矩阵几种形式。 在使用符号对象之前,首先要声明要用到的符号变量,语法为: syms 变量名1 变量名2…… 其中,各个变量名应该用空格分隔,不能用逗号。 如 syms a x 即创建了两个符号变量a 和 x,定义后的符号变量就可以参与符号运算。 在创建必要的符号变量后,可以在此基础上建立符号表达式和符号方程,例如: syms x a b c f=sym(’sin(x)^2’);或f=’sin(x)^2’ eq=sym(’a*x^2+b*x+c=0’)或eq=’a*x^2+b*x+c=0’ 上面的符号变量f和eq分别保存的是一个符号表达式和符号方程。注意,符号表达式和符号方程必须要以单引号包含起来。 另外,对于矩阵而言,数值矩阵不能参与符号运算,所以,我们还要将某参与符号运算的矩阵定义为符号矩阵。 例如:A=hilb(3) A=sym(A) 当使用符号转换函数时,有理化运算被启动,原先的数值类型被转化为无穷精度的符号形式数据,矩阵也转换为符号矩阵。 一般情况下,通过sym()函数,可以与普通矩阵定义类似的方法来定义符号矩阵。例如: syms a b c d; B=sym(‘[2*a+b,3*b;5*c+d,2*d]’); 二、数值与符号的转换 对于某个数值变量所保存的数值结果,sym()函数可以将其转换为相应的符号表达式,即该数值经过转换后被看作一个符号变量。设要被转换的数值变量为a,则语法为: sym(a,’f’) 浮点表示形式 sym(a,’r’) 有理数表示形式(为缺省设置) sym(a,’d’) 十进制表示形式 例如:a=(1+sqrt(5))/2 digits(5) b=sym(a,’d’) 即将其转换为5位有效数字的符号对象,我们注意比较a,b类型上的区别。 三、符号算术运算 1.加减乘除运算 相应的运算符与一般算术运算符相同。但应保证参与运算的数据为符号对象。 2.变量替换 当我们得到一个符号解或一个符号表达式的时候,往往需要将一些符号变量替换成数字或其他符号。我们可以通过subs()函数来实现该功能。 该函数适于单个符号矩阵、表达式、代数方程和微分方程。语法为: subs(S,NEW), 即用新变量NEW替换S中的默认变量,一般而言,其默认变量为x。 例如: G=sym(‘[a*sin(b+x),a+b,exp(a*x),sqrt(x)]’); G1=subs(G , ‘pi/3’) 注意:pi/3也是一符号对象。 subs(S,NEW,OLD) 即用新变量NEW替换S中的指定变量OLD。例如: f=sym(‘sin(1/3*a*pi)’); subs(f,’2’,’a’) 其结果将a替换为符号变量‘2’。 如果用数值替换原来表达式中的变量,最终将得到对原表达式计算后的数值结果。例如上式中,以数值2替代原式中的a,有: subs(f, 2, ‘a’) 则结果为一数值,而非符号表达式。 3 因式分解与展开 factor(S) 对S分解因式,S是符号表达式或符号矩阵。 expand(S) 对S进行展开,S是符号表达式或符号矩阵。 collect(S) 对S合并同类项,S是符号表达式或符号矩阵。 collect(S,v) 对S按变量v合并同类项,S是符号表达式或符号矩阵。 例: 对符号矩阵A的每个元素分解因式。 命令如下: syms a b x y; A=[2*a^2*b^3*x^2-4*a*b^4*x^3+10*a*b^6*x^4,3*x*y-5*x^2;4,a^3-b^3]; factor(A) %对A的每个元素分解因式 例: 计算表达式S的值。 命令如下: syms x y; s=(-7*x^2-8*y^2)*(-x

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档