五MATLAB符号计算.docx
- 文档编号:3037908
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:38
- 大小:265.88KB
五MATLAB符号计算.docx
《五MATLAB符号计算.docx》由会员分享,可在线阅读,更多相关《五MATLAB符号计算.docx(38页珍藏版)》请在冰点文库上搜索。
五MATLAB符号计算
第5章MATLAB符号计算
Matlab本身并没有符号计算功能,1993年通过购买Maple的使用权后,开始具备符号运算的功能.符号运算的类型很多,几乎涉及数学的所有分支.
符号运算使用一种特殊的数据类型,称为符号对象(SymbolicObject>,用字符串形式表达,但又不同于字符串(CharArray>。
符号中的变量,函数和表达式都是符号对象。
5.1符号对象的定义
5.1.1建立符号变量
MATLAB提供了两个建立符号对象的函数:
sym和syms,两个函数的用法不同。
1.sym函数
sym函数用来建立单个符号对象,一般调用格式为:
符号对象名=sym('符号字符串'>
该函数可以建立一个符号对象,符号字符串可以是常量、变量、函数或表达式。
符号对象名=sym(num,’d’>
该函数将数值表达式num转化为符号表达式,数值用十进制表示;
试比较分析下列命令:
a=pi^2,b=’pi^2’,c=sym(pi^2>,d=sym(pi^2,’d’>,e=sym(b>
>>a=pi^2%结果为一个数
a=
9.8696
>>b='pi^2'%结果为一个字符串
b=
pi^2
>>c=sym(pi^2>%数值转化为符号对象,有理表示!
c=
55560*2^(-49>
>>c=sym(pi^2,'d'>%数值转化为符号对象,十进制表示!
c=
9.869699230
>>e=sym(b>%或e=sym('pi^2'>字符串转化为符号对象
e=
pi^2
2.syms函数
函数sym一次只能定义一个符号变量,使用不方便。
MATLAB提供了另一个函数syms,一次可以定义多个符号变量<对象)。
syms函数的一般调用格式为:
syms符号变量名1符号变量名2…符号变量名n
用这种格式定义符号变量时不要在变量名上加字符串分界符(‘>,变量间用空格而不要用逗号分隔。
>>symsxyz
>>h=x^3+2*y^2+e
h=
x^3+2*y^2+pi^2
5.1.2建立符号表达式
含有符号对象的表达式称为符号表达式。
建立符号表达式有以下3种方法:
(1>利用单引号来生成符号表达式。
(2>用sym函数建立符号表达式。
(3>使用已经定义的符号变量组成符号表达式。
>>A=[cb。
e-hh-x^3]
A=
[55560*2^(-49>,pi^2]
[-x^3-2*y^2,2*y^2+pi^2]
5.1.3计算精度和数据类型转换
利用函数sym可以将数值表达式变换成它的符号表达式,函数numeric或eval可以将符号表达式变换成数值表达式。
double(s>将符号对象转化为双精度数值
char(s>将符号对象转化为字符串
digits(n>将数值计算精度设为n位;
x=vpa(s>求s的数值结果
x=vpa(s,n>采用n位计算精度求s的数值结果
>>2^10000
ans=
Inf
>>a=sym(2>。
b=a^10000
b=
199********74216268…709376%很长的整数,准确的,而不是近似的
>>vpa(b>
ans=
.199********7421626836e3011
>>formatlong。
pi^2,formatshort%用长格式显示pi的值,再恢复为短格式
ans=
9.86960440108936
试比较以下C=PI^2的显示结果。
>>c=sym('pi^2'>。
>>vpa(c,16>%16位
ans=
9.8696
>>vpa(c>%32位,默认
ans=
9.869668761
>>vpa(c,100>%100位,高精度
ans=
9.8696687694452438552232
>>vpa(c,2>%2位,低精度
ans=
9.6
>>double(c>%双精度,数值
ans=
9.8696
>>symsx。
f=sym(x^3-1>
f=
x^3-1
>>fun=inline(f>
fun=
Inlinefunction:
fun(x>=x.^3-1
5.2符号矩阵和符号函数
5.2.1符号矩阵
MATLAB大部分矩阵和数组运算符及指令都可以用于符号如:
inv,./,.\,eig等
>>clear。
A=sym('[a,b。
c,d]'>。
>>B=inv(A>
B=
[d/(a*d-b*c>,-b/(a*d-b*c>]
[-c/(a*d-b*c>,a/(a*d-b*c>]
>>A.\B,A\B
ans=
[d/(a*d-b*c>/a,-1/(a*d-b*c>]
[-1/(a*d-b*c>,a/(a*d-b*c>/d]
ans=
[(d^2+b*c>/(d^2*a^2-2*a*d*b*c+b^2*c^2>,-b*(a+d>/(d^2*a^2-2*a*d*b*c+b^2*c^2>]
[-c*(a+d>/(d^2*a^2-2*a*d*b*c+b^2*c^2>,(b*c+a^2>/(d^2*a^2-2*a*d*b*c+b^2*c^2>]
>>A*B
ans=
[a*d/(a*d-b*c>-b*c/(a*d-b*c>,0]
[0,a*d/(a*d-b*c>-b*c/(a*d-b*c>]
>>eig(A>
ans=
[1/2*d+1/2*a+1/2*(d^2-2*a*d+a^2+4*b*c>^(1/2>]
[1/2*d+1/2*a-1/2*(d^2-2*a*d+a^2+4*b*c>^(1/2>]
2.符号函数计算
大部分MATLAB的数学函数和逻辑关系运算也可以用于符号对象,另外还有:
factor(expr>对expr作因式分解
expand(expr>将expr展开
collect(expr,v>将expr按变量v合并同类项
simplify(s>:
应用函数规则对s进行化简。
simple(s>:
调用MATLAB的其他函数对表达式进行综合化简,并显示化简过程。
g=finverse(f,v>求函数f(v>的反函数g(v>
fg=compose(f,g>求函数f(v>和g(v>的复合函数f(g(v>>
[n,d]=numden(expr>分式通分,n返回分子,d返回分母
如果符号表达式是一个有理分式或可以展开为有理分式,可利用numden函数来提取符号表达式中的分子或分母。
例1.已知f(x,y>=(x-y>3,g(x,y>=(x+y>3,s=x^6+1。
考虑相关的运算,如求h=f*g并展开。
>>clear。
symsxyz。
f=(x-y>^3。
g=(x+y>^3。
>>h=f*g%两函数相乘
h=
(x-y>^3*(x+y>^3
>>hs=expand(h>%函数展开
hs=
x^6-3*x^4*y^2+3*x^2*y^4-y^6
>>s=x^6+1。
sf=factor(s>%因式分解
sf=
(x^2+1>*(x^4-x^2+1>
>>sz=subs(sf,x,z^2+z+1>%用z^2+z+1替换sf中的x
sz=
((z^2+z+1>^2+1>*((z^2+z+1>^4-(z^2+z+1>^2+1>
>>[n,d]=numden(x/y+y/x>%分式通分
n=
x^2+y^2
d=
x*y
下面是复合函数与反函数的例子:
>>clear。
symsxyzt。
>>f=1/(1+x^2>。
g=sin(y>。
>>A1=compose(f,g>%求复合函数
A1=
1/(sin(y>^2+1>
>>A2=compose(f,g,t>%求复合函数,变量用t表示
A2=
1/(sin(t>^2+1>
>>v=finverse(f>
Warning:
finverse(1/(x^2+1>>isnotunique.
>InD:
\toolbox\symbolic\@sym\finverse.matline43
v=
1/x*(-x*(x-1>>^(1/2>%结果不唯一。
5.3符号表达式中变量的确定
MATLAB中的符号可以表示符号变量和符号常量。
findsym可以帮助用户查找一个符号表达式中的的符号变量。
该函数的调用格式为:
findsym(s,n>
函数返回符号表达式s中的n个符号变量,若没有指定n,则返回s中的全部符号变量。
符号变量确定原则
(1>除了i和j之外,字母位置最接近x的字母;若距离相等,则取ASCII码大的;
(2>若没有除了i与j以外的字母,则视x为默认的符号变量;(微分方程视t为默认的符号变量>
>>symsabxy
>>findsym(3*a*b+y^2+1,1>
ans=
y
>>findsym(3*a*b+y^2+1>
ans=
a,b,y
5.4符号微积分
5.4.1符号极限
limit函数的调用格式为:
(1>limit(f,x,a>:
求符号函数f(x>的极限值。
即计算当变量x趋近于常数a时,f(x>函数的极限值。
(2>limit(f,a>:
求符号函数f(x>的极限值。
因为没有指定符号函数f(x>的自变量,则使用该格式时,符号函数f(x>的变量为函数findsym(f>确定的默认自变量,即变量x趋近于a。
(3>limit(f>:
求符号函数f(x>的极限值。
符号函数f(x>的变量为函数findsym(f>确定的默认变量;没有指定变量的目标值时,系统默认变量趋近于0,即a=0的情况。
(4>limit(f,x,a,'right'>:
求符号函数f的极限值。
'right'表示变量x从右边趋近于a。
(5>limit(f,x,a,‘left’>:
求符号函数f的极限值。
‘left’表示变量x从左边趋近于a。
例5-1求下列极限<改用课本例子)。
(1>
(2>
<3)
(4>
>>symshnx
>>L=limit('(log(x+h>-log(x>>/h',h,0>%单引号可省略掉
L=1/x
>>M=limit('(1-x/n>^n',n,inf>
M=exp(-x>
>>limit((1-cos(x>>/(x*sin(x>>,x,0>
ans=
1/2
>>symsx。
>>f=(sqrt(x>-sqrt(2>+sqrt(x-2>>/sqrt(x*x-4>。
>>limit(f,x,2,'right'>
ans=
1/2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 符号 计算
![提示](https://static.bingdoc.com/images/bang_tan.gif)