命令21 从一符号表达式中或矩阵中找出符号变量
函数 findsym
格式 r = findsym(S) %以字母表的顺序返回表达式S中的所有符号变量(注:符号变量
为由字母(除了i与j)与数字构成的、字母打头的字符串)。若S中没有任何的符号变量,
则findsym返回一空字符串。
r = findsym(S,n) %返回字母表中接近x的n个符号变量
例3-20
>>syms a x y z t alpha beta
>>1 = findsym(sin(pi*t*alpha+beta))
>>S2 = findsym(x+i*y-j*z+eps-nan)
>>S3 = findsym(a+y,pi)
计算结果为;
S1 =
pi, alpha, beta, t
S2 =
NaN, x, y, z
S3 =
a, y
命令22 函数的反函数
函数 finverse
格式 g = finverse(f) %返回函数f 的反函数。其中f为单值的一元数学函数,如f=f(x)。
若f的反函数存在,设为g,则有g[f(x)] = x。
g = finverse(f,u) %若符号函数f中有几个符号变量时,对指定的符号自变量v计算其反
函数。若其反函数存在,设为g,则有g[f(v)] = v。
例3-21
>>syms x p q u v;
>>V1 = finverse(1/((x^2+p)*(x^2+q)))
>>V2 = finverse(exp(u-2*v),u)
计算结果为:
Warning: finverse(1/(x^2+p)/(x^2+q)) is not unique.
> In D:\MATLABR12\toolbox\symbolic\@sym\finverse.m at line 43
V1 =
1/2/x*2^(1/2)*(x*(-x*q-x*p+(x^2*q^2-2*x^2*q*p+x^2*p^2+4*x)^(1/2)))^(1/2)
V2 =
2*v+log(u)
命令23 嵌套形式的多项式的表达式
函数 horner
格式 R = horner(P) %若P为一符号多项式的矩阵,该命令将矩阵的每一元素转换成
嵌套形式的表达式R。
例3-22
>>syms x y
>>H1 = horner(2*x^4-6*x^3+9*x^2-6*x-4)
>>H2 = horner([x^2+x*y;y^3-2*y])
计算结果为:
H1 =
-4+(-6+(9+(-6+2*x)*x)*x)*x
H2 =
[ x^2+x*y]
[ (-2+y^2)*y]
命令24 符号表达式求和
函数 symsum
格式 r = symsum(s) %对符号表达式s中的符号变量k(由命令findsym(s)确定的)
从0到k-1求和
r = symsum(s,v) %对符号表达式s中指定的符号变量v从0到v-1求和
r = symsum(s,a,b) %对符号表达式s中的符号变量k(由命令findsym(s)确定的)
从a到b求和
r = symsum(s,v,a,b) %对符号表达式s中指定的符号变量v从a到b求和
例3-23
>>syms k n x
>>r1 = symsum(k^3)
>>r2 = symsum(k^2-k)
>>r3 = symsum(sin(k*pi)/k,0,n)
>>r4 = symsum(k^2,0,10)
>>r5 = symsum(x^k/sym('k!'), k, 0,inf) %为使k!通过MATLAB表达式的检验,必须
把它作为一符号表达式。
计算结果为:
r1 =
1/4*k^4-1/2*k^3+1/4*k^2
r2 =
1/3*k^3-k^2+2/3*k
r3 =
-1/2*sin(k*(n+1))/k+1/2*sin(k)/k/(cos(k)-1)*cos(k*(n+1))-1/2*sin(k)/k/(cos(k)-1)
r4 =
385
r5 =
exp(x)