符号对象(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)分解成多个因式的命令为

symsx;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)n在n趋近无穷大时的极限用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)  求符号矩阵的函数值

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

(9)还可以求极值

fminsearch      用单纯型法求解

fminunc           用拟牛顿法求解

fminbnd          查找限定区域内的极值

matlab 无穷符号,MATLAB强大的符号运算相关推荐

  1. 第十一章:MATLAB:符号运算(符号与数值,符号矩阵)

    第十一章:MATLAB符号运算 11.1. 符号与数值 11.1.1. 符号与数值间的转换 实例-数值与符号转换 11.1.2. 符号表达式与数值表达式的精度设置 实例-魔方矩阵的数值解 实例-稀疏矩 ...

  2. Matlab学习笔记(1) - 符号变量及其运算

    符号变量及其运算 绪:什么是符号计算? 1.字符型数据变量的创建 2.符号型数据变量的创建 3.符号计算的运算符与函数 4.寻找符号变量 5.符号精度计算 6.显示符号表达式 7.合并符号表达式 8. ...

  3. matlab 无穷符号,如何用matlab进行级数或数列的符号求和?matlab符号求和指令分享...

    如何进行级数或数列的求和,在高中<数学>课上的数列和大学<高等数学>中的级数都有有遇到过这种问题,这如果用人脑来计算的话非常耗时,难度较大.但是用matlab就可以轻松解决.下 ...

  4. matlab 的 符号,MATLAB符号计算

    <MATLAB符号计算>由会员分享,可在线阅读,更多相关<MATLAB符号计算(33页珍藏版)>请在人人文库网上搜索. 1.第7章 MATLAB符号计算,7.1 符号计算基础, ...

  5. matlab simulink 数学符号,MATLAB符号数学

    符号数学定义对符号(不是数字!)进行数学运算.例如, a + a为2a.符号数学函数位于MATLAB的Symbolic Math Toolbox中.工具箱包含相关功能, 并且是MATLAB的附加组件. ...

  6. MATLAB从入门到精通-Matlab R2020b中的新标记符号(New-marker-symbols)

    Matlab R2020b中的新标记符号(New-marker-symbols)! MatlabR2020B版本引入了新的水平("_")和垂直("|")线标记符 ...

  7. matlab中如何输入积分,在matlab中怎么输入特殊符号,Matlab的符号积分

    一.文档中的Text Properties: 下标用 _(下划线) 上标用^ (尖号) 斜体 \it 黑体 \bf << \ll >> \gg 正负 \pm 左箭头 \left ...

  8. 在Matlab图片里输入数学公式、符号和希腊字母的方法

    在Matlab图片里输入数学公式.符号和希腊字母的方法 在所有的Matlab Figure里都可以使用大量的Tex代码来输入公式.数学符号等.而且,与Word2007类似,都能够写完立马显示,不对的话 ...

  9. matlab程序特殊符号,matlab中怎么输入特殊符号

    matlab中怎么输入特殊符号: word文档中怎么插入心形特殊符号?,缺失:matlab中怎么输入特殊符号12628/11 以下是的一些我们精选的word文档中怎么插入心形特殊符号? word文档中 ...

最新文章

  1. python动态时钟代码_python实现简易动态时钟
  2. 从人人网抓取高校数据信息,包括,省份 - 高校 - 院系 (提供最终SQL文件下载)...
  3. 临近春招,Kafka是不是忘完了,给你一文概括Kafka
  4. 5行代码AC——L1-029 是不是太胖了 (5分)
  5. 20145202马超《信息安全系统设计基础》实验二总结
  6. int类型和byte类型的强制类型转换
  7. 历史数据清理--方案
  8. Matlab Tricks(二)—— 空参空返回值的函数
  9. 1364:Field 'sex' doesn't have a default value [ SQL语句 ]
  10. linux qq 提示错误,deepin-wine QQ崩溃,QQ遇到错误的暂时解决方法
  11. 解决cmd命令行乱码问题
  12. Codeforces936B. Sleepy Game
  13. 【Coursera】深度神经网络的改进:超参数调整、正则化和优化(更新中2023/04/12)
  14. IIC总线协议及应用
  15. 淘宝开放平台订单接口
  16. Vue-Element写一个简单的列表管理23/100统
  17. Flutter调试ios中的报错——Xcode更新
  18. c语言 log4c,LOG4C 的使用
  19. 如何用pip从阿里云镜像下载python包
  20. 惠普服务器安完系统后启动不了怎么办,惠普服务器CentOS7安装不识别硬盘,安装后启动失败问题...

热门文章

  1. 虚拟机安装centeros7镜像
  2. 【分享】参加一个0元小白理财训练营开营第1天的学习笔记
  3. Bartender安装时间长,安装成功后未跳出激活界面的解决方法,亲测2019和2021版
  4. 有哪些好用的读书笔记app
  5. 基于Android Studio开发的笔记APP
  6. html背景图片不重叠铺满,html中背景图片铺满页面没有重复的效果
  7. 树莓派蜂鸣器python代码_树莓派+蜂鸣器=整点报时器
  8. 宜品优享抽奖系统小程序,多方式真是展示抽奖功能
  9. javaweb基本概念
  10. scpjsv3模组链接_我的世界scpv3模组