举例
求一元二次方程 ax2 + bx + c = 0 的根
solve('a*x^2+b*x+c')
求 f (x) = (cos x)2 的一次导数
x=sym('x');
diff(cos(x)^2)
计算 f (x) = x2 在区间 [a, b] 上的定积分
syms a b x;
int(x^2,a,b)
符号对象与符号表达式
在进行符号运算时,必须先定义基本的符号对象,可以是符号常量、符号变量、符号表达式等。
含有符号对象的表达式称为符号表达式,Matlab 在内部把符号表达式表示成字符串,以与数值变量或运算相区别。
符号矩阵/数组:元素为符号表达式的矩阵/数组。
符号对象的建立
符号对象的建立:sym 和 syms
sym 函数用来建立单个符号对象,一般调用格式为:
符号对象 = sym(A)
参数 A 可以是一个数或数值矩阵,也可以是字符串
a=sym('a')
a是符号变量
b=sym(1/3)
b 是符号常量
c=sym('[1 ab; c d]')
c 是符号矩阵
syms 命令可以用来建立多个符号变量
syms a b c
a b c中间一定要用空格隔开,不能用逗号
syms不能用来创建符号常量
符号表达式的建立
建立符号表达式通常有以下2种方法:
(1) 用 sym 函数直接建立符号表达式。
(2) 使用已经定义的符号变量组成符号表达式。
y=sym('sin(x)+cos(x)')
>> x=sym('x');
>> y=sin(x)+cos(x)
符号矩阵的建立与元素引用
使用 sym 函数直接生成
A=sym('[1+x, sin(x); 5, exp(x)]')
将数值矩阵转化成符号矩阵
B=[2/3, sqrt(2); 5.2, log(3)]
C=sym(B)
符号矩阵中元素的引用和修改
A=sym('[1+x, sin(x); 5, exp(x)]');
A(1,2) % 引用
A(2,2)=sym('cos(x) ') % 重新赋值
符号对象的基本运算
Matlab 符号运算采用的运算符和基本函数,在形状、名称和使用上,都与数值计算中的运算符和基本函数完全相同
普通运算:+ 、- 、* 、\ 、/ 、^
数组运算:.* 、.\ 、./ 、.^
矩阵转置:’ 、.’
基本函数:
sin、cos、tan、cot、sec、csc、…
asin、acos、atan、acot、asec、acsc、…
exp、log、log2、log10、sqrt
abs、conj、real、imag
rank、det、inv、eig
diag、triu、tril
计算行列式
查找符号变量
findsym(expr)
按字母顺序列出符号表达式 expr 中的所有符号变量
findsym(expr, N)
按顺序列出 expr 中离 x 最近的 N 个符号变量
(若表达式中有两个符号变量与 x 的距离相等,则ASCII 码大者优先。常量 pi, i, j 不作为符号变量)
符号表达式的替换
用给定的数据替换符号表达式中的指定的符号变量
subs(f,x,a)
用 a 替换字符函数 f 中的字符变量 x
a 是可以是 数/数值变量/表达式 或 字符变量/表达式
若 x 是一个由多个字符变量组成的数组或矩阵,则 a 应该具有与 x 相同的形状的数组或矩阵。
其他相关函数
double(x) 把符号常数转化为浮点数值对象。
class(x) 查看指定变量 x 的类型