符号对象(Symbolic Objects 不同于普通的数值计算)是Matlab中的一种特殊数据类型,它可以用来表示符号变量、表达式以及矩阵,利用符号对象能够在不考虑符号所对应的具体数值的情况下能够进行代数分析和符号计算(symbolic math operations),例如解代数方程、微分方程、进行矩阵运算等. 符号对象需要通过sym或syms函数来指定, 普通的数字转换成符号类型后也可以被作为符号对象来处理. 我们可以用一个简单的例子来表明数值计算和符号计算的区别: 2/5+1/3的结果为07333(double类型数值运算), 而sym(2)/sym(5)+sym(1)/sym(3)的结果为11/15, 且这里11/15仍然是属于sym类型, 是符号数.

 1. 符号对象的定义

  符号对象的定义用syms x y z; 的形式,例如

  

  此外,还可以用x=sym('x'); y=sym('y'); 的格式定义符号变量,它跟syms x y; 具有相同的含义. Matlab也支持一次性定义一个符号表达式,如f=sym('a*x^2+b*x+c'),定义后这个表达式会被认为是一个整体,Matlab不会自动把其中每个项a,x,b ,c 定义为符号变量. 所以如果想对一个符号表达式进行计算,则还是要把参与计算的项单独定义好.

2. 符号数

  Matlab支持将一个数字转换成符号对象,转换得到的符号数(Symbolic Numbers)仍然具有数字值的含义,只是之后Matlab不会对它进行浮点运算. 符号数的定义也通过sym命令实现. 例如可以让Matlab进行分数运算1/2+1/3=5/6,

  

  而如果直接在命令窗口中输入1/2+1/3则会得到0.8333的结果. 符号数的计算比浮点计算要花费更多的时间和空间, 但是它是一种精确计算, 没有误差.

3. 符号计算

  利用符号变量可以构建符号表达式、符号函数、符号方程和符号矩阵等,然后可以进行因式分解、求导、求方程、求矩阵函数值的解等操作.

  (1) 因式分解Factoring

  对符号表达式f进行因式分解的命令格式为factor(f). 例如将表达式(x^9-1)分解成多个因式的命令为

syms x;
factor(x^9-1)

  运行结果为

  

  (2) 求导/求微分Differentiation

  对符号表达式f(x)求导的命令为diff(f). Matlab可以自动识别表达式中的变量, 如果表达式a只包含一个变量, 则diff(f)函数是相对这个唯一的变量求导, 若a包含多个变量, 则diff(f)是对f中的默认变量求导, 默认变量是f中含有的在字母表中离x最近的变量. 表达式f的默认变量可以用函数findsym(f,1)来得出.

  如果要对f(x)n阶导数, 则用diff(f,n). 对于含有多个自变量的表达式, diff可以实现求偏导, 例如表达式f(s,t)相对s求偏导就用diff(f,s), 如果相对s求2阶偏导则是diff(f,s,2).

  (3) 求积分Integral

  求符号表达式f(x)的不定积分用int(f). 对于含有多个符号变量的表达式f(x,s,t), 如果希望将其相对t求积分, 用int(f,t). 求f(x)从0到1的定积分用int(f,0,1)或int(f,x,0,1).

  (4) 求极限Limits

  求函数f(x)或f(x,y)在x趋近于0时的极限用limit(f,x,0), 求(1+x/n)nn趋近无穷大时的极限用limit((1+x/n)^n,n,inf), 求a(x)在x趋近0-(左极限)或x趋近0+(右极限)的时候用limit(f,x,0,'left')或limit(f,x,0,'right').

  (5) 符号累加Symbolic Summation

  普通的算术累加用sum, 而符号数或符号表达式的累加用symsum. 例如求1+1/22+1/32+...和1+x+x2+...用如下代码

syms x k;
s1=symsum(1/k^2,1,inf)
s2=symsum(x^k,k,0,inf)

(6) 符号表达式化简Simplification

  利用MATLAB提供的若干表达式变形函数, 我们可以将符号表达式化简或根据需求转换成不同的形式.

  • collect 可以将表达式按照其默认的符号变量的幂次由高到低排列, 同一幂次的符号变量的系数被合并到一起. 如果表达式含有多个变量, 则可以利用第二个参数指出以哪个变量为准. 例如对于f=x^3*y+x*(y^2+6)+x*y+8*x^2+y^2*x, collect(f)的结果为x^3*y+8*x^2+(2*y^2+6+y)*x,collect(f,y)的结果为2*y^2*x+(x+x^3)*y+8*x^2+6*x.
  • expand 将表达式展开, 并且会应用一些基本公式(等式identities). 例如expand((x-1)*(x-2)*(x-3))的结果为x^3-6*x^2+11*x-6; expand(exp(a+b))的结果为exp(a)*exp(b); expand(cos(x+y))的结果为cos(x)*cos(y)-sin(x)*sin(y); expand(cos(3*acos(x)))的结果为4*x^3-3*x.
  • horner 将表达式分解成嵌套形式. 例如horner(x^3-6*x^2+11*x-6)的结果为-6+(11+(-6+x)*x)*x.
  • factor 因式分解, 将表达式分解成几个因式的乘积, 如果表达式无法分解成积的形式, 则分解结果为原表达式保持不变.
  • simplify 利用各种内置的基本公式(algebraic identities)对表达式化简.
  • simpe 通过不同的方式对表达式进行化简, 试图得到最短的结果(结果表达式含有最少的字符数).

  (7) 解代数方程

  解代数方程的a(x)=0的命令是solve(a),例如

  

  (8)  求符号矩阵的函数值

  符号矩阵是指矩阵元素包含符号变量的矩阵,对这种类型的矩阵可以按照正常数值矩阵一样的规律进行计算,例如  

