赞
踩
数值计算的表达式、矩阵变量中不允许有未定义的自由变量 , 而符号计算可以含有未定义的符号变量
M
A
T
L
A
B
MATLAB
MATLAB符号计算是通过集成在
M
A
T
L
A
B
MATLAB
MATLAB中的符号数学工具箱来实现的,该工具箱基于字符串来进行符号分析与运算
M
A
T
L
A
B
MATLAB
MATLAB的符号数学工具箱可以完成几乎所有的符号计算功能,包括:符号表达式的计算,符号表达式的复合、化简,符号矩阵的计算,符号微积分,符号函数画图,符号代数方程求解,符号微分方程求解等。此外,工具箱还支持可变精度运算,即可以指定的精度返回结果
符号数学工具箱中定义了一种新的数据类型,叫sym类,sym类的实例就是符号对象,符号对象是一种数据结构,用来存储代表符号的字符串的复杂数据结构
符号表达式时符号变量或常量的组合,在某些特定情况下,符号变量和符号常量也可以被认为是符号表达式,符号表达式的创建依然可以使用函数sym
符号对象:符号常量、符号变量、符号函数及符号表达式
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函数的使用方法有所不同外,其余函数的用法与数值计算一致
M
A
T
L
A
B
MATLAB
MATLAB提供了一些用于识别不同数据对象的函数
函数findsym可以帮助查找一个符号表达式中的符号变量,该函数调用格式如下:
findsym(S) S为符号表达式,将返回S中所有的符号变量
findsym(S,N) 当指定N后,返回S中距离符号变量x或X最接近的N个符号变量
但后续版本更新为symvar
在未标明变量的情况下,一般都是以symvar(f,1)来确定默认变量
符号计算的一个显著特点是由于计算过程中不会出现舍入误差,从而可以得到任意精度的数值解,可以通过牺牲计算时间和存储空间获得足够高精度的解
显示函数pretty允许用户将符号表达式显示为符合一般数学表达习惯的数学表达式
函数collect可以将符号表达式中的同类项合并,具体调用格式如下
R=collect(S)
R-collect(S,v) 将表达式S中v的相同次幂的项进行合并,若v没有指定,默认将含有x的相同次幂的项进行合并
函数expand可以将符号表达式展开,具体调用格式如下
R=expand(S) 将表达式S中的各项进行展开,如果S包含函数,则利用恒等变形将它写成相应的和的形式
函数horner可以将符号表达式转换为嵌套形式,具体调用格式如下
R=horner(S) S是符号多项式矩阵,函数horner将其中的每个多项式转为它们的嵌套形式
函数factor可以将符号表达式进行因式分解,具体调用格式如下
factor(X) 若X是一个多项式或多项式矩阵,系数是有理数,该函数可以把X表示成系数为有理数的低阶多项式相乘的形式;若不能分解,则返回本身
按照一定的规则对符号表达式进行简化
1.simplify函数
R=simplify(S) S可以为符号表达式矩阵,利用Maple化简规则对表达式进行简化
功能强大,应用于包含和式、方根、分数的乘方、指数函数、对数函数、三角函数、Bessel函数及超越函数等的表达式
2.simple函数(2015版以后就不存在)
R=simple(S) 若S为符号表达式矩阵,则返回整个矩阵变成最短的形式,而不一定使每一项都最短;
若不给定输出参数R,该函数将显示所有使表达式S变短的简化形式,若给定,则返回其中最短的一个
变量代换法:在处理一些结构较为复杂、变量较多的数学模型时,引入一些新的变量进行代换,以简化其结构,从而达到解决问题的目的
M A T L A B MATLAB MATLAB中提供了 s u b s subs subs函数和 s u b e x p r subexpr subexpr函数进行变量代换
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(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可以对符号表达式进行反函数运算,具体调用格式如下
g=finverse(f) 返回符号函数f的反函数g,其中,f的变量为x,所得反函数是满足g(f(x))=x的符号函数
g=finverse(f,v) 返回自变量为v的符号函数f的反函数,适用于f包含不止一个符号变量的情况
求微分的基本思想是当自变量趋近某个值时,求函数值的变化,“无穷逼近”是微积分的一个基本思想,导数就是由极限给出的:
f
′
(
x
)
=
lim
h
→
0
f
(
x
+
h
)
−
f
(
x
)
h
f^{'}(x)=\lim\limits_{h \rightarrow 0} \frac{f(x+h)-f(x)}{h}
f′(x)=h→0limhf(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,为左极限
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可以计算符号表达式的积分,其调用格式如下:
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可以对符号表达式进行求和,其调用格式如下:
r=symsum(S,a,b) 求符号表达式S默认变量从a到b时的有限和
r=symsum(S,v,a,b) 求符号表达式S中变量v从a到b时的有限和
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阶泰勒展开的展开式
所谓积分变换,就是通过积分运算,把一类函数
A
A
A变换成另一类函数
B
B
B,函数
B
B
B一般是含有参数
α
\alpha
α的积分:
∫
a
b
f
(
t
)
K
(
t
,
α
)
d
t
\int_{a}^{b}f(t)K(t,\alpha)dt
∫abf(t)K(t,α)dt
这一变换的目的就是把
A
A
A中的函数
f
(
t
)
f(t)
f(t)通过积分运算变成另一类函数
B
B
B中的函数
f
(
α
)
f(\alpha)
f(α),这里的
K
(
t
,
α
)
K(t,\alpha)
K(t,α)是一个确定的二元函数,叫作积分变换的核
当选取不同的积分区间与变换核时,就成为不同的积分变换,
f
(
t
)
f(t)
f(t)叫作原函数,
f
(
α
)
f(\alpha)
f(α)叫作象函数。在一定条件下,原函数与象函数一一对应,成为一个积分变换对
变换是可逆的,由原函数求象函数叫作正变换,反之则是逆变换
时域中的
f
(
t
)
f(t)
f(t)与它在频域中的
F
o
u
r
i
e
r
Fourier
Fourier变换
F
(
ω
)
F(\omega)
F(ω)之间存在如下关系:
F
(
ω
)
=
∫
−
∞
+
∞
f
(
t
)
e
−
j
ω
t
d
t
F(\omega)=\int_{- \infty}^{+\infty} f(t)e^{-j\omega t}dt
F(ω)=∫−∞+∞f(t)e−jωtdt
F
(
t
)
=
1
2
π
∫
−
∞
+
∞
f
(
ω
)
e
−
j
ω
t
d
ω
F(t)=\frac{1}{2\pi}\int_{- \infty}^{+\infty} f(\omega)e^{-j\omega t}d\omega
F(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变换及其反变换的定义为:
F
(
s
)
=
∫
0
∞
f
(
t
)
e
−
s
t
d
t
F(s)=\int_{0}^{\infty}f(t)e^{-st}dt
F(s)=∫0∞f(t)e−stdt
f
(
t
)
=
1
2
π
j
∫
c
−
j
∞
c
+
j
∞
F
(
s
)
e
s
t
d
s
f(t)=\frac{1}{2\pi j}\int_{c-j\infty}^{c+j\infty}F(s)e^{st}ds
f(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
Z
Z变换及其反变换定义为:
F
(
z
)
=
∑
n
=
0
∞
f
(
n
)
z
−
n
F(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
)
=
1
2
π
j
∫
F
(
z
)
z
n
−
1
d
z
f(n)=\frac{1}{2\pi j}\int F(z)z^{n-1}dz
f(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将给出数值解,具体命令如下:
函数dsolve用于求常微分方程的符号解,其调用方式如下:
在方程中,以大写字母D表示一次微分,D2、D3分别表示二次、三次微分,符号D2y表示
d
2
y
d
t
2
\frac{d^2y}{dt^2}
dt2d2y
函数dsolve把
d
d
d后面的字符当作因变量,并默认所有这些字符对符号
t
t
t进行求导
在MATLAB命令行窗口输入funtool命令即可
由两个图形窗口(f和g)和一个函数运算控制窗口(funtool)组成
在任何时候,两个图形窗口只有一个处于激活状态
命令行窗口输入taylortool
参数与之前的
t
a
y
l
o
r
taylor
taylor指令一致
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。