MATLAB中所有符号函数(很少特殊例外的情况,讨论于后)作用到符号表达式和符号数组,并返回符号表达式或数组。其结果有时可能看起来象一个数字,但事实上它是一个内部用字符串表示的一个符号表达式。正如我们前面所讨论的,可以运用MATLAB函数isstr来找出像似数字的表达式是否真是一个整数或是一个字符串。
提取分子和分母
如果表达式是一个有理分式(两个多项式之比),或是可以展开为有理分式(包括哪些分母为1的分式),可利用numden来提取分子或分母。例如,给定如下的表达式:
在必要时,numden将表达式合并、有理化并返回所得的分子和分母。进行这项运算的MATLAB语句是:
>> m= ' x^2
' % create a
simple expression
m= x^2
>>
[n,d]=numden(m) % extract the
numerator and denominator
n= x^2
d= 1
>> f= '
a*x^2/(b-x) ' % create a rational expression
f= a*x^2/(b-x)
>>
[n,d]=numden(f) % extract the
numerator and denominator
n= a*x^2
d= b-x
前二个表达式得到期望结果。
>> g= '
3/2*x^2+2/3*x-3/5 ' % rationalize and extract the parts
g= 3/2*x^2+2/3*x-3/5
>>
[n,d]=numden(g)
n= 45*x^2+20*x-18
d= 30
>> h= '
(x^2+3)/(2*x-1)+3*x/(x-1) ' % the sum of rational polynomials
h= (x^2+3)/(2*x-1)+3*x/(x-1)
>>
[n,d]=numden(h) % rationalize
and extract
n= x^3+5*x^2-3
d= (2*x-1)*(x-1)
在提取各部分之前,这二个表达式g和h被有理化,并变换成具有分子和分母的一个简单表达式。
>> k=sym( '
[3/2,(2*x+1)/3;4/x^2,3*x+4] ' ) % try a symbolic array
k=
[ 3/2,(2*x+1)/3]
[4/x^2, 3*x+4]
>> [n,d]=numden(