ch符号计算.docx
《ch符号计算.docx》由会员分享,可在线阅读,更多相关《ch符号计算.docx(20页珍藏版)》请在冰豆网上搜索。
![ch符号计算.docx](https://file1.bdocx.com/fileroot1/2022-10/24/564ef8f6-6fa4-4342-b693-8bcbe7f88752/564ef8f6-6fa4-4342-b693-8bcbe7f887521.gif)
ch符号计算
第2章符号计算
符号计算:
解算数学表达式、方程不是在离散化的数值点上进行,而是凭借一系列恒等式,数学定理,通过推理和演绎,获得解析结果.
特点:
一,相对于MATLAB的数值计算“引擎”和“函数库”而言,符号计算的“引擎”和“函数库”是独立的.
二,在相当一些场合,符号计算解算问题的指令和过程,显得比数值计算更自然、更简明.三,大多数理工科的本科学生在学过高等数学和其他专业基础课以后,比较习惯符号计算的解题理念和模式.
SymbolicMathToolbox™ThecomputationalengineunderlyingthetoolboxesisthekernelofMaplesoftware,asystemdevelopedprimarilyattheUniversityofWaterloo,Canadaand,morerecently,attheEidgen?
ssicheTechnischeHochschule,Zürich,Switzerland.MaplesoftwareismarketedandsupportedbyWaterlooMaple,Inc.
运算引擎MuPAD
MuPAD作为MATLAB7.8的符号计算工具箱,是一具有人工智能的数学软件.方程式可以处理复数计算,完美的绘图功能,图型输入,输出,可以输入多个2-D函数或极坐标函数或3-D函数,选择所要绘图参数,就可以完成图形,以及图形的动画制作也是非常方便.数值计算结果并不是MATLAB命令行窗口所得的类似代码形式,而是规范数学格式.并拥有一内建的程序语言,帮助文档以及文本操作,文本操作在一定程度上可以取代word.
MathWorks自从2008年10开始,在Matlab的新版本(Matlab2008a,即7.6之后)中使用MuPAD内核替换原来的Maple符号计算内核!
.1符号对象和符号表达式
MATLAB依靠基本符号对象(包括数字、参数、变量)、运算符及一些预定义函数来构造和衍生符号表达式和符号方程.
.1.1符号对象的创建和衍生
10一生成符号对象的基本规则
●任何基本符号对象都必须借助专门的符号函数指令sym或syms定义.
●任何包含符号对象的表达式或方程,将继承符号对象的属性.
10二符号数字
符号(类)数字的定义:
sym('Num')创建一个符号数字Num
sc=sym('Num')创建一个符号常数sc,该常数值准确等于Num
说明:
Num代表一个具体的数字
Num必须处于(英文状态下的)单引号内,构成字符串(关于字符串参见附录A.1).
【例2.1-1】符号(类)数字与数值(类)数字之间的差异.
a=pi+sqrt(5)%创建方式
sa=sym('pi+sqrt(5)')
Ca=class(a)%类别判断
Csa=class(sa)
vpa(sa-a)
a=
5.3777
sa=
pi+sqrt(5)
Ca=
double
Csa=
sym
ans=
.138223758410852e-16
10三符号参数
表达式e-axsinbx中的a,b称为参数.
定义格式:
symsPara定义符号参数Para
Para=sym('Para')
symsParaFlag定义具有Flag指定属性的符号参数Para
Para=sym('Para','Flag')
symsPara1Para2ParaN定义Para1Para2ParaN为符号参数
symsPara1Para2ParaNFlag定义Para1Para2ParaN为具有Flag指定属性的符号参数
●符号参数名不要用处于“字母表中小写字母x及其两侧的英文字母”开头.
●Flag表示参数属性,可具体取以下词条:
positive表示那些符号参数取正实数;
real表示那些符号参数限定为实时;
unreal表示那些符号参数为不限定的复数.
symsxab
int(1/(x),a,b)
Warning:
Warning,unabletodetermineif0isbetweenaand
b;trytouseassumptionsorset_EnvAllSolutionstotrue
Warning:
Explicitintegralcouldnotbefound.
>Insym.intat58
ans=
int(1/x,x=a..b)
Var=sym('x');
Upp=sym('a','real');
Low=sym('b','real');
Intergral=int(1/(x),a,b)
Warning:
Warning,unabletodetermineif0isbetweenaand
b;trytouseassumptionsorsetoption_EnvAllSolutionsto
true
Warning:
Explicitintegralcouldnotbefound.
>Insym.intat58
Intergral=
int(1/x,x=a..b)
Var=sym('x');
Upp=sym('a','positive');
Low=sym('b','positive');
Intergral=int(1/(x),a,b)
Intergral=
-log(a)+log(b)
10四符号变量
e-axsinbx中的x称为变量,符号变量的定义同符号参数.
确定自由符号变量的规则:
●在专门指定变量名的符号运算中,解题一定围绕指定变量名进行.
●自动识别符号变量时,字母的优先次序为x,y,w,z,v等.
自动识别表达式中自由、独立的符号变量的指令:
findsym(EXPR)确认表达式EXPR中所有自由符号变量
findsym(EXPR,N)确认表达式EXPR中距离x最近的N个自由符号变量
【例2.1-2】用符号计算研究方程的解.
(1)不指定变量情况
symsuvwz%定义符号参数/变量
Eq=u*z^2+v*z+w;
result_1=solve(Eq)%
findsym(Eq,1)
result_1=
-u*z^2-v*z
ans=
w
(2)指定变量情况
result_2=solve(Eq,z)
result_2=
-1/2*(v-(v^2-4*u*w)^(1/2))/u
-1/2*(v+(v^2-4*u*w)^(1/2))/u
【例2.1-3】对独立自由符号变量的自动辨认.
(1)
symsabxXY%定义符号参数/变量
k=sym('3');%符号常数
z=sym('c*sqrt(delta)+y*sin(theta1)');%直接定义符号表达式
EXPR=a*z*X+(b*x^2+k)*Y;%构成衍生符号表达式
(2)
findsym(EXPR)
ans=
X,Y,a,b,c,delta,theta1,x,y
(3)
findsym(EXPR,1)
ans=
x
(4)
findsym(EXPR,2),findsym(EXPR,9)
ans=
x,y
ans=
x,y,theta1,delta,c,b,a,X,Y
【例2.1-4】findsym确定自由变量是对整个矩阵进行的.
symsabtuvxy
A=[a+b*x,sin(t)+u;x*exp(-t),log(y)+v]
findsym(A,5)
A=
[a+b*x,sin(t)+u]
[x*exp(-t),log(y)+v]
ans=
x,y,v,u,t
.1.2符号计算中的算符
●与数值计算中的算符在形状、名称和使用方法上几乎完全相同.
●仅注意:
在符号对象的关系运算符中,只有算符“==”,“~=”
比较结果为“真”时,用1表示;否则用0表示.
.1.3符号计算中的函数指令
表2.1-1MATLAB中可调用的符号计算函数指令
类别
情况描述
与数值计算对应关系
基本函数
三角函数、双曲函数及反函数;除atan2外
名称和使用方法相同
指数、对数函数(如exp,expm)只有log,无log2和log10
symsx
log10(x)
名称和使用方法相同
复数函数(注意:
没有幅角函数angle)
z=1+i;
angle(z)
a=sym('1+i');
abs(a)
angle(a)
名称和使用方法相同
矩阵分解函数(如eig等)
名称和使用方法相同
方程求解函数solve
不同
微积分函数(如diff,int)
不完全相同
积分变换和反变换函数(如laplace,ilaplace)
只有离散Fourier变换
绘图函数(如ezplot,ezsurf)
数值绘图指令更丰富
经典特殊函数
如误差函数erf、贝塞尔函数besselj、第一类完全椭圆积分EllipticK等;通过mfunlist可以看到所有经典函数名
部分
Maple库函数
Maple库函数在符号计算的扩展目录上;可通过mhelpindex看到各子函数库的名称;函数的数量很大;使用库函数,需要具备Maple语言知识
注意:
使用函数注意数据类型.就数字而言,有双精度和符号类数字之分.
.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
(