转自 http://www.cnblogs.com/zhouqing/p/3306076.html

matlab中的符号对象与符号运算相关推荐

  1. matlab 极限积分,实验二MATLAB中的极限和微分积分运算

    <实验二MATLAB中的极限和微分积分运算>由会员分享,可在线阅读,更多相关<实验二MATLAB中的极限和微分积分运算(28页珍藏版)>请在人人文库网上搜索. 1.实验二 MA ...

  2. matlab 极限积分,实验二matlab中的极限和微分积分运算.ppt

    实验二matlab中的极限和微分积分运算实验二matlab中的极限和微分积分运算 实验二 MATLAB中的极限.微分和积分运算 一.实验目的 熟悉MATLAB软件中关于极限.微分运算和不定积分.定积分 ...

  3. 7.1 matlab符号对象(符号对象的建立和四则运算)

    1.符号对象的建立 (1)sym函数 sym函数用于建立单个符号对象,其常用调用格式为: 符号对象名=sym(A) 将由A来建立符号对象.其中,A可以是一个数值常量.数值矩阵或数值表达式(不加单引号) ...

  4. matlab函数代入求值,matlab中,如何把带有符号的式子代入到一个函数中去?

    答:再开一个函数文件 function f2=fun(m) f2=f1(3*m+1): 这样就行了啊 答:如果是单变量函数,做起来很简单,直接用inline就可以了: 如果是多变量函数,相对要麻烦一些 ...

  5. MATLAB中的subs函数nbsp;符号替代函数

    subs是单词substitution的缩写,意思就是" 替代". 比如命令: f=a+b; subs(f,a,4); 则结果是:ans=4+b >> syms a b ...

  6. 【LDPC系列1】基于MATLAB中LDPC编译码器对象的图像传输通信系统仿真

    关注公号[逆向通信猿]更精彩!!! 1. 构造编码器对象 采用MATLAB内置的comm.LDPCEncoder构造编码器对象,其中使用默认的校验矩阵,信息位长32400比特,码长64800比特,该校 ...

  7. BOM中的其他对象以及短路运算

    1.location 浏览器中的地址栏 location.href获取地址栏完整的地址,可以通过设置href属性跳转到哪个页面 刷新页面的几种方法: location.href = "&qu ...

  8. matlab 的excel 对象,MATLAB 中的 COM 对象

    COM concepts and an overview of COM support in MATLAB. Examples that show how to use COM interface w ...

  9. 【LDPC系列2】基于MATLAB中LDPC编译码器对象的图像传输通信系统仿真(IEEE 802.16e标准协议基础矩阵)

    关注公号[逆向通信猿]更精彩!!! 1. 构造校验矩阵H,并保存为mat文件 采用IEEE 802.16e标准协议中的基础校验矩阵 通过构造QC-LDPC校验矩阵,码长n=2304,信息长k=1152 ...

最新文章

  1. 7.3. UUID()
  2. 机器人搬运礼盒程序_礼盒厂公司2020范文
  3. boost::fibers::unbuffered_channel用法的测试程序
  4. 震惊!上手就是快,GitHub18.5K标星,超实用的Python资源
  5. 在业务系统中寻求技术含量
  6. rest-framework之响应器(渲染器)
  7. mysql 慢日志报警_一则MySQL慢日志监控误报的问题分析
  8. Easyui 页面访问慢解决方案,GZIP网站压缩加速优化
  9. 测试面试题集-3.生活物品测试:行李箱、电梯、洗衣机
  10. 利用ViewPager实现app的启动画面
  11. java生成简单流水号
  12. Libreoffice命令行实现office转pdf(Windows、Linux)
  13. vue、Element-UI 图标偶发性乱码问题解决方案
  14. Oracle 数据压缩(Compression) 技术 说明
  15. 鱼池显示服务器错误502,502+bad+gateway怎么解决
  16. vcruntime140_1.dll丢失的解决方法(仅一招解决)
  17. 计算机基础知识教程excel单元格拆分,EXCEL表格怎样把一个单元格里的不同内容分开...
  18. 简单的stm32入门小程序(交通信号灯)STM32F103C8T6
  19. 从初学者的角度一起谈谈设计模式之策略模式
  20. hex文件和bin文件的区别和联系

热门文章

  1. kali密码破解笔记
  2. word2013中插入图片显示不全
  3. Shiro(一)之shiro简介与工作原理
  4. Java Integer值范围问题
  5. 大型螺旋CT空间分辨率(线对)
  6. IDEA的maven的package打包
  7. pgpool读写分离,配置设置及调研
  8. 雅虎微软合作对手机搜索领域的影响
  9. 如何下载并使用HTK工具包
  10. Mongodb 查询重复数据