符号函数是matlab的一个重要功能,可以用来表示数学上的函数,同时也可以用来进行数值计算。
创建符号函数的方法:
首先利用syms命令定义自变量,然后再生成符号函数
syms sigamn m ft sigam3;
sigamn = (12*m*ft + (12*m+5)*sigam3) / (24*m -1); % sigamn 就是一个符号函数
首先使用@声明变量,在其后写符号函数表达式,之后使用sym转换成符号函数,就可以进行其他符号运算。
y = @(t) sin(t) - cos(t) + exp(t);
ys = sym(y);
y1 = @(a,b) cos(a) + cos(b);
ys1 = sym(y1);
利用函数文件来生成符号函数。(实际上,也是用1.1或者1.2的方法实现)
function output = xpower(n)
syms x
output = x^n;
end
对于符号函数,可以计算符号函数在某些点处的函数值,此时需要使用matlabFunction命令做一次转换。
syms x;
y = sin(x) - cos(x) + exp(x);
y_f = matlabFunction(y1);
x0 = [0, pi];
y_v = y_f(x0); % 计算符号函数y_f在x0处的函数值,x0可以是单个值,也可以是数组
syms x t;
f=(1+x)*t+x*t;
collect(f)
syms f;
f=x^3-6*x^2+11*x-6;
factor(f);
syms x
f=x*(x*(x-1)+3)+2;
expand(f);
syms a b c; %定义为符号变量
r = 2;
ss = a^r/((a-b)*(a-c))+b^r/((b-c)*(b-a))+c^r/((c-a)*(c-b)); %多项式公式
simplify(ss); %%简化多项式
simple(ss);
% simple是通过对表达式尝试多种不同的方法(包括simplify)进行化简
% 以寻求符号表达式的最简形式。
solve()函数可以求解代数方程(多项式方程)的符号解析解。
syms x;
y = x*sin(x)-x;
solve(y, x); % 只有一个自变量,可以省略自变量,同solve(y)
solve(y==0);
可以使用命令diff对符号函数进行求导,并且当diff作用到向量或者矩阵使可以求差分。
syms x;
y = x^4 - 5*x^2 +6;
diff(y,1); % 求1阶导,同diff(y)
diff(y,2); % 求2阶导
当diff作用于符号函数上时,可以对符号函数进行求导。
syms x1 x2 x3;
y = x1^5*x2 + x2*x3 - x1^2*x3;
py1 = diff(y,x1,1); % 对x1求一阶偏导
py2 = diff(y,x1,2); % 对x1求二阶偏导
py3 = diff(y,x1,x2); % 先对x1求偏导,再对x2求偏导
py4 = diff(y,x2,x1); % 先对x2求偏导,再对x1求偏导
如果diff函数作用的对象不是符号函数,而是矩阵,那么对应的功能就是求差分。
使用int()函数,可以对符号函数进行定积分计算。
% 使用形式:
int(被积函数,积分变量,积分下限,积分上限);
% 如果只有一个参量,可以省略第2项
syms x b;
f = b + 2*x;
int_f = int(f,x,-6,6);