在MATLAB中,进行符号矩阵的四则运算非常方便。实际上,它与数值矩阵的四则运算完全相同,这大大地方便了用户的操作。符号矩阵的加、减、乘、除运算可分别由函数symadd,symsub,symmul,symdiv来实现,也可与一般的数值运算一样,用“+”“-”“*” “/”符号进行运算,而符号矩阵的幂运算既可由函数sympow来实现,也可由幂运算符号“^”来实现。
在命令窗口中输入
code.matlab
>> A=sym('[cos(x),sin(x);x^2+x+1 tan(x)]');
>> B=sym('[x+1,x^1-1;sin(x),log(x)]');
>> C=A+B
C =
[ cos(x)+x+1, sin(x)+x^1-1]
[ x^2+x+1+sin(x), tan(x)+log(x)]
在命令窗口中输入
code.matlab
>> A=sym('[cos(x),sin(x);x^2+x+1 tan(x)]');
>> B=sym('[x+1,x^1-1;sin(x),log(x)]');
>> C=symmul(A,B)
C =
[ cos(x)*(x+1)+sin(x)^2, cos(x)*(x^1-1)+sin(x)*log(x)]
[ (x^2+x+1)*(x+1)+sin(x)*tan(x), (x^2+x+1)*(x^1-1)+tan(x)*log(x)]
在命令窗口中输入
code.matlab
>> A=sym('[cos(x),sin(x);x^2+x+1 tan(x)]');
>> B=sym('[x+1,x^1-1;sin(x),log(x)]');
>> C=A/B
C =
[-1/(-x*log(x) -log(x)+sin(x)*x^1-sin(x))*(cos(x)*log(x) -sin(x)^2),
(cos(x)*x-cos(x)-sin(x))/(sin(x)*x-log(x)-sin(x))]
[-1/(-x*log(x)-log(x)+sin(x)*x^1-sin(x))*(x^2*log(x)+x*log(x)+log(x)-tan(x)*sin(x)),
(x^5-1-tan(x))/(sin(x)*x-log(x)-sin(x))]
在命令窗口中输入
code.matlab
>> B=sym('[x+1,x^1-1;sin(x),log(x)]');
>> sympow(A,2)
ans =
[ cos(x)^2+sin(x)*(x^2+x+1), cos(x)*sin(x)+sin(x)*tan(x)]
[ (x^2+x+1)*cos(x)+tan(x)*(x^2+x+1), sin(x)*(x^2+x+1)+tan(x)^2]
需要注意的是,在符号矩阵的幂运算函数sympow(A,B)中的B必须是标量值。
在命令窗口中输入
code.matlab
>> A=sym('[cos(x),sin(x);x^2+x+1 tan(x)]');
>> B=sym('[x+1,x^1-1;sin(x),log(x)]');
sympow(A,B)
??? Error using ==> sym/mpower
Either base or exponent must be a scalar.
Error in ==> D:\matlabR12\toolbox\symbolic\sympow.m
On line 8 ==> c = sym(a) ^ sym(b);
在上例中,由于幂运算函数sympow(A,B)中的B是符号矩阵,所以返回出错信息。