第五章MATLAB符号计算

上传人:宝路 文档编号:18196372 上传时间:2017-11-13 格式:DOC 页数:23 大小:420.49KB
返回 下载 相关 举报
第五章MATLAB符号计算_第1页
第1页 / 共23页
第五章MATLAB符号计算_第2页
第2页 / 共23页
第五章MATLAB符号计算_第3页
第3页 / 共23页
第五章MATLAB符号计算_第4页
第4页 / 共23页
第五章MATLAB符号计算_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《第五章MATLAB符号计算》由会员分享,可在线阅读,更多相关《第五章MATLAB符号计算(23页珍藏版)》请在金锄头文库上搜索。

1、第 5 章 MATLAB 符号计算Matlab 本身并没有符号计算功能,1993 年通过购买 Maple 的使用权后,开始具备符号运算的功能符号运算的类型很多,几乎涉及数学的所有分支符号运算使用一种特殊的数据类型,称为符号对象(Symbolic Object),用字符串形式表达,但又不同于字符串(Char Array)。符号中的变量,函数和表达式都是符号对象。5.1 符号对象的定义5.1.1 建立符号变量MATLAB 提供了两个建立符号对象的函数: sym 和 syms,两个函数的用法不同。1. sym 函数sym 函数用来建立单个符号对象,一般调用格式为:符号对象名=sym( 符号字符串 )

2、该函数可以建立一个符号对象,符号字符串可以是常量、变量、函数或表达式。符号对象名=sym(num,d) 该函数将数值表达式 num 转化为符号表达式,数值用十进制表示;试比较分析下列命令: a=pi2, b=pi2, c=sym(pi2),d= sym(pi2,d), e=sym(b)a=pi2 %结果为一个数a =9.8696b=pi2 %结果为一个字符串b =pi2c=sym(pi2) %数值转化为符号对象,有理表示!c =5556093337880030*2(-49)c=sym(pi2,d) %数值转化为符号对象,十进制表示!c =9.86960440108935799230494012

3、59050e=sym(b) %或 e=sym(pi2) 字符串转化为符号对象e =pi22. syms 函数函数 sym 一次只能定义一个符号变量 ,使用不方便。MATLAB 提供了另一个函数syms,一次可以定义多个符号变量(对象) 。syms 函数的一般调用格式为:syms 符号变量名 1 符号变量名 2 符号变量名 n用这种格式定义符号变量时不要在变量名上加字符串分界符(),变量间用空格而不要用逗号分隔。syms x y zh=x3+2*y2+eh =x3+2*y2+pi25.1.2 建立符号表达式含有符号对象的表达式称为符号表达式。建立符号表达式有以下 3 种方法:(1)利用单引号来生

4、成符号表达式。(2)用 sym 函数建立符号表达式。(3)使用已经定义的符号变量组成符号表达式。A=c b;e-h h-x3A = 5556093337880030*2(-49), pi2 -x3-2*y2, 2*y2+pi25.1.3 计算精度和数据类型转换 利用函数 sym 可以将数值表达式变换成它的符号表达式 ,函数 numeric 或 eval 可以将符号表达式变换成数值表达式。double(s) 将符号对象转化为双精度数值char(s) 将符号对象转化为字符串digits(n) 将数值计算精度设为 n 位;x=vpa(s) 求 s 的数值结果x=vpa(s,n) 采用 n 位计算精度

5、求 s 的数值结果210000ans =Infa=sym(2);b=a10000b =199506311688075838488374216268709376 %很长的整数,准确的,而不是近似的vpa(b)ans =.19950631168807583848837421626836e3011 format long;pi2,format short %用长格式显示 pi 的值,再恢复为短格式ans =9.86960440108936试比较以下 C=PI2 的显示结果。c=sym(pi2);vpa(c,16) %16 位ans =9.869604401089357vpa(c) %32 位,默认a

6、ns =9.8696044010893586188344909998761vpa(c,100) %100 位,高精度ans =9.869604401089358618834490999876151135313699407240790626413349376220044822419205243001773403718552232vpa(c,2) %2 位,低精度ans =9.6double(c) %双精度,数值 ans =9.8696syms x; f=sym(x3-1)f =x3-1fun=inline(f)fun =Inline function:fun(x) = x.3-15.2 符号矩阵

7、和符号函数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,ABans = d/(a*d-b*c)/a, -1/(a*d-b*c) -1/(a*d-b*c), a/(a*d-b*c)/dans = (d2+b*c)/(d2*a2-2*a*d*b*c+b2*c2), -b*(a+d)/(d2*a2-2*a*d*b*c+b2*c2) -c*(a+d)/(d2*a2-

8、2*a*d*b*c+b2*c2), (b*c+a2)/(d2*a2-2*a*d*b*c+b2*c2)A*Bans = 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*(d2-2*a*d+a2+4*b*c)(1/2) 1/2*d+1/2*a-1/2*(d2-2*a*d+a2+4*b*c)(1/2)2.符号函数计算大部分 MATLAB 的数学函数和逻辑关系运算也可以用于符号对象,另外还有:factor(expr) 对 expr 作因式分解expand(expr) 将 e

9、xpr 展开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

10、, g(x,y) = (x+y)3,s=x6+1; 考虑相关的运算,如求 h= f*g 并展开。clear;syms x y z ;f=(x-y)3;g=(x+y)3;h=f*g %两函数相乘h =(x-y)3*(x+y)3hs=expand(h) %函数展开hs =x6-3*x4*y2+3*x2*y4-y6s=x6+1;sf=factor(s) %因式分解sf =(x2+1)*(x4-x2+1)sz=subs(sf,x,z2+z+1) %用 z2+z+1 替换 sf 中的 xsz =(z2+z+1)2+1)*(z2+z+1)4-(z2+z+1)2+1)n,d=numden(x/y+y/x)

11、%分式通分n =x2+y2d =x*y下面是复合函数与反函数的例子:clear;syms x y z t;f=1/(1+x2);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/(x2+1) is not unique.In D:toolboxsymbolicsymfinverse.m at line 43v =1/x*(-x*(x-1)(1/2) %结果不唯一。5.3 符号表达式中变

12、量的确定MATLAB 中的符号可以表示符号变量和符号常量。 findsym 可以帮助用户查找一个符号表达式中的的符号变量。该函数的调用格式为:findsym(s,n)函数返回符号表达式 s 中的 n 个符号变量,若没有指定 n,则返回 s 中的全部符号变量。符号变量确定原则(1)除了 i 和 j 之外,字母位置最接近 x 的字母;若距离相等,则取 ASCII 码大的;(2)若没有除了 i 与 j 以外的字母,则视 x 为默认的符号变量;(微分方程视 t 为默认的符号变量)syms a b x yfindsym(3*a*b+y2+1,1)ans =yfindsym(3*a*b+y2+1)ans

13、=a, b, y5.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 的

14、情况。(4)limit(f,x,a,right):求符号函数 f 的极限值。right 表示变量 x 从右边趋近于 a。(5)limit(f,x,a,left):求符号函数 f 的极限值。 left表示变量 x 从左边趋近于 a。例 5-1 求下列极限(改用课本例子) 。(1) (2)hxh)ln(l(im0nnx)1(i(3) (4)xxsico1l0 4222lxxsyms h n xL=limit(log(x+h)-log(x)/h,h,0) %单引号可省略掉L =1/xM=limit(1-x/n)n,n,inf) M=exp(-x) limit(1-cos(x)/(x*sin(x),x,0)ans =1/2syms x;f=(sqrt(x)-sqrt(2)+sqrt(x-2)/sqrt(x

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号