MATLAB的符号计算
matlab的符号计算是通过sym、syms 函数去创建符号对象或者符号表达式。例如一元二次函数我们便可以通过syms 函数创建。
syms a b c x y z
f1 = a * x^2 + b * x + c;
f2 = sin(x) * cos(y);
f3 = (x + y)/z;
符号表达式常用运算函数
函数名 | 说明 | 函数名 | 说明 |
factor | 因式分解 | simplify | 对符号表达式进行化简 |
collect | 合并同类项 | simplifyFraction | 对符号表达式进行约分 |
expand | 对指定项展开 | compose | 复合函数 |
coeffs | 提取符号多项式系数 | horner | 嵌套多项式 |
numden | 提取分式的分子和分母 | combine | 把相同代数结构结合一起 |
符号表达式中的变量替换
subs 函数,用来对符号表达式中变量进行替换。
%例如将f = a * sinX + b中a, b换成2和5,并把sin(x)换为In y
syms a b x
f = a * sin(x) + b;
f1 = subs(f,sin(x),'log(y)');
将符号表达式转为函数有两个函数symfun 函数用来将符号表达式转为符号函数,matlabFunction 函数用来将符号表达式转换为匿名函数,或者m文件。
syms a b x
f(x) = symfun(a*sin(x) + b, x);
符号函数绘图
函数名 | 说明 | 函数名 | 说明 |
---|---|---|---|
ezplot | 二维曲线 | ezsurf | 三维曲面图 |
ezpolar | 极坐标曲线 | ezsurfc | 带等高线的三维曲面图 |
ezplot3 | 三维曲线 | ezcontour | 等高线图 |
ezmesh | 三维网格图 | ezcontourf | 填充式等高线图 |
ezmeshc | 带等高线的三维网格图 |
%绘制f = 1/In|x|的函数图像
syms f(x)
f(x) = 1/log(abs(x));
ezplot(f,[-6,6]);
符号微积分
limit 函数 diff 函数
MATLAB中提供了int 函数,用来求符号函数的积分
intf = int(f,x)
intf = int(f,x,a,x)
符号方程的求解
MATLAB提供了函数solve ,用来求解代数方程的符号解
[y1,...,yN] = solve(sqns,vars,Nane,Value)