调用格式:
符号对象名=sym(A)
ps:符号计算的结果是一个精确的数学表达式。
数值计算的结果是一个数值。
例子一:
符号计算:
sin(sym(pi/3))
ans = 3^(1/2)/2
数值计算:
sin(pi/3)
ans = 0.8660
例子二:
a=5;
b=-8;
x=sym('a');
y=sym('b');
w=(a+b)*(a-b)
w = -39
s=(x+y)*(x-y)
s = (a + b)*(a - b)
eval(s) %将符号表达式转化为数值计算
ans = -39
syms命令可以一次定义多个符号变量
调用格式:
syms 符号变量名1 符号变量名2 … 符号变量名n
>> syms a b c d
符号表达式的四则运算与数值运算一样,用 +、-、*、/、^
运 算符实现,其运算结果依然是一个符号表达式。
6种关系运算符 :<、<=、>、>=、==、~=
函数调用:
对应的6个函数:lt()、le()、gt()、ge()、eq()、ne()
。
ps:若参与运算的是符号表达式,其结果是一个符号关系表达 式;
若参与运算的是符号矩阵,其结果是由符号关系表达式组成的矩阵。
函数调用:
assume(condition)
指定变量满足条件condition
assume(expr,set)
指定表达式 expr属于集合set。
例一:
syms x;
assume(x<0);
abs(x)==x
ans= -x==x
例二:
assume(x,'positive'); %x为正数
abs(x)==x
ans= x==x
3种逻辑运算符:&(与)、|(或)和~(非)
。
4个逻辑运算函数:and(a,b)、or(a,b)、not(a)和xor(a,b)
。
调用格式为:
① factor(s)
:对符号表达式s分解因式,还可以将整数分解为因子。
② expand(s)
:对符号表达式s进行展开。
③ collect(s)
:对符号表达式s合并同类项。
④ collect(s,v)
:对符号表达式s按变量v合并同类项
例一:
syms a b;
s=a^3-b^3;
factor(s)
ans= [ a-b, a^2 + a*b + b^2]
例二:
factor(12)
ans= 2 2 3
例三:
梅森素数的验证问题
所谓梅森数,是指形如2^p-1的一类整数,其中指数p是素数。将梅森数记为Mp。 如果梅森数是素数,就称为梅森素数。请验证M19 、 M23 、 M29 、 M31是否 为梅森素数。
syms p;%定义符号变量p
m=2^p-1;%梅森数计算公式
p=19;
m19=eval(m)%计算m的数值
factor(m19)%分解m19的正因子以验证它是否为素数
结果:
m19 =524287
ans =524287
① 提取有理分式的分子分母:[n,d]=numden(s)
。
② 提取符号表达式的系数:c=coeffs(s,x)
。
③ 符号表达式化简:simplify(s)
。
④ 符号多项式与多项式系数向量之间的转换:
符号多项式转换为多项式系数向量:p=sym2poly(s)
。
多项式系数向量转换为符号多项式:s=poly2sym(p)
。
不可以用来一步求出标准多项式向量。不只一个符号变量。
例:求求方程ax^2+bx+c=0的求根公式
syms a b c x;
f=a*x^2+b*x+c
%表达式
g=coeffs(f,x)
%提取f中x的系数,从x的低次到x的高次
g=g(end:-1:1)
%将g反转过来。
roots(g)
%多项式求根命令
结果:
g =[ c, b, a]
g = a, b, c]
ans =
-(b + (b^2 - 4*a*c)^(1/2))/(2*a)
-(b - (b^2 - 4*a*c)^(1/2))/(2*a)
① 如果没有明确指定自变量,按以下原则确定主变量并对其进行相应运算:
② 查找一个符号表达式中的符号变量。
调用格式为:symvar(s,n)
符号矩阵也是一种符号表达式,所以符号表达式运算都可以在矩阵意 义下进行。
==ps:这些函数作用于符号矩阵时,是分别作用于矩阵的每一个元素。 ==
例一:建立矩阵
syms a b x y alp;
m=[a^3-b^3,sin(alp)^2+cos(alp)^2;(15*x*y-3*x^2)/(x-5*y),78]
%建立矩阵
simplify(m)
%对矩阵进行化简
结果:
m =
[ a^3 - b^3, cos(alp)^2 + sin(alp)^2]
[ (- 3*x^2 + 15*y*x)/(x - 5*y), 78]
ans =
[ a^3 - b^3, 1]
[ -3*x, 78]
syms lamda;
A=[1-lamda,-2,4;2,3-lamda,1;1,1,1-lamda];%系数符号矩阵λ用lamda代替
D=det(A);%求系数阵行列式的值
factor(D)
%对行列式结果分解因式
结果:
ans =[ -1, lamda, lamda - 2, lamda - 3]
有结果可看出:λ=0、2、3方程组有非零解