文章目录

  • 一、MATLAB符号计算概述
  • 二、符号对象和符号表达式
    • (一)符号对象的创建 sym/syms
    • (二)符号计算中的运算符和函数
    • (三)符号对象的类别识别函数 isa / class / whos
    • (四)符号表达式中确定有哪些符号变量 findsym/symvar
    • (五)符号精度计算 vpa / double / digits
  • 三、符号表达式操作
    • (一)符号表达式显示 pretty
    • (二)符号表达式合并 collect
    • (三)符号表达式展开 expand
    • (四)符号表达式嵌套 horner
    • (五)符号表达式分解 factor
    • (六)符号表达式化简 simplify / simple
    • (七)符号表达式替换 subs / subexpr
  • 四、符号函数的操作
    • (一)复合函数操作 compose
    • (二)反函数操作 finverse
  • 五、符号微积分
    • (一)符号表达式的极限 limit
    • (二)符号表达式的微分 diff / jacobian
    • (三)符号表达式的积分 int
    • (四)符号表达式的级数求和 symsum
    • (五)符号表达式的泰勒级数 taylor
  • 六、符号积分变换
    • (一)概述
    • (二)傅里叶变换及其反变换 fourier / ifourier
    • (三)拉普拉斯变换及其反变换 laplace / ilaplace
    • (四)Z变换及其反变换 ztrans / iztrans
  • 七、符号方程求解
    • (一)符号代数方程求解 solve
    • (二)符号微分方程求解 dsolve
  • 八、符号分析可视化
    • (一)funtool分析界面 (图示化符号函数计算器)
    • (二)taylortool分析界面 (泰勒逼近分析)

一、MATLAB符号计算概述

数值计算的表达式、矩阵变量中不允许有未定义的自由变量 , 而符号计算可以含有未定义的符号变量

MATLABMATLABMATLAB符号计算是通过集成在MATLABMATLABMATLAB中的符号数学工具箱来实现的,该工具箱基于字符串来进行符号分析与运算
MATLABMATLABMATLAB的符号数学工具箱可以完成几乎所有的符号计算功能,包括:符号表达式的计算,符号表达式的复合、化简,符号矩阵的计算,符号微积分,符号函数画图,符号代数方程求解,符号微分方程求解等。此外,工具箱还支持可变精度运算,即可以指定的精度返回结果


二、符号对象和符号表达式

符号数学工具箱中定义了一种新的数据类型,叫sym类,sym类的实例就是符号对象,符号对象是一种数据结构,用来存储代表符号的字符串的复杂数据结构
符号表达式时符号变量或常量的组合,在某些特定情况下,符号变量和符号常量也可以被认为是符号表达式,符号表达式的创建依然可以使用函数sym

(一)符号对象的创建 sym/syms

符号对象:符号常量、符号变量、符号函数及符号表达式

1.函数命令sym()

sym的调用格式如下:
variable=sym(A,flag)  A为数字、数值矩阵或数值表达式,输出结果是将数值对象转换成的符号对象
S=sym('A',flag)    A为字符串,输出结果是将字符串转换成的符号对象flag为转换的符号对象应该符合的格式
若A为数值对象,flag有如下选择d:最接近的十进制浮点精确表示e:带(数值计算时)估计误差的有理表示f:十六进制浮点表示r:为默认设置,最接近有理表示的形式若A为字符串,flag有如下选择positive:限定A为正的实型符号变量real:    限定A为实型符号变量

2.函数命令syms()

syms调用格式如下
syms a b c flag
syms命令可以建立三个或多个符号对象,如a、b、c,符号变量之间以空格隔开,不可使用逗号flag为对格式的限定,具体选项与sym一致





上图的警告可以根据函数名,在对应位置注释掉即可,之后就不会警告了

(二)符号计算中的运算符和函数

1.算术运算符号

