MATLAB符号计算
符号表达式显示
pretty(f)
可以将已经定义好的符号表达式显示为符合一般数学表达习惯的数学表达式。
符号表达式合并
collect()
函数实现将符号表达式中的同类项合并
syms x;
f1 = (x-1)^3;
collect(f1)
#输出ans = x^3 - 3*x^2 +3*x - 1
在有多个符号变量时,需要指定要合并的符号变量
syms x y t;
f2 = x*cos(t) + y*sin(t) + (x^2 + 2*x*y + 3*y^2) * t;
collect(f2,x)
输出ans = t*x^2 + (cos(t) + 2*t*y)*x + 3*t*y^2 + sin(t)*y
符号表达式展开
expand()
函数将表达式中的各项进行展开,可适用于多项式、三角函数、指数函数和对数函数。
syms x y;
f1 = (x-1)^2*(y-1);
expand(f1)
输出ans = 2*x + y - 2*x*y + x^2*y - x^2 - 1
同理可对三角函数、指数函数和对数函数进行展开。
符号表达式的嵌套
horner()
函数可以将符号表达式转化为它们的嵌套形式。
syms x y;
f1 = x^3 - 6*x^2 + 11*x - 6;
horner(f1)
ans =
x*(x*(x - 6) + 11) - 6
符号表达式分解
factor()
函数对符号多项式进行因式分解功能
syms x y;
f1 = 2*x^2 - 7*x*y - 22*y^2 - 5*x + 35*y - 3;
factor(f1)
ans =
[ 2*x - 11*y + 1, x + 2*y - 3]
注意:如果符号表达式不能够分解为有理多项式乘积的形式,则返回X本身。
符号表达式化简
(1)simplify()
函数化简,可以对包含和式、方根、分数的乘方、指数函数、对数函数、三角函数、Bessel函数以及超越函数等表达式,利用Maple化简规则化简。
sym x;
f1 = (x^3 - 1) / (x - 1);
simplify(f1)
ans =
x^2 + x + 1
(2)simple()
函数化简,使用多种化简规则化简并返回其中最短的一个结果。
可以选择只获取结果或者获取描述化简方式得字符串
调用方式:
R = simple(S)
:显示中间结果。
[R,how] = simple(S)
:不显示化简得中间结果,只显示寻找到得最短形式和对应的简化方法。
符号表达式替换
subs()
替换函数:可以指定替换符号表达式中的某一特定符号。
R = subs(S)
:用工作区中的变量值替代符号变量S中对应的符号变量,如果没有,则返回没有替换的符号表达式。
R = subs(S,Old,New)
:使用新符号变量New替换S中名为Old的符号变量。
符号表达式精度计算
digits(d)
:调用后该函数的近似解的精度变为d为有效数字,d的默认值为32。
vpa(A,d)
:求符号解A的近似解,该近似解的有效位数由参数d来指定
补充
poly2sym(S)
:可以将系数组转换成符号多项式,次数从左向右依次降低,最左端次数为0
sym2poly(S)
:返回值是符号多项式的系数组,依次输出由高阶到0阶。
x = [0.3 0.4 0.7 0.9 1.2 1.9 2.8 3.2 3.7 4.5];
y = [1 2 3 4 5 2 6 9 2 7];
p5 = polyfit(x,y,5); %5阶多项式拟合,返回各次方项的系数
y5 = polyval(p5,x); %返回上述多项式在x处的系数,返回结果是一个一维向量
p5 = vpa(poly2sym(p5),5); %显示5阶多项式,其中vpa函数表示显示五个有效数字,不会自动补零
注释:
第一个p5
会返回一个由几何函数系数组成的一维矩阵。
第二个p5
会返回一个有效位数固定在5位的符号多项式。
符号表达式的极限
(1)limit(F,x,a)
:求当x→\rightarrow→a时,符号表达式F的极限。
注意:若不给出’x’,则使用符号表达式的默认自变量代替;若不给出’a’,则以a=0为自变量的趋近值。
(2)limit(F,x,a,'right')
或者limit(F,x,a,'left')
:求符号表达式F的左极限或者右极限。
syms x;
f1 = (cos(x) + sin(x) - x) / x;
limit(f1,x1,inf)
ans =
1
符号表达式的微分
一:diff()
函数
diff(F,'x',n)
:将符号“x”视作变量,对符号表达式F进行n阶微分运算。
注意:x若不加以设置,则符号表达式的默认符号变量;n如果不加以设置,则默认为1。
二:jacobian()
函数
R = jacobian(u,v)
:
u
代表一个由符号表达式组成的列向量;
v
是指定进行变换的变量所组成的行向量。
syms x y z;
f = [x^2 + y^2;x*y];
jacobian(f,[x y z])
ans =
[ 2*x, 2*y, 0]
[ 0, z, y]
符号表达式的积分
R = int(S,v)
:用符号标量v作为变量求符号表达式S的不定积分。
R = int(S,v,a,b)
:采用符号表两v作为变量,求当v
从a变到b时,符号表达式S的定积分值。