MATLAB如何使用subs函数对符号表达式进行替换操作
使用subs函数可以将符号表达式中的字符型变量用数值型变量替换,其使用方法如下。
·subs(S)命令将符号表达式的值代替。S中的所有符号变量用调用函数中的值或是MATLAB工作区间
·subs(S,new)命令将符号表达式S中的自由符号变量用数值型变量或表达式new替换。例如用户想求表达式f=2x2+3x+1当x=-1时的值,可以使用subs(f,-1)。
·subs(S,old,new)命令将符号表达式S中的符号变量old用数值型变量或表达式new替换。
例题 利用subs函数对符号表达式进行替换操作
>> syms x y
>> f=x^2*y-4*x*sqrt(y)
f =
x^2*y - 4*x*y^(1/2)
>> subs(f,x,3)
ans =
9*y - 12*y^(1/2)
>> subs(f,y,3)
ans =
3*x^2 - 4*3^(1/2)*x
如果用户没有指定被替换的符号变量,那么MATLAB将按如下规则选择默认的替换变量,对于单个字母的变量,MATLAB选择在字母表中与x最接近的字母,如果有两个变量离x一样近, MATLAB将选择字母表中靠后的那个。因此,在上边的程序段中,subs(f,x,3)与subs(f,3)的返回值是相同的,用户可以使用findsym函数寻址默认的替换变量,例如下面的程序:
>> syms x y
>> f=x+y
f =
x + y
>> findsym(f,1)
ans =
x
以上部分的程序段进行了单个变量的替换,使用subs函数也可以进行多个变量的替换,如下所示:
>> subs(sin(x)+cos(y),{x,y},{sym('alpha'),2})
ans =
cos(2)+ sin(alpha)
同时,也可以使用矩阵作为替换变量,用来替换符号表达式中的符号变量,如下所示:
>> syms x
>> subs(exp(y*x),'a',-magic(2))
ans =
[ exp(x*y), exp(x*y)]
[ exp(x*y), exp(x*y)]
>> subs(x*y,{x,y},{[-1 2;3 -4],[1 1;2 3]})
ans =
-1 2
6 -12