ch2符号计算.docx
- 文档编号:2475265
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:18
- 大小:47.17KB
ch2符号计算.docx
《ch2符号计算.docx》由会员分享,可在线阅读,更多相关《ch2符号计算.docx(18页珍藏版)》请在冰豆网上搜索。
ch2符号计算
第2章符号计算
符号计算:
解算数学表达式、方程不是在离散化的数值点上进行,而是凭借一系列恒等式,数学定理,通过推理和演绎,获得解析结果。
符号计算建立在数值完全准确表达和推演严格解析的基础之上,所得结果完全准确。
特点:
一.相对于MATLAB的数值计算“引擎”和“函数库”而言,符号计算的“引擎”和“函数库”是独立的。
二.在相当一些场合,符号计算解算问题的指令和过程,显得比数值计算更自然、更简明。
三.大多数理工科的本科学生在学过高等数学和其他专业基础课以后,比较习惯符号计算的解题理念和模式。
.1符号对象和符号表达式
MATLAB依靠基本符号对象(包括数字、参数、变量)、运算符及一些预定义函数来构造和衍生符号表达式和符号方程。
.1.1符号对象的创建和衍生
10一生成符号对象的基本规则
●任何基本符号对象都必须借助专门的符号函数指令sym或syms定义。
●任何包含符号对象的表达式或方程,将继承符号对象的属性。
10二符号数字
符号(类)数字的定义:
sym('Num')创建一个符号数字Num
sc=sym('Num')创建一个符号常数sc,该常数值准确等于Num
说明:
Num代表一个具体的数字;
Num必须处于(英文状态下的)单引号内,构成字符串(关于字符串参见附录A.1);
Num须为整数、有理数(如321/1000)、预定义常数(如pi);
Num应杜绝使用“十进制小数(如0.321)”、“科学法计述数(如321e-3)”,以便确保创建的符号数、符号表达式精准。
此规定源于符号计算引擎的特性。
【例2.1-1】
(1)完全精准的符号数值或数值表达式的“推荐”创建法
clear
a=sin(3/10)%创建一个双精度的数值类常数
sa=sym('sin(3/10)')%利用有理数创建一个完全精准的符号数值表达式
vpa(sa-a,40)%计算双精度与精准符号数间的40位精度误差
a=
0.2955
sa=
sin(3/10)
ans=
0.00000000000000002892172294171061964864168785515107729858
(2)产生非精准的符号数值或数值表达式创建法(应杜绝使用!
)
sa1=sym('sin(0.3)')
sa2=sym('sin(3e-1)')
d1=vpa(sa-sa1,40)
sa1=
0.29552020666133957510532074568503
sa2=
0.29552020666133957510532074568503
d1=
-6.349448172324523418097794487226753809579e-41
(3)
whos
NameSizeBytesClassAttributes
a1x18double
ans1x160sym
d11x160sym
sa1x160sym
sa11x160sym
sa21x160sym
10三基本符号变量
经典教科书里,表达式e-axsinbx中的a,b称为参数,x为变量。
在MATLAB的符号计算中,a、b、x统称为基本符号变量,其中,x总被默认为自由(待解)符号变量,其他被作为符号参数处理。
定义基本符号变量的指令格式:
para=sym('para')定义单个复数域符号变量para
para=sym('para','Flag')定义单个Flag指定域符号变量para
symspara定义单个复数域符号变量para的另一种方式
symsparaFlag定义单个Flag指定域符号变量para的另一种方式
symspara1para2paraN定义多个复数域符号变量para1para2paraN
symspara1para2paraNFlag定义多个Flag指定域符号变量para1para2paraN
●符号参数名不要用处于“字母表中小写字母x及其两侧的英文字母”开头。
●Flag表示参数属性,可具体取以下词条:
positive表示那些符号变量取正实数;
real表示那些符号变量限定为实数。
●默认值是复数域符号变量
●sym指令只能对单变量作用,syms不能用于对数值、常数相关的定义。
10四自由符号变量
解题通常是围绕自由符号变量进行。
确定自由符号变量的规则:
●在专门指定变量名的符号运算中,解题一定围绕指定变量名进行。
●x是首选自由符号变量,其后的次序规则是:
与x的ASCII码值之差的绝对值小的字母优先;差绝对值相同时,ASCII码值大的字母优先。
●自动识别符号变量时,字母的优先次序为x,y,w,z,v等,大写后排。
自动识别表达式中自由、独立的符号变量的指令:
symvar(expression)列出表达式中所有自由符号变量
symvar(expression,n)列出表达式中距离x最近的n个自由符号变量
原来版本是
findsym(EXPR)确认表达式EXPR中所有自由符号变量
findsym(EXPR,N)确认表达式EXPR中距离x最近的N个自由符号变量
【例2.1-2】用符号计算研究方程sin(3)的解。
(1)产生符号表达式
symsuvwza5%定义符号参数和变量
f=sym('3');%定义符号常数
Eq=sin(f)*u*z^2+v*z+f*w-a5;
(2)基本符号变量和自由符号变量的认定
symvar(Eq)%按字母表顺序认定基本符号变量,注意没有f
ans=
[a5,u,v,w,z]
symvar(Eq,100)%按离x的距离认定所有自由符号变量
ans=
[w,z,v,u,a5]
symvar(Eq,1)%仅认定一个自由符号变量
ans=
w
(3)不指定变量情况
result_1=solve(Eq)
result_1=
a5/3-(v*z)/3-(u*sin(3)*z^2)/3
(4)指定变量情况
result_2=solve(Eq,z)
result_2=
-(v-(v^2+4*a5*u*sin(3)-12*u*w*sin(3))^(1/2))/(2*u*sin(3))
-(v+(v^2+4*a5*u*sin(3)-12*u*w*sin(3))^(1/2))/(2*u*sin(3))
【例2.1-3】对符号变量的辨认。
(1)
symsabxXY%定义基本符号变量
k=sym('3');%定义符号常数
z=sym('c*sqrt(d)+y*sin(t)');%创建“元”符号表达式
EXPR=a*z*X+(b*x^2+k)*Y;%构成衍生符号表达式
(2)
symvar(EXPR)%列出EXPR中全部基本符号变量,k、z除外
ans=
[X,Y,a,b,c,d,t,x,y]
(3)
symvar(EXPR,10)%列出EXPR中全部自由符号变量
ans=
[x,y,t,d,c,b,a,X,Y]
(4)
symvar(EXPR,1)%列出EXPR中最优先的一个自由符号变量
ans=
x
(5)%列出EXPR中最优先的3个自由符号变量
symvar(EXPR,3)
ans=
[x,y,t]
【例2.1-4】symvar确定自由变量是对整个矩阵进行的。
symsabtuvxy
A=[a+b*x,sin(t)+u;x*exp(-t),log(y)+v]
symvar(A,1)
A=
[a+b*x,u+sin(t)]
[x*exp(-t),v+log(y)]
ans=
x
.1.2符号计算中的算符
●与数值计算中的算符在形状、名称和使用方法上几乎完全相同。
.1.3符号计算中的函数指令
表2.1-1MATLAB中可调用的符号计算函数指令
类别
情况描述
与数值计算对应关系
基本函数
三角函数、双曲函数及反函数;除atan2外
名称和使用方法相同
指数、对数函数(如exp,expm)
名称和使用方法相同
复数函数
名称和使用方法相同
矩阵分解函数(如eig,svd)
名称和使用方法相同
方程求解函数solve
不同
微积分函数(如diff,int)
不完全相同
积分变换和反变换函数(如laplace,ilaplace)
只有离散Fourier变换
绘图函数(如ezplot,ezsurf)
数值绘图指令更丰富
特殊函数
单位脉冲和阶跃函数
Γ函数
椭圆积分
贝塞尔函数
不完全对应
MuPAD库函数
函数的数量很大;使用库函数,需要具备MuPAD语言知识
无对应函数
.1.4符号对象的识别
为了函数指令与数据对象的适配,MATLAB提供了用于识别数据对象属性的指令:
class(var)给出变量var的数据类别(如double,sym等)
isa(var,'Obj')若变量var是Obj代表的类型,给出1,表示“真”
whos给出所有MATLAB内存变量的属性
【例2.1-5】数据对象及其识别指令的使用。
(1)
clear
a=1;b=2;c=3;d=4;%产生4个数值变量
Mn=[a,b;c,d]%利用已赋值变量构成数值矩阵
Mc='[a,b;c,d]'%字符串中的a,b,c,d与前面输入的数值变量无关
Ms=sym(Mc)%Ms是一个符号矩阵,它与前面各变量无关
Mn=
12
34
Mc=
[a,b;c,d]
Ms=
[a,b]
[c,d]
(2)
SizeMn=size(Mn)
SizeMc=size(Mc)
SizeMs=size(Ms)
SizeMn=
22
SizeMc=
19
SizeMs=
22
(3)
CMn=class(Mn)
CMc=class(Mc)
CMs=class(Ms)
CMn=
double
CMc=
char
CMs=
sym
(4)
isa(Mn,'double')
isa(Mc,'char')
isa(Ms,'sym')
ans=
1
ans=
1
ans=
1
(5)
whosMnMcMs
NameSizeBytesClassAttributes
Mc1x918char
Mn2x232double
Ms2x2312sym
.1.5符号运算的工作机理
一、符号运算的工作机理
●sym或syms启动MuPAD引擎,开启一个专供MuPAD使用的内存空间
●被定义变量保存至Matlab内存空间
●对变量的限定性假设被保存在MuPAD内存空间中。
二、sym和syms指令可作的限定性假设
x=sym('x')%定义“复数”符号变量x,默认
x=sym('x','
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ch2 符号 计算