1.sym()
2.syms()
上面两个函数的功能都是创建符号变量,符号常量,符号函数以及符号表达式,只不过调用的方式不同。
用class()函数可以测量所用对象是什么类型
例1.用命令函数sym()与syms()建立符号函数f1与方程e1
>> syms x y z;
>> f1=x^2+y^2+z^2+1;
>> e1=sym('a*x^2+b*x+c');
>> f1
f1 =
x^2 + y^2 + z^2 + 1
>> e1
e1 =
a*x^2 + b*x + c
1.subexpr()
[Y,SIGMA]=subexpr(S,SIGMA)
用指定变量SIGMA的值(必须为符号对象)来替代符号表达式中重复出现的字符串,替换后的结果由Y返回,被替换的字符串由SIGMA返回
[Y,SIGMA]=subexpr(S,SIGMA)
这种形式跟上一种形式的不同之处是第二个个输入参数是字符或字符串,用来替换表达式中重复出现的字符串。
例2:
>> syms a x;
>> s=solve('x^3+a*x+2=0')
s =
((a^3/27 + 1)^(1/2) - 1)^(1/3) - a/(3*((a^3/27 + 1)^(1/2) - 1)^(1/3))
(3^(1/2)*(a/(3*((a^3/27 + 1)^(1/2) - 1)^(1/3)) + ((a^3/27 + 1)^(1/2) - 1)^(1/3))*i)/2 + a/(6*((a^3/27 + 1)^(1/2) - 1)^(1/3)) - ((a^3/27 + 1)^(1/2) - 1)^(1/3)/2
a/(6*((a^3/27 + 1)^(1/2) - 1)^(1/3)) - (3^(1/2)*(a/(3*((a^3/27 + 1)^(1/2) - 1)^(1/3)) + ((a^3/27 + 1)^(1/2) - 1)^(1/3))*i)/2 - ((a^3/27 + 1)^(1/2) - 1)^(1/3)/2
>> r=subexpr(s)
sigma =
(a^3/27 + 1)^(1/2) - 1
r =
sigma^(1/3) - a/(3*sigma^(1/3))
(3^(1/2)*(a/(3*sigma^(1/3)) + sigma^(1/3))*i)/2 + a/(6*sigma^(1/3)) - sigma^(1/3)/2
a/(6*sigma^(1/3)) - (3^(1/2)*(a/(3*sigma^(1/3)) + sigma^(1/3))*i)/2 - sigma^(1/3)/2
>> [Y,SIGMA]=subexpr(s,'sysysy')
Y =
sysysy^(1/3) - a/(3*sysysy^(1/3))
(3^(1/2)*(a/(3*sysysy^(1/3)) + sysysy^(1/3))*i)/2 + a/(6*sysysy^(1/3)) - sysysy^(1/3)/2
a/(6*sysysy^(1/3)) - (3^(1/2)*(a/(3*sysysy^(1/3)) + sysysy^(1/3))*i)/2 - sysysy^(1/3)/2
SIGMA =
(a^3/27 + 1)^(1/2) - 1
1.collect()
实现将表达式中的同类项合并。
具体调用格式有两种:
R=collect(S) 将表达式S中的相同次幂合并,S可以是表达式也可以是符号矩阵
R=collect(S,’y’) 将表达式S中y的相同次幂合并,如果没有指定具体是哪个符号,则默认合并x的相同次幂。如果表达式中没有变量x,又没有指定变量,则是随机的。
例3:
>> syms x y;
>> h=(x-1).^3+(y-1).^4+(x+y).^2;
>> R=collect(h)
R =
x^3 - 2*x^2 + (2*y + 3)*x + (y - 1)^4 + y^2 - 1
>> R=collect(h,'y')
R =
y^4 - 4*y^3 + 7*y^2 + (2*x - 4)*y + (x - 1)^3 + x^2 + 1
例4:
>> syms a b;
>> h=(a-1).^3+(b-1).^4+(a+b).^2;
>> R=collect(h)
R =
b^4 - 4*b^3 + 7*b^2 + (2*a - 4)*b + (a - 1)^3 + a^2 + 1
1.expand()
调用格式:
R=expand(S) 将表达式S中的各项展开,该函数用于多项式、指数函数、三角函数、对数函数
例5:
>> syms x y;
>> h=cos(x+y);
>> expand(h)
ans =
cos(x)*cos(y) - sin(x)*sin(y)
>> f=exp(x+y+2);
>> expand(f)
ans =
exp(2)*exp(x)*exp(y)
1.simplify()
功能:根据一定的规则,对表达式进行简化
2.simple()
功能:寻找表达式的最简形式,返回表达式变得剪短的形式,目标是表达式用最少的字符表示,且simple函数综合使用了一下几个不同的函数进行不同方式的化简。
simplify() 简化
collect() 合并同类项
factor() 因式分解
convert() 一种形式转化成另一种形式
radsimple() 对包含根式的表达式化简
combine() 对表达式中求和、乘积、幂的形式合并
例6:可以自己运行一下下面的代码。
>> syms x y;
>> simple(cos(x+y)+sin(2*x)+(x+y).^5+tan(x+y))