(1)运算符号“+”、“-”、“*”、“\”、“/”、“^”分别实现矩阵的加法、减法、乘法、左除、右除和求幂

(2)运算符号“ .*”、“.\”、“./”、“.^”分别实现“元素对元素”的数组乘法、左除、右除和求幂运算

(3)运算符号“ ’ ”、“ .’ ”分别实现矩阵的共轭转置与非共轭转置

conj(X):计算复数X的共轭值

2.关系运算符号
符号计算中的关系运算符只有两种
(1)“==”,表示对运算符两边的符号对象进行“相等”的比较,返回值为“1”表示相等,为“0”表示不相等
(2)“~=”,表示对运算符两边的符号对象进行“不相等”的比较,返回值为“1”表示不相等,为“0”表示相等

3.指数、对数运算符号
(1)sqrt、exp、expm(处理矩阵)等指数函数在符号计算中的使用方法与数值计算中的使用方法一致
(2)log2函数与log10函数用法与数值计算中的用法一致

4.三角函数、双曲函数及其反函数
除atan2仅能用于数值计算外,其余的三角函数、双曲函数及它们的反函数,均可用于符号计算,且与数值计算中的用法一致

5.复数函数
复数函数包含复数的共轭(conj)、实部(real)、虚部(imag)和模(abs)函数,用法与数值计算一致

6.矩阵代数函数
除svd函数的使用方法有所不同外,其余函数的用法与数值计算一致

(三)符号对象的类别识别函数 isa / class / whos

MATLABMATLABMATLAB提供了一些用于识别不同数据对象的函数

(四)符号表达式中确定有哪些符号变量 findsym/symvar

函数findsym可以帮助查找一个符号表达式中的符号变量,该函数调用格式如下:
findsym(S) S为符号表达式,将返回S中所有的符号变量
findsym(S,N) 当指定N后,返回S中距离符号变量x或X最接近的N个符号变量但后续版本更新为symvar

在未标明变量的情况下,一般都是以symvar(f,1)来确定默认变量

(五)符号精度计算 vpa / double / digits

符号计算的一个显著特点是由于计算过程中不会出现舍入误差,从而可以得到任意精度的数值解,可以通过牺牲计算时间和存储空间获得足够高精度的解


三、符号表达式操作

(一)符号表达式显示 pretty

显示函数pretty允许用户将符号表达式显示为符合一般数学表达习惯的数学表达式

(二)符号表达式合并 collect

函数collect可以将符号表达式中的同类项合并,具体调用格式如下

 R=collect(S) R-collect(S,v) 将表达式S中v的相同次幂的项进行合并,若v没有指定,默认将含有x的相同次幂的项进行合并

(三)符号表达式展开 expand

函数expand可以将符号表达式展开,具体调用格式如下

R=expand(S) 将表达式S中的各项进行展开,如果S包含函数,则利用恒等变形将它写成相应的和的形式

(四)符号表达式嵌套 horner

函数horner可以将符号表达式转换为嵌套形式,具体调用格式如下

R=horner(S) S是符号多项式矩阵,函数horner将其中的每个多项式转为它们的嵌套形式

(五)符号表达式分解 factor

函数factor可以将符号表达式进行因式分解,具体调用格式如下

factor(X) 若X是一个多项式或多项式矩阵,系数是有理数,该函数可以把X表示成系数为有理数的低阶多项式相乘的形式;若不能分解,则返回本身

(六)符号表达式化简 simplify / simple

按照一定的规则对符号表达式进行简化
1.simplify函数

R=simplify(S) S可以为符号表达式矩阵,利用Maple化简规则对表达式进行简化功能强大,应用于包含和式、方根、分数的乘方、指数函数、对数函数、三角函数、Bessel函数及超越函数等的表达式

2.simple函数(2015版以后就不存在)

R=simple(S) 若S为符号表达式矩阵,则返回整个矩阵变成最短的形式,而不一定使每一项都最短;若不给定输出参数R,该函数将显示所有使表达式S变短的简化形式,若给定,则返回其中最短的一个

