第六部分 符号计算
1.符号常量和符号变量
创建的这个符号对象可以用class()函数来检测其数据类型。用sym()函数创建符号变量的一般格式为:
sym(常量) %创建符号常量
sym(常量,参数) %把常量按“参数”指定的格式转换为符号常量
例:定义符号常量1/3,并判断变量类型
2.定义符号变量
(1)用sym()函数定义符号变量
格式:
其中,varname表示创建符号变量的名称;expression表示符号表达式。parameter可以用来设置限定符号变量的数学特性,可以选择为poasitive、real和unreal,分别表示正数、实数和负实数。
例.做符号计算:
式中a,b,x,y均为符号常量。在符号运算前,应先将变量a,b,x,y定义为符号常量
(2)使用syms()函数定义符号常量
格式:
syms(‘arg1’,’arg2’,...,参数) %把字符常量定义为符号常量
syms arg1 arg2 ...参数 %把字符变量定义为符号变量的简洁形式
(3)默认符号变量
编号 | 符号表达式 | 默认符号变量 | 编号 | 符号表达式 | 默认符号变量 |
1 | a*x^3+b*x+c | x | 4 | 18*a+b | b |
2 | 1/(3+cos(t)) | t | 5 | 2*i | i |
3 | 10*x/y | x |
|
|
|
3.符号表达式
符号表达式例子
符号表达式 | MATLAB表达式 |
‘1/(3*x^n)’ | |
y=’1/sqrt(6*x)’ | |
‘cos(x^3)-sin(3*x)’ | |
M=sym(‘[1,2;3,4]’)a |
例:使用sym ()函数创建符号表达式f=ax+b
4.符号表达式运算
(1)提取分子和分母
语法格式:[N,D]=numden(expression)
N为通分后的分子,D为通分后的分母
例:求符号表达式
的分子和分母
(2)标准代数运算
格式:
sym(expression1)+sym(expression2) %符号表达式加运算
sym(expression1)-sym(expression2) %符号表达式减运算
sym(expression1)*sym(expression2) %符号表达式乘运算
sym(expression1)/sym(expression2) %符号表达式除运算
例.给定符号表达式
和
,请给出两个符号表达式进行加,减,乘,除运算的结果
(3)高级运算
a.使用compose()函数实现函数复合
格式:Expression3=compose(expression1,expression2)
例.给定表达式
和g=sin(x),请计算f(g(x))和g(f(x))的结果
b.使用finverse()函数求反函数
格式:finverse(expression1,varname)
varname为自变量,expression为符号表达式。finverse()函数对指定自变量varname的函数expression1(varname)求反函数,当varname省略,则对默认的自由符号变量求反函数
例:求1/x,
和ax+b的逆函数
(4)使用symsun()函数对级数求和
语法格式:
r=symsum(s) %对符号表达式s中的默认符号变量k从0到k-1求和
r=symsum(s,v) %对符号表达式s中的指定符号变量v从0到v-1求和
r=symsum(s,a,b) %对符号表达式s中的指定符号变量v从a到b求和
r=symsum(s,v,a,b) %对符号表达式s中的默认符号变量k从a到b求和
例:求级数1/12+1/22+1/32+1/42+...的和及其前10项的部分和
5.符号微分和积分
a.符号极限limit
命令格式 | 说明 |
limit(expression,x,a) | 计算符号表达式x→a时,F的极限值 |
limit(expression,a) | 计算符号函数F的极限值,因未指定F的自变量,用该格式时,变量为findsym确定默认自变量,即默认自变量→a |
limit(expression) | 计算符号函数F的极限值,变量findsym确定的默认变量;在未指定目标值时,默认变量趋近于0 |
limit(expression,x,a,’left’) | 计算当x→a时函数F的左极限 |
limit(expression,x,a,’right’) | 计算当x→a时函数F的右极限 |
例.求
的左右极限
b.符号微分
命令格式 | 说明 |
diff(f,v,n) | 表示以v为变量,对符号表达式f求n阶微分 |
diff(f,v)或diff(f,sym(‘v’)) | 表示以v为自变量,对符号表达式f求一阶微分 |
diff(f,n) | 表示根据findsym指示的默认变量对符号表达式f求n阶微分 |
diff(f) | %表示没有指定微分变量和微分阶数,则按findsym指示的默认变量对符号表达式f求一阶微分 |
例.使用符号运算计算
(3)符号积分
命令格式 | 说明 |
int(f,’v’,a,b) | 表示以v为变量,对符号表达式f求a到b的定积分 |
int(f,’v’)或int(f,’v’) | 表示v为自变量,对符号表达式f求不定积分 |
int(f,a,b) | 根据findsym指示的默认变量对符号表达式f求a到b的定积分 |
int(f) | 按findsym指示的默认变量对符号表达式f求不定积分。如果f是常数,积分将针对x |
例.分别计算表达式
和
对α的积分
6.方程求解
(1)求解代数方程组
格式:
例.求解
(2)单个微分方程
格式:
例.求解微分方程f’=f+cos(t)
(3)微分方程组
例.求解微分方程组x’=y,y’=x
7.线性代数和矩阵
(1)符号矩阵的创建
a.用字符串直接创建矩阵
例:
b.用sym()函数创建矩阵
例:
c.用syms()函数创建矩阵
格式:syms arg1 arg2...参数
A=[]
例:
d.将数值矩阵转化成符号矩阵
例.已知数值矩阵[2/3,sqrt(2);5.2,log(3)],试将该矩阵装换为符号矩阵
8.符号矩阵相关函数
(1)矩阵变换函数
函数名称 | 函数功能说明 |
flipud(A) | 将矩阵A上下翻转 |
fliplr(A) | 将矩阵A左右翻转 |
flidim(A,dim) | 将矩阵A沿特定dim维翻转 |
rot90(A) | 将矩阵A逆时针旋转90度 |
reshape(A,M,N) | 将矩阵A变维成M*N阶的 |
(2)矩阵运算函数
函数名称 | 函数功能说明 | 函数名称 | 函数功能说明 |
chol | 矩阵的Cholesky分解 | logm() | 矩阵的对数函数 |
cond | 矩阵的条件数 | lu() | 矩阵的LU分解 |
condieg | 对应于特征值的条件数 | svd() | 矩阵的奇异值分解 |
det | 方阵的行列式值 | norm() | 向量矩阵的范数 |
eig | 矩阵的特征值分解 | squtm() | 矩阵的平方根 |
expm | 矩阵的指数函数 | subspace() | 子空间的夹角 |
funm | 计算矩阵的函数值 | jacobian() | 求矩阵的jacobian矩阵 |
inv | 求矩阵的逆矩阵 | jordan() | 求矩阵的jordanb标准型 |
rank | 矩阵的秩 | qr() | 矩阵的QB分解 |
orth | 矩阵的列空间 |
|
|