MATLAB的符号运算基础

作者:长沙理工大学 交通运输工程学院 王航臣

在数学运算中,运算的结果如果是一个数值,可以称这类运算为数值运算;如果运算结果为表达式,在MATLAB中称为符号运算,符号计算是对未赋值的符号对象(可以是常数、变量、表达式)进行运算和处理。MATLAB具有符号数学工具箱(SymbolicMath Toolbox),将符号运算结合到MATLAB的数值运算环境。符号数学工具箱是建立在Maple软件基础上的。

(一)  符号变量建立符号变量和符号常数

建立符号变量的方法有两种,应用,应用sym与syms函数,通常应用sym建立符号表达式,应用syms同时定义多个符号变量。

(1)函数:sym

 功能:用来建立单个符号量

 语法形式:sym(‘表达式或变量’)

 举例

[plain] view plain copy

  1. 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函数定义符号变量

  1. 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)符号表达式的四则运算

  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)‘); %输入表达式

  1. 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

时间: 2024-10-11 18:16:49

MATLAB的符号运算基础的相关文章

MATLAB符号运算

1.符号运算 使用MATLAB可以进行多项式乘除运算,也可以进行因式分解. 例1. 多项式乘除运算(x+3)3 >> syms x;>> expand((x+3)^3) ans = x^3 + 9*x^2 + 27*x + 27 例2. 因式分解(x9-1) >> syms x;>> factor(x^9-1) ans = (x - 1)*(x^2 + x + 1)*(x^6 + x^3 + 1) 2.向量点乘 >> A =[ 1, 2,3];&

【matlab】matlab与线性代数实验基础

    matlab与线性代数实验基础 作者:xuan97916 一.行列式 1.行列式的输入 方括号内逐行键入元素,同一行元素用逗号或者空格,两行元素之间用分号隔开. 在命令的末尾使用分号会终止输出! A=[1,2,3;4,5,6;7,8,9] 2.行列式元素的表示 可以用一个下标表示(从上到下之字形)也可以用两个下标表示(行列)如 A(1,2) =A(4) 3.行列式的基本运算 ·         (1)读取整行:A(行数,:) (2)读取整列:A(:,列数) (3)读取行列式中的部分行列b

java位运算和无符号运算

计算机在底层使用的是二进制补码进行运算. 计算规则: 正数的原码.反码.补码是其二进制本身. 负数的原码首先计算其二进制数,然后最高位使用1表示负数,反码是最高位不变其它位取反,补码是在反码的基础上进行+1操作. System.out.println( 8 >> 1);//正数进行右移位运算 8的二进制是 0000 0000 0000 0000 0000 0000 0000 1000,进行右移1位得到二进制0000 0000 0000 0000 0000 0000 0000 0100,然后转成

MATLAB建立图表的基础

Plot()函数:只需给定参数 Plot(x,y)就可以绘制图形,x为x坐标,y为y坐标 要求:x,y为相同长度的向量? 特殊用法: A;x为向量,y为矩阵,期中一维与x的长度相同 1 x=0:0.1:8; 2 3 y=sin(x); 4 5 plot(x,y) 6 7 >> x=0:0.1:8; 8 9 >> y1=sin(x); 10 11 >> y2=cos(x); 12 13 >> z=[y1;y2]; 14 15 >> plot(x,z

MATLAB——matlab特殊符号表【转载】

链接来源: matlab特殊符号表 http://blog.sina.com.cn/s/blog_4a09187801014xg9.html Character Sequence Symbol Character Sequence Symbol Character Sequence Symbol \alpha α \upsilon υ \sim ~ \beta β \phi Φ \leq ≤ \gamma γ \chi χ \infty ∞ \delta δ \psi ψ \clubsuit ♣

Java运算基础

计算机对负数的运算 =  先取绝对值的原码----> 然后取反,----->+1   这是负数的补码表示 例如  -5       5的原码= 0000,0101  取反   1111,1010, +1  =   1111,1011 补码求原码   补码在求一次补码 就是补码的原码 例如 -5     补码  1111,1011    先求反码 在+1     1000,0100 , +1  = 1000,0101 位移 是针对补码的位移 求原码的值 >>右移    最高位是0 最

Verilog中的符号运算

在Verilog-1995中,只有integer数据类型被转移成有符号数,而reg和wire数据类型则被转移成无符号数.由于integer类型有固定的32位宽,因此它不太灵活. 在Verilog-2001中,有符号形式也被扩展到reg和wire数据类型中.新加一个关键字,signed,可以按照下面的方式定义: reg     signed[7:0] test; wire    signed[7:0] test_w; 下面是一些有符号计算以及赋值语句实例: 可见,在进行有符号运算时,表达式中的变量

Verilog -- 有符号与无符号运算

目录 Verilog中有符号与无符号的加法和乘法运算 无符号乘法和加法 有符号乘法和加法 有符号和无符号运算 参考: https://blog.csdn.net/vivid117/article/details/101427302 http://wscentity.lofter.com/post/1d00edbd_6476453 Verilog中有符号与无符号的加法和乘法运算 无符号乘法和加法 对于无符号的乘法和加法,没有什么好说的,就是直接用'*'和'+'. 有符号乘法和加法 有符号和无符号运

Matlab 符号运算

root(p):多项式求根.多项式等于0时对应方程的根. 例:,则输入p=[5 4 3 2 1]; root(p) 注:多项式系数都是按幂指数递减形式的. poly([a,b,c]):求已知根为a,b,c所对应的多项式. 例:>>P1=ploy([2,3,4]) P1= 1 -9 26 -24 %即所求多项式为 可以看出,root 和ploy互为逆运算. 注:ploy也可以求特征根.ploy(X):即求矩阵X的特征根. ployval(p,a):输出指定点x=a时的多项式值. conv(p,q