(七)符号表达式替换 subs / subexpr

变量代换法:在处理一些结构较为复杂、变量较多的数学模型时,引入一些新的变量进行代换,以简化其结构,从而达到解决问题的目的

MATLABMATLABMATLAB中提供了subssubssubs函数和subexprsubexprsubexpr函数进行变量代换

1.subs函数

 subs可以用指定符号替代符号表达式中的某一特定符号,其调用格式如下:R=subs(S,Old,New) 用新符号变量New替代原来符号表达式S中的变量Old ,当New为数值形式的符号时,该值会直接参与计算R=subs(S,New) 用New代替S中的默认变量,由symvar/findsym确定默认变量R=subs(S) 用工作区的变量值代替S中的所有符号变量,若没有指定某符号变量的值,则返回值中该值不被替代


2.subexpr函数

subexpr函数将表达式中重复出现的字符串用变量代替,调用格式如下:
[Y,SIGMA]=subexpr(S,SIGMA)  指定用变量SIGMA的值(必须为符号变量)来代替符号表达式(可以为矩阵)中重复出现的字符串,替换结果由Y返回,被替换的字符串由SIGMA返回
[Y,SIGMA]=subexpr(S,'SIGMA') SIGMA为字符或字符串,用于替换符号表达式中重复出现的字符串,其余相同


四、符号函数的操作

(一)复合函数操作 compose

函数compose可以得到符号表达式的复合函数,具体调用格式如下

compose(f,g) 返回复合函数f(g(y)),f=f(x),g=g(y),x为findsym定义的f函数的符号变量,y亦同此理
compose(f,g,x,z) 返回自变量为z的复合函数f(g(z)),并且x成为了f函数的独立变量

(二)反函数操作 finverse

函数finverse可以对符号表达式进行反函数运算,具体调用格式如下

g=finverse(f) 返回符号函数f的反函数g,其中,f的变量为x,所得反函数是满足g(f(x))=x的符号函数
g=finverse(f,v)  返回自变量为v的符号函数f的反函数,适用于f包含不止一个符号变量的情况


五、符号微积分

(一)符号表达式的极限 limit

