ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:91.33KB ,
资源ID:11336249      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11336249.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(matlab数学表达.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

matlab数学表达.docx

1、matlab数学表达MATLAB所具有的符号数学工具箱MATLAB所具有的符号数学工具箱与其它所有工具不同,它适用于广泛的用途,而不是针对一些特殊专业或专业分支。另外,MATLAB符号数学工具箱与其它的工具箱区别还因为它使用字符串来进行符号分析,而不是基于数组的数值分析。为此,本章包含了该工具箱的教学辅导材料。1、引言符号数学工具箱是操作和解决符号表达式的符号数学工具箱(函数)集合,有复合、简化、微分、积分以及求解代数方程和微分方程的工具。另外还有一些用于线性代数的工具,求解逆、行列式、正则型式的精确结果,找出符号矩阵的特征值而无由数值计算引入的误差。工具箱还支持可变精度运算,即支持符号计算并

2、能以指定的精度返回结果。符号数学工具箱中的工具是建立在功能强大的称作Maple软件的基础上。它最初是由加拿大的滑铁卢(Waterloo)大学开发的。当要求MATLAB进行符号运算时,它就请求Maple去计算并将结果返回到MATLAB命令窗口。因此,在MATLAB中的符号运算是MATLAB处理数字的自然扩展。2、符号表达式符号表达式是代表数字、函数、算子和变量的MATLAB字符串,或字符串数组。不要求变量有预先确定的值,符号方程式是含有等号的符号表达式。符号算术是使用已知的规则和给定符号恒等式求解这些符号方程的实践,它与代数和微积分所学到的求解方法完全一样。符号矩阵是数组,其元素是符号表达式。M

3、ATLAB在内部把符号表达式表示成字符串,以与数字变量或运算相区别;否则,这些符号表达式几乎完全象基本的MATLAB命令。表22.1列有几则符号表达式例子以及MATLAB等效表达式。表1符号表达式MATLAB表达式 1/(2*xn) y= 1/sqrt(2*x) cos(x2)-sin(2*x) M=sym( a,b;c,d )f=int( x3/sqrt(1-x) , a , b )MATLAB符号函数可让用户用多种方法来操作这些表达式,比如, diff( cos(x) ) % differentiate cos(x) with respect to xans= -sin(x) M=sym(

4、 a,b;c,d ) % create a symbolic matrix MM= a,b c,d determ(M) % find the determinant of the symbolic matrix Mans= a*d-b*c请注意,上面的第一个例子的符号表达式是用单引号以隐含方式定义的。它告诉MATLAB cos(x) 是一个字符串并说明diff( cosx )是一个符号表达式而不是数字表达式;然而在第二个例子中,用函数sym显式地告诉MATLAB M=sym( a,b;c,d )是一符号表达式。在MATLAB可以自己确定变量类型的场合下,通常不要求显式函数sym。MATLAB中

5、函数function argument形式是与function( argument )等价的。其中,function是一个函数,argument是一字符串。例如,MATLAB可以构造diff cos(x)和diff( cos(x) )两者都意味diff (sym cos(x) )。但第一种形式显然更便于输入。然而,很多时候sym是必要的。在上述的第二个例子中, M=a,b;c,d % M is a numeric matrix using value of a through d?Uundefine function or variable a. M= a,b;c,d % M is a cha

6、racter string, but not a symbolic matrixM= a,b;c,d M=sym( a,b;c,d ) % M is a symbolic matrixM= a,b c,dM以三种方式定义: 数字型(如果a、b、c、d已预先确定)、字符串型或符号矩阵型。许多符号函数非常巧妙能够自动将字符转变为符号表达式。但在某些情况下,尤其是建立符号数组时,必须用函数sym,特别地将字符串变为符号表达式。隐含形式,例如diff cos(x),对于那些不需要参考先前结果的简单任务,最有用。但是最简单形式(无引号)要求一个参量,它是一个单字符的字符串、不包含插入的空格。 diff

7、x2+3*x+5 % the argument is equivalent to x2+3*x+5 ans= 2*x+3 diff x2 + 3*x + 5 % spaces break the argument into separate strings?Error using=diffToo manyinput arguments无变量的符号表达式称作符号常量。符号常量常常与整数很难区别,例如 f=symop( (3*4-2)/5+1 ) % reduce a symbolic constant to its simplest formf = 3 isstr(f) % is f a str

8、ing? (1=yes, 0=no)ans= 1 在这个例子中,f代表符号常数 3 ;而不是数字3。正如第六章所阐述的,MATLAB是以字符ASCII码形式来存储字符串的。所以,如果对字符串进行数字运算,则在运算中,采用各字符串的ASCII码值。因为数字51是字符 3 的ASCII表示,所以f加1在数值上不能得到期望的结果 f+1ans= 52(1)符号变量当字符表达式中含有多于一个的变量时,只有一个变量是独立变量。如果不告诉MATLAB哪一个变量是独立变量,MATLAB将基于以下规则选择一个:在符号表达式中缺省的独立变量是唯一的,除去i和j的小写字母,不是单词的一部分。如果没有这种字母,就选

9、择x作为独立变量。如字符不是唯一的,就选择在字母顺序中最接近x的字母。如果有相连的字母,就选择在字母表中较后的那一个。缺省的独立变量,有时称作自由变量,在表达式 1/(5+cos(x) 中是 x ;在 3*y+z 中是 y ;在 a+sin(t) 是 t 。在表式 sin(pi/4)-cos(3/5) 中自由符号变量是 x ,因为此式是一个符号常数无符号变量。可利用函数symvar询问MATLAB在符号表达式中哪一个变量它认为是独立变量。 symvar( a*x+y*) % find the default symbolic variableans= x symvar( a*t+s/(u+3)

10、 ) % u is the closest to x ans= u symvar( sin(omega) ) % omega is not a singlee character。ans= x symvar( 3*i+4*j ) % i and j are equel to sqrt(-1)ans= x symvar( y+3*s , t ) % find the variable closest to t rather than xans= s如果利用规则symvar不能找到一个缺省独立变量,它便假定无独立变量并返回x。这一结论对含有由多个字母组成的变量,如:alpha或s2的表达式,或不含

11、变量的符号常数均成立。如果需要,绝大多数命令都使用用户选项以指定独立变量。 diff( xn ) % differentiate with respect to the default variable x ans= xn*n/x diff( xn , n ) % differentiate xn with respect to n ans= xn*log(x) diff( sin(omega) ) % differentiate using the default variables (x)ans= 0 diff( sin(omega) , omega ) % specify the ind

12、ependent variableans= cos(omega)(2)符号表达式运算一旦创建了一个符号表达式,或许想以某些方式改变它;也许希望提取表达式的一部分,合并两个表达式或求得表达的数值。有许多符号工具可以帮助完成这些任务。所有符号函数(很少特殊例外的情况,讨论于后)作用到符号表达式和符号数组,并返回符号表达式或数组。其结果有时可能看起来象一个数字,但事实上它是一个内部用字符串表示的一个符号表达式。正如我们前面所讨论的,可以运用MATLAB函数isstr来找出像似数字的表达式是否真是一个整数或是一个字符串。(A)提取分子和分母如果表达式是一个有理分式(两个多项式之比),或是可以展开为有理

13、分式(包括哪些分母为1的分式),可利用numden来提取分子或分母。例如,给定如下的表达式:在必要时,numden将表达式合并、有理化并返回所得的分子和分母。进行这项运算的MATLAB语句是: m= x2 % create a simple expression m= x2 n,d=numden(m) % extract the numerator and denominatorn= x2d= 1 f= a*x2/(b-x) % create a rational expressionf= a*x2/(b-x) n,d=numden(f) % extract the numerator and

14、 denominatorn= a*x2d= b-x前二个表达式得到期望结果。 g= 3/2*x2+2/3*x-3/5 % rationalize and extract the partsg= 3/2*x2+2/3*x-3/5 n,d=numden(g)n= 45*x2+20*x-18d= 30 h= (x2+3)/(2*x-1)+3*x/(x-1) % the sum of rational polynomialsh= (x2+3)/(2*x-1)+3*x/(x-1) n,d=numden(h) % rationalize and extractn= x3+5*x2-3d= (2*x-1)*

15、(x-1)在提取各部分之前,这二个表达式g和h被有理化,并变换成具有分子和分母的一个简单表达式。 k=sym( 3/2,(2*x+1)/3;4/x2,3*x+4 ) % try a symbolic arrayk= 3/2,(2*x+1)/3 4/x2, 3*x+4 n,d=numden(k)n= 3, 2*x+1 4, 3*x+4d= 2,3 x2,1这个表达式k是符号数组,numden返回两个新数组n和d,其中n是分子数组,d是分母数组。如果采用s=numden(f)形式,numden仅把分子返回到变量s中。(B)标准代数运算很多标准的代数运算可以在符号表达式上执行,函数symadd、sy

16、msub、symlnul和symdiv为加、减、乘、除两个表达式,sympow将一个表达式上升为另一个表达式的幂次。例如: 给定两个函数 f= 2*x2+3*x-5 % define the symbolic expressionf= 2*x2+3*x-5 g= x2-x+7 g= x2-x+7 symadd(f,g) % find an expression for f+g ans= 3*x2+2*x+2 symsub(f,g) % find an expression for f-gans= x2+4*x-12 symmul(f,g) % find an expression for f*

17、gans= (2*x2+3*x-5)*(x2-x+7) symdiv(f,g) % find an expression for f/gans= (2*x2+3*x-5)/(x2-x+7) sympow(f, 3*x ) % find an expression for ans= (2*x2+3*x-5)3*另一个通用函数可让用户用其它的符号变量、表达式和算子创建新的表达式。symop取由逗号隔开的、多至16个参量。各个参量可为符号表达式、数值或算子( + 、 - 、*、 / 、 、 ( 或 ) ),然后symop可将参量联接起来,返回最后所得的表达式. f= cos(x) % create

18、an expressionf= cos(x) g= sin(2*x) % create another expressiong= sin(2*x) symop(f,/ ,g,+,3) % combine themans= cos(x)/sin(2*x)+3所有这些运算也同样用数组参量进行。(C)高级运算MATLAB具有对符号表达式执行更高级运算的功能。函数compose把f(x)和g(x)复合成f(g(x)。函数finverse求表达式的函数逆,而函数symsum求表达式的符号和。给定表达式 f= 1/(1+x2) ; % create the four expression g= sin(x

19、) ; h= 1/(1+u2) ; k= sin(v) ; compose(f,g) % find an expression for f(g(x)ans= 1/(1+sin(x)2) compose(g,f) % find an expression for g(f(x)ans= sin(1/(1+x2)compose也可用于含有不同独立变量的函数表达式。 compose(h,k,u,v) % given h(u),k(v),find(k(v)ans= 1/(1+sin(v)2)表达式譬如f(x)的函数逆g(x),满足g(f(x)=x。例如,的函数逆是ln(x),因为ln()=x。sin(x

20、)的函数逆是arcsin(x),函数的函数逆是arcsin。函数fincerse返回表达式的函数逆。如果解不是唯一就给出警告。 finverse( 1/x) % the inverse of 1/x is 1/x since 1/(1/x)=x ans= 1/x finverse( x2 ) % g(x2)=x has more than one solutionWarning: finverse(x2) is not uniqueans= x(1/2) finverse( a*x+b ) % find the solution to g(f(x)=x ans= -(b-x)/a finver

21、se( a*b+c*d-a*z ), a ) % find the solution to g(f(a)=a ans= -(c*d-a)/(b-z)symsun函数求表达式的符号和有四种形式:symsun(f)返回;symsum(f, s )返回,symsun(f,a,b)返回;最普通的形式symsun(f, s ,a,b)返回。让我们试一试,它应返回:。 symsum(x2)ans= 1/3*x3-1/2* x2+1/6*x又怎么样呢?它应返回。 sym(2*n-1)2,1,n)ans= 11/3*n+8/3-4*(n+1)2+4/3*(n+1)3 factor(ans) % change

22、the form ( we will revisit factor later on)ans= 1/3*n*(2*n-1)*(2*n+1)最后让我们试一试,其返回应是。 symsum( 1/(2*n-1)2 ,1,inf)ans= 1/8*pi23、变换函数本节提出许多工具,将符号表达式变换成数值或反之。有极少数的符号函数可返回数值。然而请注意,某些符号函数能自动地将一个数字变换成它的符号表达式,如果该数字是函数许多参量中的一个。函数sym可获取一个数字参量并将其转换为符号表达式。函数numneric的功能正好相反,它把一个符号常数(无变量符号表达式)变换为一个数值。 phi= (1+sqrt

23、(5)/2 % the golden ratiophi= (1+sqrt(5)/2 % convert to a numeric value numeric(phi)ans= 1.6180函数eval将字符串传给MATLAB以便计算。所以eval是另一个可用于把符号常数变换为数字或计表达式的函数。 eval(phi) % execute the string (1+sqrt(5)/2ans= 1.6180正如所期望那样,numeric和eval返回相同数值。符号函数sym2poly将符号多项式变换成它的MATLAB等价系数向量。函数poly2syrn功能正好相反,并让用户指定用于所得结果表达式

24、中的变量。 f= 2*x2+x3-3*x+5 % f is the symbolic polynomialsf= 2*x2+x3-3*x+5 n=sym2poly(f) % extract eht numeric coefficient vectorn= 1 2 -3 5 poly2sym(n) % recreate the polynomials in x (the default)ans= 2*x2+x3-3*x+5 poly2sym(n, s ) % recreate the polynomials in sans= s3+2*s2-3*s+54、变量替换假设有一个以x为变量的符号表达式

25、,并希望将变量转换为y。MATLAB提供一个工具称作subs,以便在符号表达式中进行变量替换。其格式为subs(f,new,old),其中f是符号表达式,new和old是字符、字符串或其它符号表达式。新字符串将代替表达式f中各个旧字符串。以下有几个例子: f= a*x2+b*x+c % create a function f(x)f= a*x2+b*x+c subs(f, s , x ) % substitute s for x in the expression f ans= a*s2+b*s+c subs(f, alpha , a ) % substitute alpha for a in

26、 f ans= alpha*x2+b*x+c g= 3*x2+5*x-4 % create another functiong= 3*x2+5*x-4 h=subs(g, 2 , x ) % substitute 2 for x in g h= 18 isstr(h) % show that the result is a symbolic expressionans= 1最后一个例子表明subs如何进行替换,并力图简化表达式。因为替换结果是一个符号常数,MATLLAB可以将其简化为一个符号值。注意,因为subs是一个符号函数,所以它返回一个符号表达式。尽管看似数字,实质上是一个符号常数。为了

27、得到数字,我们需要使用函数numeric或eval来转换字符串。 numeric(h) % convert a symbolic expression to a numberans= 18 isstr(ans) % show that the result is a numeric valueans= 05、符号表达式画图在许多的场合,将表达式可视化是有利的。MATLAB提供了函数ezplot来完成该任务。 y= 16*x2+64*x+96 % expression to ploty= 16*x2+64*x+96 ezplot(y)图 符号函数16*x2+64*x+96 (-2x2)图 符号函

28、数16*x2+64*x+96 0x6正如图所示,ezplot绘制了定义域为-2x2的给定符号函数,并相应地调整了y轴比例,还加了网格栅和标志。在这个例子中,我们感兴趣的时间是从0到6。让我们再试一下,并指定时间范围, ezplot(y,0 6) % plot y for 0x6现在,在所感兴趣的范围内显示得略好些。一旦该图处在图形窗口内,它可以象其它图象一样作修改。6、可变精度算术运算因为数值的精度受每次操作所保留的数位的限制,所以数值的任何运算都会引入舍入误差,重复的多次数值运算会造成累积误差。而对符号表达式的运算是非常准确的,因为它们不需要进行数值运算,所以无舍入误差。对符号运算结果用函数eval或numeric,仅在结果转换时会引入舍入误差。MATLAB对数的处理完全依靠计算机的浮点算术运算,显然在内存中进行运算,又快又好,只是浮点运算受到所支持字长的限制,每次操作会引入舍入误差,所以不能产生精确的结果。MATLAB中各个算术运算的相对精度大约是16位。相反,Maple的符号处理能力可以实现任何数位的运算。当缺省的数位增加时,每次计算就需要附加时间和计算机内存。Maple缺省为16位的精度。函数digits返回全局Digits参数的当前值。Maple缺省准确度可以由digits(n)来改变,其中n是所期望的准确度数位。用这种方法增加准确度的副作用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1