第四章符号运算
pretty(f)
2020年2月21日
化简后
功能
g=-6+x^3-
将f按照“符
6*x^2+11*x
号变量”的
g =t^2+(-1-x)*t+x 同次幂合并
g=-6+x^36*x^2+11*x
展开成多项 式和的形式
g=cos(x)*cos(y)+si
n(x)*sin(y)
g=-6+(11+(6+x)*x)*x
例: >> syms x y >> f2=cos(x)^2+sin(x)^2; >> g2=simplify(f2) g2 = 1
2020年2月21日
第25页
练习:
对符号表达式 f cosx sin2 x ,分别使用 collect、expand和simplify函数化简,并与simple 函数的结果比较。
subs(s,old,new) %用new替换符号表达式s中的old 例如:
>> f1=subs(f,'x-y','S')
2020年2月21日
第27页
4.3.4 计算反函数和复合函数
1. 反函数 函数f(x)存在一个反函数g(.),g(f(x))=x,则g和f互 为反函数 g=finverse(f,v) %对f(v)按指定自变量v求反函数 例4-15: >> syms x y >> f=5*sin(x)+y; >> g=finverse(f) %对默认自由变量求反函数 >> g1=finverse(f,'y') %对y求反函数
%按默认精度计算并显示
q=
1.4142135623730950488016887242097
(2)获得数值型对象
n=double(s)
%将符号对象s转换为双精度数值对象n
2020年2月21日
第18页
(3)不同类型对象转换关系
数值型
double sym
vpa double
有理数型
vpa
2020年2月21日
MATLAB 2015b对应的是Symbolic Math Toolbox 5.4,默认的符号运算引擎就由 Mupad代替了原来的Maple引擎。
符号工具箱能够实现微积分运算、线性代 数、表达式的化简、求解代数方程和微分方 程、不同精度转换和积分变换,符号计算的 结果可以以图形化显示,MATLAB的符号运 算功能十分完整和方便。
%创建符号表达式
f2 =
y^2+y+1
>> f3=sym('sin(z)^2+cos(z)^2=1') %创建符号方程
f3 =
sin(z)^2+cos(z)^2=1
2020年2月21日
第12页
4.1.4 符号矩阵
符号矩阵的元素是符号对象,符号矩阵可 以用sym和syms函数来创建。
>> A=sym('[a,b;c,d]')
3. class函数
s=class(x)
%返回对象x的数据类型
2020年2月21日
第9页
例: >> a=sym(2) %定义数值符号常量 a= 2 >> a1=sym(a) %定义符号变量 a1 = 2 >> b=sym(b) ??? Undefined function or variable 'b'.
2020年2月21日
第28页
2. 复合函数
MATLAB R2010a提供了compose函数可以求出f(x)和g(y) 的复合函数f(g(y))。
>> whos
2020年2月21日
第11页
4.1.3 符号表达式
符号表达式是由符号常量和符号变量等构成的表 达式,使用sym和syms函数来创建。
例4-3 分别使用sym和syms函数创建符号表达式。
>> syms a b c x
>> f1=a*x^2+b*x+c
f1 =
a*x^2+b*x+c
>> f2=sym('y^2+y+1')
例,>> x=sym('x');
2020年2月21日
第8页
2. syms函数
syms(s1,s2,s3,…,参数)
或 syms s1,s2,s3,…,参数%创建多个符号变量
syms与sym的关系是:syms(s1,s2,s3,…,参数)等同 于s1=sym('s1',参数),s2=sym('s2',参数)……
答案: f=sym('cos(x)+sqrt(-sin(x)^2)') collect(f) expand(f) simple(f) simplify(f)
2020年2月21日
第26页
4.3.3 符号表达式的替换
1. subexpr函数 subexpr函数用来替换符号表达式中重复出现的子 表达式,通过替换子表达式来化简。 2. subs函数 subs函数用来对符号表达式中某个特定符号进行 替换,命令格式如下:
化简成嵌套 的形式
g=(-t+1)*x+(t-1)*t
g=(2)^3*(3)*(5) 进 行 因 式 分
g =(x-1)*(x-2)*(x- 解
3)
32
给出排版形
x - 6 x + 11 x - 6 式 的 输 出 结
果
第24页
6. simplify函数 simplify函数是一个功能强大的函数,利用各种形 式的代数恒等式对符号表达式进行化简,包括求和 、分解、积分、幂、三角、指数、对数、Bessel以及 超越函数等方法来简化表达式。
6. 矩阵代数命令
符号运算中的矩阵代数命令有diag,triu, tril,inv,det,rank,poly,expm,eig和svd 等,它们的用法几乎与数值计算中的情况完 全一样
2020年2月21日
第15页
例4-5:
>> A=sym('[a,b;c,d]'); >> B=sym('[1 2;3 4]'); >> C=A+B C= [ a+1, b+2] [ c+3, d+4]
2020年2月21日
第16页
4.2.2 任意精度的算术运算
1. 符号工具箱的算术运算方式 (1)数值型 运算速度最快,占用内存最少,但结果不精确。
(2)有PA型 任意精度运算,这种运算比较灵活,可以设置任 意有效精度。
例如:sym(‘1/2+1/3’)
(3)“′”,“.′”
2. 关系运算
只有运算符“= =”、“~=”分别对符号对象进行“ 相等”、“不等”的比较。
3. 三角函数、双曲函数和相应的反函数
三角函数包括sin、cos和tan,双曲函数包括sinh
、cosh和tanh
2020年2月21日
第114页
4. 指数和对数函数
5. 复数函数
复数的共轭conj、求实部real、求虚部imag 和求模abs函数与数值计算中的使用方法相同 。没有提供求相角的命令。
A=
[ a, b]
[ c, d]
>> b=[1 2 ;3 4 ] >> B=sym(b) %sym用来将数值 转换为符号
2020年2月21日
第13页
4.2 符号对象的运算 4.2.1 符号对象的基本运算
1. 算术运算
(1)“+”,“-”,“*”,“\”,“/”,“^”
(2)“.*”,“./”,“.\”,“.^”
>> b=sym(‘b’) %定义字符串符号常量 b= b
2020年2月21日
第10页
4.1.2 符号常量和符号变量
符号常量是不含变量的符号表达式,用sym 函数来创建;符号变量使用sym和syms函数来 创建。
例4-1 创建符号常量和符号变量。
>> a=sin(2) >> a1=sym(sin(2)) %用数值创建符号常量 >> a2=sym(sin(2),'f')%用十六进制浮点表示 >> a3=sym(sin(2),'e')%用估计误差的有理表示
2020年2月21日
第5页
例如: 计算 a*x^2+b*x+c的根 计算f=sin(ax)+cos(x)的微分
计算 f 2 a r 2 sin 2 drd 00
2020年2月21日
第6页
符号运算的特点:
(1)符号运算以推理解析的方式进行,计 算的结果不受计算累积误差影响;
(2)符号计算可以得出完全正确的封闭解 和任意精度的数值解;
2020年2月21日
第3页
教学内容
4.1 符号对象的创建和使用 4.2 符号对象的运算 4.3 符号表达式的变换 4.4 符号微积分、极限和级数 4.5 符号积分变换 4.6 符号方程的求解 4.7 符号函数的可视化 4.8 综合举例
2020年2月21日
第4页
符号运算的对象是非数值的符号对象,对 于像公式推导和因式分解等抽象的运算都可 以通过符号运算来解决。
exp(-a*result)
2020年2月21日
答案:w y x result