第四章符号运算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章 符号运算
教学目标 教学重点 教学内容
2020年2月21日
第1页
教学目标
掌握符号对象的创建和使用 掌握符号的基本运算 理解数值运算和符号运算的区别 理解符号表达式的变换 掌握符号微积分、极限和级数的计算方法 了解符号函数的可视化
2020年2月21日
第2页
教学重点
符号对象的创建和使用 符号对象的基本运算
2020年2月21日
第16页
4.2.2 任意精度的算术运算
1. 符号工具箱的算术运算方式 (1)数值型 运算速度最快,占用内存最少,但结果不精确。
(2)有理数型 计算时间和占用内存是最大的,产生的结果是非 常准确的。
(3)VPA型 任意精度运算,这种运算比较灵活,可以设置任 意有效精度。
例如:sym(‘1/2+1/3’)
horner
2020年2月21日
第23页
函数格式
化简前
g=collect(f, 符 f=(x-1)*(x-
号变量)
2)*(x-3)
f=(t-1)*(t-x)
g=expand(f, 符 f=(x-1)*(x-
号变量)
2)*(x-3)
f=cos(x-y)
命令 g=collect(f) g=collect(f,'t') g=expand(f) g=expand(f)
例,>> 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',参数)……
化简成嵌套 的形式
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以及 超越函数等方法来简化表达式。
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求反函数
例: >> 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 函数的结果比较。
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日
第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页
符号运算的对象是非数值的符号对象,对 于像公式推导和因式分解等抽象的运算都可 以通过符号运算来解决。
(3)“′”,“.′”
2. 关系运算
只有运算符“= =”、“~=”分别对符号对象进行“ 相等”、“不等”的比较。
3. 三角函数、双曲函数和相应的反函数
三角函数包括sin、cos和tan,双曲函数包括sinh
、cosh和tanh
2020年2月21日
第114页
4. 指数和对数函数
5. 复数函数
复数的共轭conj、求实部real、求虚部imag 和求模abs函数与数值计算中的使用方法相同 。没有提供求相角的命令。
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
字母pi、i和j不能作为自由符号变量;
大写字母比所有的小写字母都靠后。
例如,在符号表达式“ax2+bx+c”中,自由符号变 量的顺序为xcba。
2020年2月21日
第20页
练习:
确定下面各符号表达式中的自由符号变量:
1/(log(t)+log10(w*t))
sqrt(t)/y
10*i+x*j
答案: 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函数用来对符号表达式中某个特定符号进行 替换,命令格式如下:
2020年2月21日
第17页
2. 不同类型对象的转换
(1)获得VPA型对象
digits(n)
%设定n位有效位数的精度
S=vpa(s,n) %将s按n位有效位数计算得出符号对象S
例:
>> digits
%显示默认精度
Digits = 32
>> q=sym('sqrt(2)')
q=
sqrt(2)
>> q=vpa(q)
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'.
MATLAB 2015b对应的是Symbolic Math Toolbox 5.4,默认的符号运算引擎就由 Mupad代替了原来的Maple引擎。
符号工具箱能够实现微积分运算、线性代 数、表达式的化简、求解代数方程和微分方 程、不同精度转换和积分变换,符号计算的 结果可以以图形化显示,MATLAB的符号运 算功能十分完整和方便。
exp(-a*result)
2020年2月21日
答案:w y x result
第21页
2. findsym函数
findsym(S,n) %确定符号对象S中的n个自由符号变量
例4-7 已知符号对象f=ax2+bx+c,得出自由符号变量。
>> syms a b c x y z;
>> f=a*x^2+b*x+c;
VPA型
第19页
4.3 符号表达式的变换 4.3.1 符号表达式中的自由符号变量
1. 自由符号变量的确定 以下原则来选择一个自由符号变量:
符号表达式中的多个符号变量,按以下顺序来选 择自由符号变量:首先选择x,如果没有x,则选择 在字母表顺序中最接近x的字符变量,如果字母与x 的距离相同,则在x后面的优先;
(3)符号计算命令调用简单; (4)符号计算所需要的时间较长。
2020年2月21日
第7页
4.百度文库 符号对象的创建和使用
创建符号对象都可以使用sym和syms函数来 实现。
1. sym函数
S=sym(s,参数) %由数值创建符号对象
S=sym(‘s’,参数) %由字符串创建符号对象
当被转换的s是数值时,参数可以是'd'、'f' 、'e'或'r' 四种格式,当被转换的's'是字符串 时,参数可以是'real'、'unreal'和'positive'三 种格式
>> 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')
>> 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')%用估计误差的有理表示
第22页
4.3.2 符号表达式的化简
多项式的符号表达式有多种形式,例如,
f(x)=x3+6x2+11x-6 可以表示为: 合并同类项形式:f(x)=x3+6x2+11x-6 collect expand 因式分解形式:f(x)=(x-1)(x-2)(x-3)
factor
嵌套形式:f(x)=x(x(x-6)+11)-6
g=horner(f) g=factor(f) pretty(f)
f=x^36*x^2+11*x-6 f=t^2(1+x)*t+x f=sym('120')
f=x^36*x^2+11*x-6 f=x^36*x^2+11*x-6
g=horner(f)
g=horner(f) g=factor(f) g=factor(f)
2020年2月21日
第28页
2. 复合函数
MATLAB R2010a提供了compose函数可以求出f(x)和g(y) 的复合函数f(g(y))。
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)“.*”,“./”,“.\”,“.^”
>> findsym(f)
%得出所有不按顺序排列的自由符号变量
ans =
a, b, c, x
>> findsym(f,4)
%得出4个按顺序排列的自由符号变量
ans =
x,c,b,a
>> g=x+i*y-j*z;
>> findsym(g)
%i和j不能做自由符号变量
ans =
x, y, z
2020年2月21日
%按默认精度计算并显示
q=
1.4142135623730950488016887242097
(2)获得数值型对象
n=double(s)
%将符号对象s转换为双精度数值对象n
2020年2月21日
第18页
(3)不同类型对象转换关系
数值型
double sym
vpa double
有理数型
vpa
2020年2月21日
%创建符号表达式
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]')
教学目标 教学重点 教学内容
2020年2月21日
第1页
教学目标
掌握符号对象的创建和使用 掌握符号的基本运算 理解数值运算和符号运算的区别 理解符号表达式的变换 掌握符号微积分、极限和级数的计算方法 了解符号函数的可视化
2020年2月21日
第2页
教学重点
符号对象的创建和使用 符号对象的基本运算
2020年2月21日
第16页
4.2.2 任意精度的算术运算
1. 符号工具箱的算术运算方式 (1)数值型 运算速度最快,占用内存最少,但结果不精确。
(2)有理数型 计算时间和占用内存是最大的,产生的结果是非 常准确的。
(3)VPA型 任意精度运算,这种运算比较灵活,可以设置任 意有效精度。
例如:sym(‘1/2+1/3’)
horner
2020年2月21日
第23页
函数格式
化简前
g=collect(f, 符 f=(x-1)*(x-
号变量)
2)*(x-3)
f=(t-1)*(t-x)
g=expand(f, 符 f=(x-1)*(x-
号变量)
2)*(x-3)
f=cos(x-y)
命令 g=collect(f) g=collect(f,'t') g=expand(f) g=expand(f)
例,>> 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',参数)……
化简成嵌套 的形式
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以及 超越函数等方法来简化表达式。
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求反函数
例: >> 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 函数的结果比较。
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日
第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页
符号运算的对象是非数值的符号对象,对 于像公式推导和因式分解等抽象的运算都可 以通过符号运算来解决。
(3)“′”,“.′”
2. 关系运算
只有运算符“= =”、“~=”分别对符号对象进行“ 相等”、“不等”的比较。
3. 三角函数、双曲函数和相应的反函数
三角函数包括sin、cos和tan,双曲函数包括sinh
、cosh和tanh
2020年2月21日
第114页
4. 指数和对数函数
5. 复数函数
复数的共轭conj、求实部real、求虚部imag 和求模abs函数与数值计算中的使用方法相同 。没有提供求相角的命令。
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
字母pi、i和j不能作为自由符号变量;
大写字母比所有的小写字母都靠后。
例如,在符号表达式“ax2+bx+c”中,自由符号变 量的顺序为xcba。
2020年2月21日
第20页
练习:
确定下面各符号表达式中的自由符号变量:
1/(log(t)+log10(w*t))
sqrt(t)/y
10*i+x*j
答案: 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函数用来对符号表达式中某个特定符号进行 替换,命令格式如下:
2020年2月21日
第17页
2. 不同类型对象的转换
(1)获得VPA型对象
digits(n)
%设定n位有效位数的精度
S=vpa(s,n) %将s按n位有效位数计算得出符号对象S
例:
>> digits
%显示默认精度
Digits = 32
>> q=sym('sqrt(2)')
q=
sqrt(2)
>> q=vpa(q)
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'.
MATLAB 2015b对应的是Symbolic Math Toolbox 5.4,默认的符号运算引擎就由 Mupad代替了原来的Maple引擎。
符号工具箱能够实现微积分运算、线性代 数、表达式的化简、求解代数方程和微分方 程、不同精度转换和积分变换,符号计算的 结果可以以图形化显示,MATLAB的符号运 算功能十分完整和方便。
exp(-a*result)
2020年2月21日
答案:w y x result
第21页
2. findsym函数
findsym(S,n) %确定符号对象S中的n个自由符号变量
例4-7 已知符号对象f=ax2+bx+c,得出自由符号变量。
>> syms a b c x y z;
>> f=a*x^2+b*x+c;
VPA型
第19页
4.3 符号表达式的变换 4.3.1 符号表达式中的自由符号变量
1. 自由符号变量的确定 以下原则来选择一个自由符号变量:
符号表达式中的多个符号变量,按以下顺序来选 择自由符号变量:首先选择x,如果没有x,则选择 在字母表顺序中最接近x的字符变量,如果字母与x 的距离相同,则在x后面的优先;
(3)符号计算命令调用简单; (4)符号计算所需要的时间较长。
2020年2月21日
第7页
4.百度文库 符号对象的创建和使用
创建符号对象都可以使用sym和syms函数来 实现。
1. sym函数
S=sym(s,参数) %由数值创建符号对象
S=sym(‘s’,参数) %由字符串创建符号对象
当被转换的s是数值时,参数可以是'd'、'f' 、'e'或'r' 四种格式,当被转换的's'是字符串 时,参数可以是'real'、'unreal'和'positive'三 种格式
>> 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')
>> 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')%用估计误差的有理表示
第22页
4.3.2 符号表达式的化简
多项式的符号表达式有多种形式,例如,
f(x)=x3+6x2+11x-6 可以表示为: 合并同类项形式:f(x)=x3+6x2+11x-6 collect expand 因式分解形式:f(x)=(x-1)(x-2)(x-3)
factor
嵌套形式:f(x)=x(x(x-6)+11)-6
g=horner(f) g=factor(f) pretty(f)
f=x^36*x^2+11*x-6 f=t^2(1+x)*t+x f=sym('120')
f=x^36*x^2+11*x-6 f=x^36*x^2+11*x-6
g=horner(f)
g=horner(f) g=factor(f) g=factor(f)
2020年2月21日
第28页
2. 复合函数
MATLAB R2010a提供了compose函数可以求出f(x)和g(y) 的复合函数f(g(y))。
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)“.*”,“./”,“.\”,“.^”
>> findsym(f)
%得出所有不按顺序排列的自由符号变量
ans =
a, b, c, x
>> findsym(f,4)
%得出4个按顺序排列的自由符号变量
ans =
x,c,b,a
>> g=x+i*y-j*z;
>> findsym(g)
%i和j不能做自由符号变量
ans =
x, y, z
2020年2月21日
%按默认精度计算并显示
q=
1.4142135623730950488016887242097
(2)获得数值型对象
n=double(s)
%将符号对象s转换为双精度数值对象n
2020年2月21日
第18页
(3)不同类型对象转换关系
数值型
double sym
vpa double
有理数型
vpa
2020年2月21日
%创建符号表达式
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]')