Matlab学习指导第二章 符号运算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
●Baidu Nhomakorabea
22:36
4
符号对象的创建和衍生
1. 生成符号对象的基本规则 ① 任何基本符号对象(数字、参数、变量、表达 式)都必须借助专门的符号函数指令sym或syms 定义。
② 任何包含符号对象的表达式或方程,将 继承符号对象的属性。即任何包含符号对象 的表达式、方程也一定是符号对象。
22:36
5
符号对象的定义:
yf=int(A*exp(-i*w*t), t, -tao/2, tao/2); yf=simple(yf)
yf = 2*A*sin(1/2*tao*w)/w
练习: 展开sin(4x)
22:36
(expand)
15
2.1.2 符号计算中的算符和基本函数 由于新版matlab采用了重载技术, 使得用来构成符号计算表达 式的算符和基本函数,无论在形状,名称,还是使用方法上,都与数 值计算中的算符和基本函数几乎完全相同,这给编程带来极大的 方便. (1) 基本运算符 算符 ”+”, ”-”, ”*”, ”\”, “/”,“^” 分别构成矩阵的加, 减, 乘,左 除,右除,求幂运算. 算符 ”.*”, “./”, “.\”, “.^” 分别实现元素 对元素的数组乘,除,求幂运算.算符” ' ”, “ .' ” 分别实现矩阵 的共轭转置,非共轭转置 (2) 关系运算符
‘positive‟---限定argv是“正,实”符号变量
‘real‟---限定argv是“实”符号变量. ‘unreal‟--- argv是非实符号变量.
22:36 8
2 符号数字的定义
格式:sc=sym('num')
注意:
% sc为值为num的符号数字
i) 单引号必须在英文状态下输入,构成字符串
syms a positive;
iii) syms a b c
a=sym('a', 'positive')
flag为参数属性:
无逗号
syms a b c flag
4 符号变量 表达式中的自变量
22:36
positive----参数取正实数
real-----参数为实数 unreal-----参数为限定的复数
第二章
符号计算
22:36
1
符号计算功能
matlab自产生起就在数值计算上功能卓著,深受各专业计算人员 的欢迎.但由于在数学,物理等各种科研和工程应用中经常会遇到 符号运算的问题. 为此, 公司于1993年购买了 Maple 软件的使用 权,并在此基础上,开发了符号计算工具箱 (Symbolic Toolbox) MATLAB中实现符号计算功能的三种途径
ii) num为一个具体的数字 如:
sc=sym(„2/3')
sb=sym('pi+sqrt(5)')
22:36
sc=2/3 sb=pi+sqrt(5)
9
3 符号参数
定义格式:
i) syms para para=sym('para')
syms a; a=sym('a') ii) syms para flag para=sym('para', 'flag')
22:36
a=a, b=b, c=c
只能定义符号变量
7
说明:
• f=sym(argn, flagn)中的argn是数值或数值表达式时,flagn可 选:
‘d‟---最接近的十进制浮点精确表示.
„r‟---最接近的有理表示,缺省选项.有理是指用两 个正整数p,q 构成的p/q, p*pi/q, sqrt(p), 2^q, 10^q的形式之一. • argv=sym(„argv‟,flagv)中的‘argv‟是字符时,flagv可取限定 选项
22:36 12
q=6054707603575008
说明: 1)<1>是数值常数, <2>是最接近的有理表示, <3>是绝对准确 的符号数值表示
2) <2> <3>部分元素相同,是因为<2> 中的那几个元素是有理 表示的基本形式,所以也是绝对准确的. 3) <3>指令产生的符号数值总是绝对准确的,因此建议:在产 生符号常量时应优先使用这种输入方式,把数值放入单引号对 中,数组元素间一定要采用逗号分隔 例5.1.1-2 把字符表达式转换为符号变量
22:36 3
2.1 符号对象和符号表达式
在matlab中,数值和数值变量用于数值的存储和各种数值计算. 而符号常量,符号变量,符号函数,符号操作等则是用来形成符号 表达式,严格按照代数,微积分等课程中的规则,公式进行运算,并 尽可能给出解析表达式.
2.1.1 符号对象的生成和使用
数值计算---变量先赋值,再使用. ● 符号计算---先定义基本的符号对象(可以是常量,变 量,表达式),然后用这些基本符号对象去构成新的表达 式,再进行所需的符号运算.
SizeMn = 2 2 SizeMc = 1 9
SizeMs=size(Ms)
SizeMs = 2 2
(3) 用class获得每种矩阵的类别
CMn=class(Mn),
CMn = double isa(Mn,„double‟), ans = 1
22:36
CMc=class(Mc),
CMc = char isa(Mc,'char'), ans = 1
22:36 2
符号运算与数值运算的区别:
符号运算中,解算数学表达式、方程时,不 是在离散化的数值点上进行,而是凭借一系 列恒等式和数学定理,通过推理和演绎,获 得解析结果。这种计算建立在数值完全准确 表达和推演严格解析的基础上,所得结果是 完全准确的。 符号运算----代数运算,公式推导
代值
数值运算---算术运算
CMs=class(Ms)
CMs = sym isa(Ms,'sym') ans = 1
19
(4) 用isa判断每种矩阵的类别
(5) 利用whos观察内存变量的类别和其他属性 Name Mc Mn Ms Size 1x9 2x2 2x2 Bytes Class 18 char array 32 double array 312 sym object
a2=sym([1/3, pi/7, sqrt(5), sqrt(9), 5.1, pi+sqrt(5)]) <2> a3=sym(„[1/3, pi/7, sqrt(5), sqrt(9), 5.1, pi+sqrt(5)]‟) <3> a1 =0.3333 0.4488 2.2361 3.0000 5.1000 5.3777 a2 =[1/3, pi/7, sqrt(5), 3, 51/10, q*2^(- 50)] a3 =[1/3, pi/7, sqrt(5), sqrt(9), 5.1, pi+sqrt(5)] a23=a2-a3 a23= [0, 0, 0, 0, 0, 189209612611719/35184372088832-pi-5^(1/2)]
y=sym('2*sin(x)*cos(x)') y=simple(y) y=sin(2*x)
在符号运算中,如果事先没有对表达式中的独立变量进行定义,那 么系统将自动检查哪些字符是符号函数,哪些是符号变量,并且总 是把在英文字母表中离x最近的字母认做独立符号变量
22:36 13
例2.1.1-3 用符号计算验证三角等式 sin 1 cos 2 cos 1 sin 2 sin(1 2 )
syms phi1 phi2; y=simple(sin(phi1)*cos(phi2)-cos(phi1)*sin(phi2));
例2.1.1-4
a11 求矩阵 a 21 a12 a22 的行列式,逆和特征值
syms a11 a12 a21 a22; A=[a11,a12;a21,a22]; y= sin(phi1-phi2)
DA=det(A), IA=inv(A), EA=eig(A)
A= [ a11, a12] [22:36 a22] a21, DA = a11*a22-a12*a21
14
例2.1.1-4 验证积分
2
2
Ae
i t
dt A
sin( 2)
2
syms A t tao w;
10
推荐格式: ◆定义符号变量:
syms 变量名 syms a b c
◆定义符号常数:
常数名=sym(„常数值’) K=sym(„2/3‟);
◆定义符号常数:
表达式名=sym(„表达式’); f=sym(„a*sin(x)+b‟);
22:36 11
例2.1.1-1 符号对象的生成 a1= [1/3, pi/7, sqrt(5), sqrt(9), 5.1, pi+sqrt(5)] <1>
函数sqrt, exp, expm在两者中用法相同.符号计算中只有自然 对数,而没有数值计算中的log2, log10
(5) 复数函数
conj, imag, real, abs在两者中用法相同.但在符号计算中没有求 相角的指令. (6) 矩阵代数指令 在符号计算中, matlab提供的常用矩阵代数指令有:diag, triu, tril, inv, det, rank, rref, null, colspace, expm, poly, eig, svd
% 产生四个数值变量
% 利用已赋值变量构成数值矩阵 % 字符串中的a,b,c,d与前面输入的数值变量无关 % 符号变量,与前面的各变量无关
Mc = [a,b;c,d]
Ms = [ a, b] [ c, d]
18
(2) 三个矩阵的大小不同 SizeMn=size(Mn), SizeMc=size(Mc),
在符号对象的比较中,没有大于,大于等于,小于,小于等于的概念, 而只有是否等于的概念. ”==“ “~=“分别用来对算符两边的对象 进行相等和不等的比较,返回为逻辑量
22:36 16
(3) 三角函数,双曲线函数以及他们的反函数 除atan2只能用于数值计算外,另外的在两种运算中使用方法相同.
(4) 指数,对数函数
22:36 17
2.1.3 对象类别的识别 数值计算对象,符号计算对象,字符串是MATALB中最常用的 数据对象.他们遵循各自不同的运算法则,但有时在外形上却 十分相似.MATLAB提供了一些识别不同数据对象的指令,常 用的有class, isa, whos 例2.1.3-1 数据对象及其识别指令的使用 (1) 生成三种不同类型的矩阵,给出不同的显示形式 clear, a=1;b=2;c=3;d=4 Mn=[a,b,c,d] Mc=„[a,b,c,d]‟ Ms=sym(Mc) Mn = 1 22:36 3 2 4
f=sym(arg)---把数字,字符串或表达式arg转为符号对象 f=sym(1/2), s=sym(1/3), y=sym(pi), a=sym('b*c' )
f=1/2, s=1/3, y=pi, a=b*c
f=sym(argn,flagn)---把数值或数值表达式转换为flagn 格式的符号对象 f=sym(1/2,'d'), s=sym(1/3, 'd'), y=sym(pi, 'd')
f=sym(1/2, 'r')= sym(1/2)
f= .50000000000000000000000000000000 s= .33333333333333331482961625624739
22:36
6
argv=sym(„argv‟,flagv)---按flagv指定的要求把字符串 ‘argv‟定义为符号对象argv f=sym('pi'), s=sym('2*pi+sin(60*pi*180)+exp(2)') f=pi, s=2*pi+sin(60*pi*180)+exp(2)
1) 调用matlab自己开发的各种功能函数进行常用的符 号运算.包括符号表达式与符号矩阵的基本操作,符号矩 阵的运算, 符号微积分, 符号线性方程求解, 符号微分方 程求解等. 2) 为了特殊专业人员提供方便, matlab还保留mpa.m 和maple.m两个函数与Maple接口. 3) 符号函数计算器功能.
syms(„argv1‟, „argv2‟, „argvk‟)---把字符argv1, argv2, argvk定义为基本符号对象 syms('a','b','c') a=a, b=b, c=c
syms argv1 argv2 argvk---上述格式的简洁形式,各符 号对象间不得有逗号 syms a b c
22:36
4
符号对象的创建和衍生
1. 生成符号对象的基本规则 ① 任何基本符号对象(数字、参数、变量、表达 式)都必须借助专门的符号函数指令sym或syms 定义。
② 任何包含符号对象的表达式或方程,将 继承符号对象的属性。即任何包含符号对象 的表达式、方程也一定是符号对象。
22:36
5
符号对象的定义:
yf=int(A*exp(-i*w*t), t, -tao/2, tao/2); yf=simple(yf)
yf = 2*A*sin(1/2*tao*w)/w
练习: 展开sin(4x)
22:36
(expand)
15
2.1.2 符号计算中的算符和基本函数 由于新版matlab采用了重载技术, 使得用来构成符号计算表达 式的算符和基本函数,无论在形状,名称,还是使用方法上,都与数 值计算中的算符和基本函数几乎完全相同,这给编程带来极大的 方便. (1) 基本运算符 算符 ”+”, ”-”, ”*”, ”\”, “/”,“^” 分别构成矩阵的加, 减, 乘,左 除,右除,求幂运算. 算符 ”.*”, “./”, “.\”, “.^” 分别实现元素 对元素的数组乘,除,求幂运算.算符” ' ”, “ .' ” 分别实现矩阵 的共轭转置,非共轭转置 (2) 关系运算符
‘positive‟---限定argv是“正,实”符号变量
‘real‟---限定argv是“实”符号变量. ‘unreal‟--- argv是非实符号变量.
22:36 8
2 符号数字的定义
格式:sc=sym('num')
注意:
% sc为值为num的符号数字
i) 单引号必须在英文状态下输入,构成字符串
syms a positive;
iii) syms a b c
a=sym('a', 'positive')
flag为参数属性:
无逗号
syms a b c flag
4 符号变量 表达式中的自变量
22:36
positive----参数取正实数
real-----参数为实数 unreal-----参数为限定的复数
第二章
符号计算
22:36
1
符号计算功能
matlab自产生起就在数值计算上功能卓著,深受各专业计算人员 的欢迎.但由于在数学,物理等各种科研和工程应用中经常会遇到 符号运算的问题. 为此, 公司于1993年购买了 Maple 软件的使用 权,并在此基础上,开发了符号计算工具箱 (Symbolic Toolbox) MATLAB中实现符号计算功能的三种途径
ii) num为一个具体的数字 如:
sc=sym(„2/3')
sb=sym('pi+sqrt(5)')
22:36
sc=2/3 sb=pi+sqrt(5)
9
3 符号参数
定义格式:
i) syms para para=sym('para')
syms a; a=sym('a') ii) syms para flag para=sym('para', 'flag')
22:36
a=a, b=b, c=c
只能定义符号变量
7
说明:
• f=sym(argn, flagn)中的argn是数值或数值表达式时,flagn可 选:
‘d‟---最接近的十进制浮点精确表示.
„r‟---最接近的有理表示,缺省选项.有理是指用两 个正整数p,q 构成的p/q, p*pi/q, sqrt(p), 2^q, 10^q的形式之一. • argv=sym(„argv‟,flagv)中的‘argv‟是字符时,flagv可取限定 选项
22:36 12
q=6054707603575008
说明: 1)<1>是数值常数, <2>是最接近的有理表示, <3>是绝对准确 的符号数值表示
2) <2> <3>部分元素相同,是因为<2> 中的那几个元素是有理 表示的基本形式,所以也是绝对准确的. 3) <3>指令产生的符号数值总是绝对准确的,因此建议:在产 生符号常量时应优先使用这种输入方式,把数值放入单引号对 中,数组元素间一定要采用逗号分隔 例5.1.1-2 把字符表达式转换为符号变量
22:36 3
2.1 符号对象和符号表达式
在matlab中,数值和数值变量用于数值的存储和各种数值计算. 而符号常量,符号变量,符号函数,符号操作等则是用来形成符号 表达式,严格按照代数,微积分等课程中的规则,公式进行运算,并 尽可能给出解析表达式.
2.1.1 符号对象的生成和使用
数值计算---变量先赋值,再使用. ● 符号计算---先定义基本的符号对象(可以是常量,变 量,表达式),然后用这些基本符号对象去构成新的表达 式,再进行所需的符号运算.
SizeMn = 2 2 SizeMc = 1 9
SizeMs=size(Ms)
SizeMs = 2 2
(3) 用class获得每种矩阵的类别
CMn=class(Mn),
CMn = double isa(Mn,„double‟), ans = 1
22:36
CMc=class(Mc),
CMc = char isa(Mc,'char'), ans = 1
22:36 2
符号运算与数值运算的区别:
符号运算中,解算数学表达式、方程时,不 是在离散化的数值点上进行,而是凭借一系 列恒等式和数学定理,通过推理和演绎,获 得解析结果。这种计算建立在数值完全准确 表达和推演严格解析的基础上,所得结果是 完全准确的。 符号运算----代数运算,公式推导
代值
数值运算---算术运算
CMs=class(Ms)
CMs = sym isa(Ms,'sym') ans = 1
19
(4) 用isa判断每种矩阵的类别
(5) 利用whos观察内存变量的类别和其他属性 Name Mc Mn Ms Size 1x9 2x2 2x2 Bytes Class 18 char array 32 double array 312 sym object
a2=sym([1/3, pi/7, sqrt(5), sqrt(9), 5.1, pi+sqrt(5)]) <2> a3=sym(„[1/3, pi/7, sqrt(5), sqrt(9), 5.1, pi+sqrt(5)]‟) <3> a1 =0.3333 0.4488 2.2361 3.0000 5.1000 5.3777 a2 =[1/3, pi/7, sqrt(5), 3, 51/10, q*2^(- 50)] a3 =[1/3, pi/7, sqrt(5), sqrt(9), 5.1, pi+sqrt(5)] a23=a2-a3 a23= [0, 0, 0, 0, 0, 189209612611719/35184372088832-pi-5^(1/2)]
y=sym('2*sin(x)*cos(x)') y=simple(y) y=sin(2*x)
在符号运算中,如果事先没有对表达式中的独立变量进行定义,那 么系统将自动检查哪些字符是符号函数,哪些是符号变量,并且总 是把在英文字母表中离x最近的字母认做独立符号变量
22:36 13
例2.1.1-3 用符号计算验证三角等式 sin 1 cos 2 cos 1 sin 2 sin(1 2 )
syms phi1 phi2; y=simple(sin(phi1)*cos(phi2)-cos(phi1)*sin(phi2));
例2.1.1-4
a11 求矩阵 a 21 a12 a22 的行列式,逆和特征值
syms a11 a12 a21 a22; A=[a11,a12;a21,a22]; y= sin(phi1-phi2)
DA=det(A), IA=inv(A), EA=eig(A)
A= [ a11, a12] [22:36 a22] a21, DA = a11*a22-a12*a21
14
例2.1.1-4 验证积分
2
2
Ae
i t
dt A
sin( 2)
2
syms A t tao w;
10
推荐格式: ◆定义符号变量:
syms 变量名 syms a b c
◆定义符号常数:
常数名=sym(„常数值’) K=sym(„2/3‟);
◆定义符号常数:
表达式名=sym(„表达式’); f=sym(„a*sin(x)+b‟);
22:36 11
例2.1.1-1 符号对象的生成 a1= [1/3, pi/7, sqrt(5), sqrt(9), 5.1, pi+sqrt(5)] <1>
函数sqrt, exp, expm在两者中用法相同.符号计算中只有自然 对数,而没有数值计算中的log2, log10
(5) 复数函数
conj, imag, real, abs在两者中用法相同.但在符号计算中没有求 相角的指令. (6) 矩阵代数指令 在符号计算中, matlab提供的常用矩阵代数指令有:diag, triu, tril, inv, det, rank, rref, null, colspace, expm, poly, eig, svd
% 产生四个数值变量
% 利用已赋值变量构成数值矩阵 % 字符串中的a,b,c,d与前面输入的数值变量无关 % 符号变量,与前面的各变量无关
Mc = [a,b;c,d]
Ms = [ a, b] [ c, d]
18
(2) 三个矩阵的大小不同 SizeMn=size(Mn), SizeMc=size(Mc),
在符号对象的比较中,没有大于,大于等于,小于,小于等于的概念, 而只有是否等于的概念. ”==“ “~=“分别用来对算符两边的对象 进行相等和不等的比较,返回为逻辑量
22:36 16
(3) 三角函数,双曲线函数以及他们的反函数 除atan2只能用于数值计算外,另外的在两种运算中使用方法相同.
(4) 指数,对数函数
22:36 17
2.1.3 对象类别的识别 数值计算对象,符号计算对象,字符串是MATALB中最常用的 数据对象.他们遵循各自不同的运算法则,但有时在外形上却 十分相似.MATLAB提供了一些识别不同数据对象的指令,常 用的有class, isa, whos 例2.1.3-1 数据对象及其识别指令的使用 (1) 生成三种不同类型的矩阵,给出不同的显示形式 clear, a=1;b=2;c=3;d=4 Mn=[a,b,c,d] Mc=„[a,b,c,d]‟ Ms=sym(Mc) Mn = 1 22:36 3 2 4
f=sym(arg)---把数字,字符串或表达式arg转为符号对象 f=sym(1/2), s=sym(1/3), y=sym(pi), a=sym('b*c' )
f=1/2, s=1/3, y=pi, a=b*c
f=sym(argn,flagn)---把数值或数值表达式转换为flagn 格式的符号对象 f=sym(1/2,'d'), s=sym(1/3, 'd'), y=sym(pi, 'd')
f=sym(1/2, 'r')= sym(1/2)
f= .50000000000000000000000000000000 s= .33333333333333331482961625624739
22:36
6
argv=sym(„argv‟,flagv)---按flagv指定的要求把字符串 ‘argv‟定义为符号对象argv f=sym('pi'), s=sym('2*pi+sin(60*pi*180)+exp(2)') f=pi, s=2*pi+sin(60*pi*180)+exp(2)
1) 调用matlab自己开发的各种功能函数进行常用的符 号运算.包括符号表达式与符号矩阵的基本操作,符号矩 阵的运算, 符号微积分, 符号线性方程求解, 符号微分方 程求解等. 2) 为了特殊专业人员提供方便, matlab还保留mpa.m 和maple.m两个函数与Maple接口. 3) 符号函数计算器功能.
syms(„argv1‟, „argv2‟, „argvk‟)---把字符argv1, argv2, argvk定义为基本符号对象 syms('a','b','c') a=a, b=b, c=c
syms argv1 argv2 argvk---上述格式的简洁形式,各符 号对象间不得有逗号 syms a b c