求微分的基本思想是当自变量趋近某个值时,求函数值的变化,“无穷逼近”是微积分的一个基本思想,导数就是由极限给出的:
f′(x)=lim⁡h→0f(x+h)−f(x)hf^{'}(x)=\lim\limits_{h \rightarrow 0} \frac{f(x+h)-f(x)}{h}f′(x)=h→0lim​hf(x+h)−f(x)​

函数limit可以求符号表达式的极限,具体调用格式如下:

limit(F,x,a) 求当x趋近a时,符号表达式F的极限
limit(F,a) 默认自变量(findsym确定)趋近于a时F的极限值
limit(F) a默认为0
limit(F,x,a,'right') 自右趋近a,为右极限
limit(F,x,a,'left') 自左趋近a,为左极限

(二)符号表达式的微分 diff / jacobian

1.diff函数

diff可以计算一元或多元函数的任意阶数的微分,其调用格式如下:
diff(S,'v') 将符号'v'视作变量,对符号表达式或符号矩阵S求微分
diff(S,n)对S的默认变量(findsym确定)进行n阶微分运算,n必须为正整数
diff(S,'v',n) 视'v'为变量,进行n阶微分运算

2.jacobian函数

jacobian可以计算自变量多于一个的符号矩阵的微分,其调用格式如下:
R=jacobian(w,v) w是一个符号列向量,v是指定进行变换的变量所组成的行向量

(三)符号表达式的积分 int

int可以计算符号表达式的积分,其调用格式如下:

R=int(S,v,a,b) 以符号标量v作为标量,求当v从a变到b时,符号表达式S的定积分值,若S是符号矩阵,则对每个元素求积分;a和b可以是符号或数值标量
R=int(S,V) 求不定积分
R=int(S,a,b) 以findsym确定默认变量,对默认变量求从a到b的定积分值
R=int(S) 以findsym确定默认变量,对默认变量求不定积分

(四)符号表达式的级数求和 symsum

symsum可以对符号表达式进行求和,其调用格式如下:

r=symsum(S,a,b) 求符号表达式S默认变量从a到b时的有限和
r=symsum(S,v,a,b) 求符号表达式S中变量v从a到b时的有限和

(五)符号表达式的泰勒级数 taylor

taylor可以求符号表达式的泰勒级数展开式,其调用格式如下:

r=taylor(f,n,v,a) f为符号表达式,以符号标量v为自变量,返回f在v=a处作n-1阶泰勒展开的展开式
r=taylor(f,n,v) 返回f的n-1阶麦克劳林级数展开式,即当v=0处作泰勒展开
r=taylor(f) 返回f在默认变量为0处作5阶泰勒展开的展开式


六、符号积分变换

(一)概述

百度——积分变换
知乎——积分变换

所谓积分变换,就是通过积分运算,把一类函数AAA变换成另一类函数BBB,函数BBB一般是含有参数α\alphaα的积分:∫abf(t)K(t,α)dt\int_{a}^{b}f(t)K(t,\alpha)dt∫ab​f(t)K(t,α)dt
这一变换的目的就是把AAA中的函数f(t)f(t)f(t)通过积分运算变成另一类函数BBB中的函数f(α)f(\alpha)f(α),这里的K(t,α)K(t,\alpha)K(t,α)是一个确定的二元函数,叫作积分变换的核
当选取不同的积分区间与变换核时,就成为不同的积分变换,f(t)f(t)f(t)叫作原函数,f(α)f(\alpha)f(α)叫作象函数。在一定条件下,原函数与象函数一一对应,成为一个积分变换对
变换是可逆的,由原函数求象函数叫作正变换,反之则是逆变换

(二)傅里叶变换及其反变换 fourier / ifourier

时域中的f(t)f(t)f(t)与它在频域中的FourierFourierFourier变换F(ω)F(\omega)F(ω)之间存在如下关系:
F(ω)=∫−∞+∞f(t)e−jωtdtF(\omega)=\int_{- \infty}^{+\infty} f(t)e^{-j\omega t}dtF(ω)=∫−∞+∞​f(t)e−jωtdt
F(t)=12π∫−∞+∞f(ω)e−jωtdωF(t)=\frac{1}{2\pi}\int_{- \infty}^{+\infty} f(\omega)e^{-j\omega t}d\omegaF(t)=2π1​∫−∞+∞​f(ω)e−jωtdω

由计算机完成这种变换的途径有两条:一是直接调用指令fourier和ifourier,二是根据定义使用积分指令int实现
fourier与ifourier用法如下:
Fw=fourier(ft,t,w)  求时域函数ft的Fourier变换Fw,ft是以t为自变量的时域函数,Fw是以圆频率w为自变量的频域函数
ft=ifourier(Fw,w,t) 求频域函数Fw的Fourier反变换ft,ft是以t为自变量的时域函数,Fw是以圆频率w为自变量的频域函数

(三)拉普拉斯变换及其反变换 laplace / ilaplace

Laplace变换及其反变换的定义为:
F(s)=∫0∞f(t)e−stdtF(s)=\int_{0}^{\infty}f(t)e^{-st}dtF(s)=∫0∞​f(t)e−stdt
f(t)=12πj∫c−j∞c+j∞F(s)estdsf(t)=\frac{1}{2\pi j}\int_{c-j\infty}^{c+j\infty}F(s)e^{st}dsf(t)=2πj1​∫c−j∞c+j∞​F(s)estds

由计算机完成这种变换的途径有两条:一是直接调用指令laplace和ilaplace,二是根据定义使用积分指令int实现
laplace与ilaplace用法如下:
Fs=laplace(ft,t,s)   求时域函数ft的Laplace变换Fs,ft是以t为自变量的时域函数,Fs是以复频率s为自变量的频域函数
ft=ilaplace(Fs,s,t)  求频域函数Fs的Laplace反变换ft,ft是以t为自变量的时域函数,Fs是以复频率s为自变量的频域函数

(四)Z变换及其反变换 ztrans / iztrans

一个离散因果序列的ZZZ变换及其反变换定义为:
F(z)=∑n=0∞f(n)z−nF(z)=\sum_{n=0}^{\infty} f(n)z^{-n}F(z)=n=0∑∞​f(n)z−n
F(n)=z−1{F(z)}F(n)=z^{-1}\{F(z)\}F(n)=z−1{F(z)}

涉及Z反变换具体计算的方法最常见的有3种,分别为幂级数展开法、部分分式展开法和围线积分法
iztrans指令使用围线积分法,相应数学表达式为:
f(n)=12πj∫F(z)zn−1dzf(n)=\frac{1}{2\pi j}\int F(z)z^{n-1}dzf(n)=2πj1​∫F(z)zn−1dz

具体命令格式如下:
FZ=ztrans(fn,n,z) 求时域函数fn的Z变换FZ,fn是以n为自变量的时域序列,FZ是以复频率z为自变量的频域函数
FZ=ztrans(fn,w) 默认fn为变量n的函数,FZ是以w代替z的函数
FZ=ztrans(fn) 默认fn是变量n的函数,FZ是以复频率z为变量的函数
fn=iztrans(FZ,z,n) 求频域函数FZ的Z反变换fn,fn是以n为自变量的时域序列,FZ是以复频率z为自变量的频域函数



七、符号方程求解

(一)符号代数方程求解 solve

此处所指的代数方程包括线性、非线性和超越方程等,求解指令为solve。

当方程组不存在符号解,若又无其他自由参数时,solve将给出数值解,具体命令如下:




(二)符号微分方程求解 dsolve

函数dsolve用于求常微分方程的符号解,其调用方式如下:

在方程中,以大写字母D表示一次微分,D2、D3分别表示二次、三次微分,符号D2y表示d2ydt2\frac{d^2y}{dt^2}dt2d2y​
函数dsolve把ddd后面的字符当作因变量,并默认所有这些字符对符号ttt进行求导


八、符号分析可视化

(一)funtool分析界面 (图示化符号函数计算器)

在MATLAB命令行窗口输入funtool命令即可

由两个图形窗口(f和g)和一个函数运算控制窗口(funtool)组成

在任何时候,两个图形窗口只有一个处于激活状态


(二)taylortool分析界面 (泰勒逼近分析)

命令行窗口输入taylortool


参数与之前的taylortaylortaylor指令一致


MATLAB2016笔记(八):符号数学计算(MATLAB-Maple组件)相关推荐

  1. 【MATLAB】符号数学计算(八):符号分析可视化

    一.funtool分析界面 在命令行窗口中输入: funtool 这里就说一下第四排: Insert:把当前激活窗的函数写入列表 Cycle:依次循环显示fxlist中的函数 Delete:从fxli ...

  2. 【MATLAB】符号数学计算(三):符号的精度计算

    符号计算的一个非常显著的特点是,由于计算中不会出现舍入误差,从而可以得到任意精度的数值解. (要计算精确,就要牺牲计算时间和储存空间) 符号工具箱中有三种不同类型的算术运算: 数值类型:MATLAB的 ...

  3. 【MATLAB】符号数学计算(七):符号微积分、符号微分方程求解、符号代数方程求解

    一.符号表达式的极限 limit(F,x,a):求当时,符号表达式F的极限. limit(F,a):符号表达式F采用默认自变量(可由函数findsym求得),该函数求F的自变量趋于a时的极限值. li ...

  4. 【MATLAB】符号数学计算(六):符号函数的操作

    一.复合函数的操作 compose(f,g):返回复合函数f(g(y)),此处f=f(x),g=g(y): compose(f,g,x,z):返回自变量是z的复合函数f(g(z)) >> ...

  5. 【MATLAB】符号数学计算(五):符号函数的替换

    一.subs替换函数 R=subs(S):用工作区中的变量值替换符号表达式中的某一特定符号. R=subs(S,New):用新符号变量New来替换符号表达式S中的默认变量. R=subs(S,Old, ...

  6. 【MATLAB】符号数学计算(四):符号表达式操作

    一.符号表达式合并 R=collect(S):将表达式S中相同次幂的项合并.S可以是一个表达式,也可以是一个符号矩阵. R=collect(S,v):将表达式中S中v的相同次幂进行合并.如果v没有指定 ...

  7. 【MATLAB】符号数学计算(二):符号运算中的运算符和函数

    一般的这里就不再列举 1.算术运算符号 运算符号" ' "." .' "分别实现矩阵的共轭转置和非共轭转置. >> syms a b c d; &g ...

  8. 【MATLAB】符号数学计算(一):符号对象的创建

    一.符号对象的创建命令 1.函数命令sym( ) variable=sym(A,flag) S=sym('A',flag) 如果A是(不带单引号)是一个数字.数值矩阵或者数值表达式,则输出结果是将数值 ...

  9. matlab 符号 推倒,【MATLAB】符号数学计算(四):符号表达式操作

    一.符号表达式合并 R=collect(S):将表达式S中相同次幂的项合并.S可以是一个表达式,也可以是一个符号矩阵. R=collect(S,v):将表达式中S中v的相同次幂进行合并.如果v没有指定 ...

最新文章

  1. mysql数据库会同时执行sql吗_mysql 一次执行多条sql语句
  2. 在SpringBoot的Web项目中使用于Thymeleaf(二)
  3. Win32使用Windows公共控件库创建工具条
  4. 刚毕业的我,参与了一场大厂之间的争夺之战
  5. Aix5.3安装Bash环境
  6. 语音识别(四)——DTW, Spectrogram, Cepstrum Analysis
  7. Java面试必备的集合源码详解,砥砺前行!
  8. 链表 队列 基本概念 为什么使用二叉查找树 抽象数据类型
  9. Vue系列vue-router的动态路由使用(二)
  10. Scikit_Learn介绍及演练
  11. 【kafka】Kafka leader -1
  12. 前端使用工具sublime text 3下载
  13. java枚举详解_Java枚举的使用详解
  14. 网络安全等级保护工作流程
  15. Deep Network with Stochastic Depth(阅读笔记)一种随机深度的正则化方法
  16. 《名贤集》《明贤集》四言集
  17. 在Debian系统下使用自带的Fcitx配置中文输入法
  18. 2012第三届蓝桥杯预赛题
  19. 数学建模——图与网络模型及方法(一)
  20. 阿里巴巴副总裁肖力:云原生安全下看企业新边界——身份管理

热门文章

  1. linux 修复磁盘 只读,服务器磁盘只读修复过程
  2. 简述GPRS模块和GSM模块之间的区别
  3. 小乌龟没有relocate选项,项目迁移怎么办
  4. ABF平台设计(一)-新一代标准化中后台研发平台
  5. caffe SSD 代码编译运行流程及问题解决
  6. 2013年中国android智能手机用户调查研究报告,ZDC:2013年7月中国智能手机市场分析报告...
  7. 个人草根站长如何靠广告联盟赚钱
  8. IOS版aplayer使用教程_lulu Mac版防火墙使用教程
  9. 马云质押阿里巴巴股票寻求贷款,要有大动作?旧闻新炒!
  10. 古典问题(兔生兔问题)就是著名的斐波那契数列