符号表达式
在MATLAB中是将一符号表示式储存唯一字串 (character string),即是以二个单引号之内的表示式来定义其为一符号式,例如 'tan(x)', 'x^4 +2*x^2 /5' 的两个式子。
l 把字符表达式转换为符号变量
y=sym('2*sin(x)*cos(x)') %把字符表达式转换为符号变量
y=simple(y) %按规则把已有的y符号表达式化成最简形式
y=
2*sin(x)*cos(x)
y=
sin(2*x)
?symsx%这个必须先定义一个变量X
?A=[3/2,(x^2+3)/(2*x-1)+3*x/(x-1);4/x^2,3*x+4]
A=
[ 3/2, (x^2+3)/(2*x-1)+3*x/(x-1)]
[ 4/x^2, 3*x+4]
l MATLAB提供了一个函数ezplot 可以画单变数的符号式
符号函数
horner(S) | 将S转换成巢状表示式 |
numden(S) | 将S的有理数表示成分子和分母的形式 |
numeric(S) | 将S改成数值式(S不能含有任何符号变数) |
poly2sym(c) | 转换多项式系数向量c为符号多项式 |
pretty(S) | 将S显示成数学式 |
sym2poly(S) | 转换S为多项式系数向量 |
symadd(A,B) | 执行A+B的符号加法 |
symdiv(A,B) | 执行A+B的符号除法 |
symmul(A,B) | 执行A+B的符号乘法 |
sympow(S,p) | 执行S^p的符号次方运算 |
symsub(A,B) | 执行A+B的符号减法 |
?syms x
?s=2*x^2;
?horner(s)
ans =
2*x^2
?pretty(s)
2
2 x
?s=3*x^4+4*x^3+x+20;
?sym2poly(s)
ans =
3 4 0 1 20
符号微积分
l 符号微分
?syms x
?s=3*x^4+4*x^3+x+20;
?diff(s)%对x的导数
ans =
12*x^3+12*x^2+1
?diff(s,x,2)%求二阶导数
ans =
36*x^2+24*x
l 符号积分
?int(s)
ans =
3/5*x^5+x^4+1/2*x^2+20*x
符号卷积与积分变换
l 符号卷积
?syms tao;t=sym('t','positive'); %把t定义为限定性符号变量<4>
ut=sym('Heaviside(t)-Heaviside(t-1)');ht=t*exp(-t);
yt53=int(subs(ut,t,tao)*subs(ht,t,t-tao),tao,0,t);
yt53=collect(yt53,'Heaviside(t-1)')
yt53 =
(-1+exp(1-t)*t)*Heaviside(t-1)+1+(-t-1)*exp(-t)
l 符号积分变换
1. Fourier变换及其反变换
?ft=fourier(s)
ft=
6*pi*Dirac(4,w)-8*i*pi*Dirac(3,w)+2*i*pi*Dirac(1,w)+40*pi*Dirac(w)
?ifourier(ft)
ans=
3*x^4+4*x^3+x+20
2. Laplace变换及其反变换
?fs=laplace(s)
fs=
72/s^5+24/s^4+1/s^2+20/s
?ilaplace(fs)
ans=
3*t^4+4*t^3+t+20
3. Z变换及其反变换
syms z
?fz=ztrans(s,x,z)
fz =
3*z*(z^3+11*z^2+11*z+1)/(z-1)^5+4*z*(z^2+1+4*z)/(z-1)^4+z/(z-1)^2+20*z/(z-1)
» simple(fz)
ans =
2*z*(-36*z^3+81*z^2-28*z+9+10*z^4)/(z-1)^5
» syms n
» iztrans(fz,z,n)
ans =
3*n^4+4*n^3+n+20
出处:http://cs.nju.edu.cn/yangxc/dcc2003.files/matlab/matlab/11.htm