matlab中符号函数教程,MATLAB程序设计教程(9)——
MATLAB符号计算
MATLAB程序设计教程(9)——MATLAB符号计算
第9章MATLAB符号计算
9.1 符号对象
9.2 符号微积分
9.3 级 数
9.4 符号⽅程求解
9.1符号对象
9.1.1 建⽴符号对象
1.建⽴符号变量和符号常量
MATLAB提供了两个建⽴符号对象的函数:sym和syms,两个函数的⽤法不同。
(1) sym函数
sym函数⽤来建⽴单个符号量,⼀般调⽤格式为:
符号量名=sym(‘符号字符串’)
该函数可以建⽴⼀个符号量,符号字符串可以是常量、变量、函数或表达式。
应⽤sym函数还可以定义符号常量,使⽤符号常量进⾏代数运算时和数值常量进⾏的运算不同。下⾯的命令⽤于⽐较符号常量与数值常量在代数运算时的差别。
(2) syms函数
函数sym⼀次只能定义⼀个符号变量,使⽤不⽅便。MATLAB提供了另⼀个函数syms,⼀次可以定义多个符号变量。syms函数的⼀般调⽤格式为:
syms 符号变量名1 符号变量名2 … 符号变量名n
⽤这种格式定义符号变量时不要在变量名上加字符串分界符(‘),变量间⽤空格⽽不要⽤逗号分隔。
2.建⽴符号表达式
含有符号对象的表达式称为符号表达式。建⽴符号表达式有以下3种⽅法:
(1)利⽤单引号来⽣成符号表达式。
(2)⽤sym函数建⽴符号表达式。
(3) 使⽤已经定义的符号变量组成符号表达式。
9.1.2 符号表达式运算
1.符号表达式的四则运算
符号表达式的加、减、乘、除运算可分别由函数symadd、symsub、symmul和symdiv来实现,幂运算可以由sympow来实现。
2.符号表达式的提取分⼦和分母运算
如果符号表达式是⼀个有理分式或可以展开为有理分式,可利⽤numden函数来提取符号表达式中的分⼦或分母。其⼀般调⽤格式为:
[n,d]=numden(s)
该函数提取符号表达式s的分⼦和分母,分别将它们存放在n与d中。
3.符号表达式的因式分解与展开
MATLAB提供了符号表达式的因式分解与展开的函数,函数的调⽤格式为:
factor(s):对符号表达式s分解因式。
expand(s):对符号表达式s进⾏展开。
collect(s):对符号表达式s合并同类项。
collect(s,v):对符号表达式s按变量v合并同类项。
4.符号表达式的化简
MATLAB提供的对符号表达式化简的函数有:
simplify(s):应⽤函数规则对s进⾏化简。
simple(s):调⽤MATLAB的其他函数对表达式进⾏综合化简,并显⽰化简过程。
5.符号表达式与数值表达式之间的转换
利⽤函数sym可以将数值表达式变换成它的符号表达式。
函数numeric或eval可以将符号表达式变换成数值表达式。
9.1.3 符号表达式中变量的确定
MATLAB中的符号可以表⽰符号变量和符号常量。findsym可以帮助⽤户查⼀个符号表达式中的的符号变量。该函数的调⽤格式为:
findsym(s,n)
函数返回符号表达式s中的n个符号变量,若没有指定n,则返回s中的全部符号变量。
9.1.4 符号矩阵
符号矩阵也是⼀种符号表达式,所以前⾯介绍的符号表达式运算都可以在矩阵意义下进⾏。但应注意这些函数作⽤于符号矩阵时,是分别作⽤于矩阵的每⼀个元素。
由于符号矩阵是⼀个矩阵,所以符号矩阵还能进⾏有关矩阵的运算。MATLAB还有⼀些专⽤于符号矩阵的函数,这些函数作⽤于单个的数据⽆意义。例如
transpose(s):返回s矩阵的转置矩阵。
determ(s):返回s矩阵的⾏列式值。
其实,曾介绍过的许多应⽤于数值矩阵的函数,如diag、triu、tril、inv、det、rank、eig等,也可直接应⽤于符号矩阵。
9.2符号微积分
9.2.1 符号极限
limit函数的调⽤格式为:
(1) limit(f,x,a):求符号函数f(x)的极限值。即计算当变量x趋近于常数a时,f(x)函数的极限值。
(2) limit(f,a):求符号函数f(x)的极限值。由于没有指定符号函数f(x)的⾃变量,则使⽤该格式时,符号函数f(x)的变量为函数findsym(f)确定的默认⾃变量,即变量x趋近于a。
(3) limit(f):求符号函数f(x)的极限值。符号函数f(x)的变量为函数findsym(f)确定的默认变量;没有指定变量的⽬标值时,系统默认变量趋近于0,即a=0的情况。
(4) limit(f,x,a,’right’):求符号函数f的极限值。’right’表⽰变量x从右边趋近于a。
(5) limit(f,x,a,‘left’):求符号函数f的极限值。‘left’表⽰变量x从左边趋近于a。
例9-1 求下列极限。
极限1:
syms a m x;
f=(x*(exp(sin(x))+1)-2*(exp(tan(x))-1))/(x+a);
limit(f,x,a)
ans =
(1/2*a*exp(sin(a))+1/2*a-exp(tan(a))+1)/a
极限2:
syms x t;
limit((1+2*t/x)^(3*x),x,inf)
ans =
exp(6*t)
极限3:
syms x;
f=x*(sqrt(x^2+1)-x);
limit(f,x,inf,’left’)
ans =diff函数
1/2
极限4:
syms x;
f=(sqrt(x)-sqrt(2)-sqrt(x-2))/sqrt(x*x-4);
limit(f,x,2,’right’)
ans =
-1/2
9.2.2 符号导数
diff函数⽤于对符号表达式求导数。该函数的⼀般调⽤格式为:
diff(s):没有指定变量和导数阶数,则系统按findsym函数指⽰的默认变量对符号表达式s求⼀阶导数。diff(s,’v’):以v为⾃变量,对符号表达式s求⼀阶导数。
diff(s,n):按findsym函数指⽰的默认变量对符号表达式s求n阶导数,n为正整数。
diff(s,’v’,n):以v为⾃变量,对符号表达式s求n阶导数。
例9-2 求下列函数的导数。
9.2.3 符号积分
符号积分由函数int来实现。该函数的⼀般调⽤格式为:
int(s):没有指定积分变量和积分阶数时,系统按findsym函数指⽰的默认变量对被积函数或符号表达式s求不定积分。
int(s,v):以v为⾃变量,对被积函数或符号表达式s求不定积分。
int(s,v,a,b):求定积分运算。a,b分别表⽰定积分的下限和上限。该函数求被积函数在区间[a,b]上的定积分。a和b可以是两个具体的数,也可以是⼀个符号表达式,还可以是⽆穷(inf)。当函数f关于变量x在闭区间[a,b]上可积时,函数返回⼀个定积分结果。当a,b中有⼀个是inf 时,函数返回⼀个⼴义积分。当a,b中有⼀个符号表达式时,函数返回⼀个符号函数。
例9-3 求下列积分。
9.2.4 积分变换
常见的积分变换有傅⽴叶变换、拉普拉斯变换和Z变换。
1.傅⽴叶(Fourier)变换
在MATLAB中,进⾏傅⽴叶变换的函数是:
fourier(f,x,t):求函数f(x)的傅⽴叶像函数F(t)。
ifourier(F,t,x):求傅⽴叶像函数F(t)的原函数f(x)。
例9-4 求函数y=的傅⽴叶变换及其逆变换。
2.拉普拉斯(Laplace)变换
在MATLAB中,进⾏拉普拉斯变换的函数是:
laplace(fx,x,t):求函数f(x)的拉普拉斯像函数F(t)。
ilaplace(Fw,t,x):求拉普拉斯像函数F(t)的原函数f(x)。
例9-5 计算y=x3的拉普拉斯变换及其逆变换。
3.Z变换
当函数f(x)呈现为⼀个离散的数列f(n)时,对数列f(n)进⾏z变换的MATLAB函数是:
ztrans(fn,n,z):求fn的Z变换像函数F(z)。
iztrans(Fz,z,n):求Fz的z变换原函数f(n)。
例9-6 求数列 fn=e-2n的Z变换及其逆变换。
9.3级数
9.3.1 级数符号求和
求⽆穷级数的和需要符号表达式求和函数symsum,其调⽤格式为:
symsum(s,v,n,m)
其中s表⽰⼀个级数的通项,是⼀个符号表达式。v是求和变量,v省略时使⽤系统的默认变量。n和m是求和的开始项和末项。
例9-7 求下列级数之和。
9.3.2 函数的泰勒级数
MATLAB提供了taylor函数将函数展开为幂级数,其调⽤格式为:
taylor(f,v,n,a)
该函数将函数f按变量v展开为泰勒级数,展开到第n项(即变量v的n-1次幂)为⽌,n的缺省值为6。v的缺省值与diff函数相同。参数a指定将函数f在⾃变量v=a处展开,a的缺省值是0。
例9-8 求函数在指定点的泰勒级数展开式。
9.4符号⽅程求解
9.4.1 符号代数⽅程求解
在MATLAB中,求解⽤符号表达式表⽰的代数⽅程可由函数solve实现,其调⽤格式为:
solve(s):求解符号表达式s的代数⽅程,求解变量为默认变量。
solve(s,v):求解符号表达式s的代数⽅程,求解变量为v。
solve(s1,s2,…,sn,v1,v2,…,vn):求解符号表达式s1,s2,…,sn组成的代数⽅程组,求解变量分别v1,v2,…,vn。
例9-9 解下列⽅程。
9.4.2 符号常微分⽅程求解
在MATLAB中,⽤⼤写字母D表⽰导数。例如,Dy表⽰y’,D2y表⽰y”,Dy(0)=5表⽰y'(0)=5。D3y+D2y+Dy-x+5=0表⽰微分⽅程y”’+y”+y’-x+5=0。符号常微分⽅程求解可以通过函数dsolve来实现,其调⽤格式为:
dsolve(e,c,v)
该函数求解常微分⽅程e在初值条件c下的特解。参数v描述⽅程中的⾃变量,省略时按缺省原则处理,若没有给出初值条件c,则求⽅程的通解。
dsolve在求常微分⽅程组时的调⽤格式为:
dsolve(e1,e2,…,en,c1,…,cn,v1,…,vn)
该函数求解常微分⽅程组e1,…,en在初值条件c1,…,cn下的特解,若不给出初值条件,则求⽅程组的通解,v1,…,vn给出求解变量。
例9-10 求下列微分⽅程的解。
喜欢 (0)or分享 (0)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论