MATLAB的符号运算基础
在数学运算中,运算的结果如果是一个数值,可以称这类运算为数值运算;如果运算结果为表达式,在MATLAB中称为符号运算,符号计算是对未赋值的符号对象(可以是常数、变量、表达式)进行运算和处理。MATLAB具有符号数学工具箱(SymbolicMath Toolbox),将符号运算结合到MATLAB的数值运算环境。符号数学工具箱是建立在Maple软件基础上的。
(一) 符号变量建立符号变量和符号常数
建立符号变量的方法有两种,应用,应用sym与syms函数,通常应用sym建立符号表达式,应用syms同时定义多个符号变量。
(1)函数:sym
功能:用来建立单个符号量
语法形式:sym(‘表达式或变量’)
举例:
a = sym('a'); %定义符号变量a,下同
b = sym('b')
c = sym('c')
d = sym('d') %至此定义了4个符号变量
w = 10;x = 5;y = -8;z = 11; A = [a,b;c,d] %建立符号矩阵A
B = [w,x;y,z] %建立数值矩阵B
C = det(A); %计算符号矩阵A的行列式
D = det(B); %建立数值矩阵B的行列式
由上述结果我们不难看出,在符号运算中是以表达式形式呈现结果的,而在数值运算中是以数值表示结果的。
(2)函数:syms
功能:定义多个符号变量
语法:syms Var1 Var2 ……Varn
说明:函数定义符号变量var1,var2,……,Varn等。在用这种格式定义符号变量时无需在变量名上加字符分解符(‘’),变量间用空格而不要用逗号分隔,要用空格来分隔。
例2:应用syms函数定义符号变量
syms x y %同时定义x,y为符号变量
A = [sin(x) sin(y);cos(x) cos(y)]
(二)基本的符号运算
1基本符号运算函数
在MATLAB中,有很多应用于符号运算的函数,常用的函数如下表所示:
函数名 |
功能 |
用法举例 |
sym |
字符串或数值到符号的切换 |
sym(‘a+b’) |
expand |
展开 |
syms x s = (-7*x^2-8*y^2)*(-x^2+3*y^2); expand(s) collect(s,x) factor(ans) g = simple(ans) |
collect |
合并同类项 |
|
factor |
因式分解 |
|
simplify simple |
化简 |
|
sym2poly(S) |
转化S为多项式系数向量 |
syms x;f=’2*x^2+3*x-5’; n = sym2poly(f) poly2sym(n) |
poly2sym(c) |
转换多项式系数向量c为符号多项式 |
2符号表达式运算
(1)符号表达式的四则运算
syms x y z; %定义x,y,z为符号变量
f1 = 2*x+x^2*x-5*x+x^3
f2 = 2*x/(5*x)
f3 = (x+y)*(x-y)</span>
(2)因式分解与多项式展开
函数1:factor
功能:分解因式
语法:factor(s)
说明:s是符号表达式或符号矩阵
函数2:collect
功能:合并同类项
语法:collect(s)
collect(s,x)
说明:对s按符号变量x进行同类项合并,s是符号表达式或符号矩阵。
举例:对表达式因式分解
f = sym('2*(x-1)/(x^2+2*x-3)'); %输入表达式
F = factor(f) %对符号表达式f进行因式分解
f = sym('2*(x-1)/(x^2+2*x-3)'); %输入表达式
- F = factor(f) %对符号表达式f进行因式分解</span>
(3)表达式化简
MATLAB提供的对符号表达式化简函数为simplify。
函数:simplify
功能:对表达式进行化简
语法:simplfy(S)
f=cos(x)^2+sin(x)^2 simplify(f)
注:simplify和simple是Matlab符号数学工具箱提供的两个简化函数,区别如下:
simplify的调用格式为:simplify(S);对表达式S进行化简。
simple是通过对表达式尝试多种不同的方法(包括simplify)进行化简,以寻求符号表达式S的最简形式。
调用方式为:
[r,how]=simple(S);r为返回的简化形式,how为化简过程中使用的一种方法。how有以下几种形式:
(1)simplify 函数对表达式进行化简;
(2)radsimp函数对含根式的表达式进行化简;
(3)combine 函数将表达式中以求和、乘积、幂运算等形式出现的项进行合并;
(4)collet合并同类项
(5)factor函数实现因式分解
(6)convert函数完成表达式形式的转换
参考文献
[1] 刘加海,严冰等主编. MATLAB可视化科学计算[M]:浙江: 浙江大学出版社,2014.6
[2] 薛定宇,陈阳泉主编.高等应用数学问题的MATLAB求解[M]:第二版.北京: 清华大学出版社,2015.6
MATLAB的符号运算基础的更多相关文章
- matlab基本语法和运算基础
转载自:http://blog.csdn.net/robertcalm/article/details/51582253 matlab语法比较随意,但正如其全名 matrix &laborat ...
- MATLAB符号运算 分类: 图像处理 2015-07-31 22:53 3人阅读 评论(0) 收藏
1.符号运算 使用MATLAB可以进行多项式乘除运算,也可以进行因式分解. 例1. 多项式乘除运算(x+3)3 >> syms x; >> expand((x+3)^3) an ...
- MATLAB符号运算
1.符号运算 使用MATLAB可以进行多项式乘除运算,也可以进行因式分解. 例1. 多项式乘除运算(x+3)3 >> syms x;>> expand((x+3)^3) ans ...
- MATLAB符号对象与符号运算
序言 符号对象(Symbolic Objects 不同于普通的数值计算)是Matlab中的一种特殊数据类型,它可以用来表示符号变量.表达式以及矩阵,利用符号对象能够在不考虑符号所对应的具体数值的情况下 ...
- 使用octave符号运算求解不定积分、微分方程等(兼容matlab)
1.求解1/(1+cos(x))^2的不定积分. 在和学生讨论一道物理竞赛题的时候,出现了这个函数的积分求解需求.查积分表也可写出答案.但是可以使用octave的符号运算工具箱来做. syms x; ...
- java位运算和无符号运算
计算机在底层使用的是二进制补码进行运算. 计算规则: 正数的原码.反码.补码是其二进制本身. 负数的原码首先计算其二进制数,然后最高位使用1表示负数,反码是最高位不变其它位取反,补码是在反码的基础上进 ...
- var、符号运算、条件语句、三元(目)运算、自加和自减
1.var a=“hello world” a 这个变量是字符串了,对于里面的每一个字母来说,他是字节,里面有11个字节,(包括空格),字节总数用length表示 2.符号运算 + 字符串拼接 . ...
- MATLAB——matlab特殊符号表【转载】
链接来源: matlab特殊符号表 http://blog.sina.com.cn/s/blog_4a09187801014xg9.html Character Sequence Symbol Cha ...
- Matlab 符号运算
root(p):多项式求根.多项式等于0时对应方程的根. 例:,则输入p=[5 4 3 2 1]; root(p) 注:多项式系数都是按幂指数递减形式的. poly([a,b,c]):求已知根为a,b ...
随机推荐
- Idea构建Maven项目教程
Idea构建Maven项目,以及其中遇到的坑,及解决方案 步骤一:配置Idea的maven插件 步骤二:创建maven项目 file-->new-->project 下一步,设置group ...
- PLAN :昔日未来
<昔日未来> 1. C语言: 必须要看的书:<C程序设计语言><C标准库> 像<C和指针>,<C专家编程>,<C陷阱>这种书虽很 ...
- 将网站固定到开始菜单,自定义图标、颜色和Windows推送通知
Windows 8.1——将网站固定到开始菜单,自定义图标.颜色和Windows推送通知 记得在IE 9和Windows 7刚出来那会儿我写过一篇文章来介绍如何自定义网站将其固定到Windows的任务 ...
- linux 之 snprintf函数用法
int snprintf(char *restrict buf, size_t n, const char * restrict format, ...); 函数说明:最多从源串中拷贝n-1个字符到 ...
- JS OffsetParent属性
offsetParent 属性返回一个对象的引用,这个对象是距离调用offsetParent的元素最近的(在包含层次中最靠近的),并且是已进行过CSS定位的容器元素. 如果这个容器元素未进行CS ...
- C#中鼠标划过按钮时候的提示信息
ToolTip p = new ToolTip(); p.ShowAlways = true; p.SetToolTip(this.Buton1, &quo ...
- linux shell基础语法
1.第一个Shell脚本 打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了. 输入一些代码 ...
- QQ高仿版
可在广域网部署运行的QQ高仿版 -- GG叽叽(源码) 前段时间看到园子里有朋友开发了QQ高仿版的程序,我也非常有兴趣,以前一直有个做即时聊天程序的梦,趁这段时间工作不是很忙,就开始动手来做这个事 ...
- Memcache的一些学习
Memcache的一些学习 首先,Memcache是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态.数据库驱动 ...
- mac系统及xcode使用的SVN客户端升级
mac系统及xcode使用的SVN客户端升级 当前的SVN版本已经升级到1.8.x了,但mac系统自带的以及xcode使用的SVN客户端版本没有跟着升级,还是1.6.x的版本.为了解决隐藏目录.svn ...