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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

MATLAB符号计算与数值计算之转换.docx

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

2、提取分子或分母。例如,给定如下的表达式:在必要时,numden将表达式合并、有理化并返回所得的分子和分母。进行这项运算的MATLAB语句是:view plaincopy to clipboardprint?m=x2%createasimpleexpression m= x2 n,d=numden(m)%extractthenumeratoranddenominator n= x2 d= 1 f=a*x2/(b-x)%createarationalexpression f= a*x2/(b-x) n,d=numden(f)%extractthenumeratoranddenominator n=

3、 a*x2 d= b-x 前二个表达式得到期望结果。view plaincopy to clipboardprint?g=3/2*x2+2/3*x-3/5%rationalizeandextracttheparts g= 3/2*x2+2/3*x-3/5 n,d=numden(g) n= 45*x2+20*x-18 d= 30 h=(x2+3)/(2*x-1)+3*x/(x-1)%thesumofrationalpolynomials h= (x2+3)/(2*x-1)+3*x/(x-1) n,d=numden(h)%rationalizeandextract n= x3+5*x2-3 d=

4、(2*x-1)*(x-1) 在提取各部分之前,这二个表达式g和h被有理化,并变换成具有分子和分母的一个简单表达式。view plaincopy to clipboardprint?k=sym(3/2, (2*x+1)/3;4/x2,3*x+4)%tryasymbolicarray k= 3/2,(2*x+1)/3 4/x2,3*x+4 n,d=numden(k) n= 3,2*x+1 4,3*x+4 d= 2,3 x2,1 这个表达式k是符号数组,numden返回两个新数组n和d,其中n是分子数组,d是分母数组。如果采用s=numden(f)形式,numden仅把分子返回到变量s中。标准代数运

5、算很多标准的代数运算可以在符号表达式上执行,函数symadd、 symsub、symlnul和symdiv为加、减、乘、除两个表达式,sympow将一个表达式上升为另一个表达式的幂次(MATLAB 7.中不可用)。例如: 给定两个函数view plaincopy to clipboardprint?f=2*x2+3*x-5%definethesymbolicexpression f= 2*x2+3*x-5 g=x2-x+7 g= x2-x+7 symadd(f,g)%findanexpressionforf+g ans= 3*x2+2*x+2 symsub(f,g)%findanexpress

6、ionforf-g ans= x2+4*x-12 symmul(f,g)%findanexpressionforf*g ans= (2*x2+3*x-5)*(x2-x+7) symdiv(f,g)%findanexpressionforf/g ans= (2*x2+3*x-5)/(x2-x+7) sympow(f,3*x)%findanexpressionforans= (2*x2+3*x-5)3* 另一个通用函数可让用户用其它的符号变量、表达式和算子创建新的表达式。 symop取由逗号隔开的、多至16个参量。各个参量可为符号表达式、 数值或算子( + 、 - 、*、 / 、 、 ( 或 )

7、),然后symop可将参量联接起来,返回最后所得的表达式.view plaincopy to clipboardprint?f=cos(x)%createanexpression f= cos(x) g=sin(2*x)%createanotherexpression g= sin(2*x) symop(f,/,g,+,3)%combinethem ans= cos(x)/sin(2*x)+3 所有这些运算也同样用数组参量进行。高级运算MATLAB具有对符号表达式执行更高级运算的功能。函数compose把 f(x)和g(x)复合成f(g(x)。函数finverse求表达式的函数逆,而函数sym

8、sum求表达式的符号和。给定表达式view plaincopy to clipboardprint?f=1/(1+x2);%createthefourexpression g=sin(x); h=1/(1+u2); k=sin(v); compose(f,g)%findanexpressionforf(g(x) ans= 1/(1+sin(x)2) compose(g,f)%findanexpressionforg(f(x) ans= sin(1/(1+x2) compose也可用于含有不同独立变量的函数表达式。view plaincopy to clipboardprint?compose(

9、h,k,u,v)%givenh(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)的函数逆是arcsin(x),函数 的函数逆是arcsin 。函数fincerse返回表达式的函数逆。如果解不是唯一就给出警告。view plaincopy to clipboardprint?finverse(1/x)%theinverseof1/xis1/xsince1/(1/x)=x ans= 1/x finverse(x2)%g(x2)=xhasmorethanon

10、esolution Warning:finverse(x2)isnotunique ans= x(1/2) finverse(a*x+b)%findthesolutiontog(f(x)=x ans= -(b-x)/a finverse(a*b+c*d-a*z),a)%findthesolutiontog(f(a)=a ans= -(c*d-a)/(b-z) symsun函数求表达式的符号和有四种形式:symsun(f)返回 ;symsum(f, s )返回 ,symsun(f,a,b)返回 ;最普通的形式symsun(f, s ,a,b)返回。让我们试一试 ,它应返回: 。view plai

11、ncopy to clipboardprint?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)%changetheform(wewillrevisitfactorlateron) ans= 1/3*n*(2*n-1)*(2*n+1) 最后让我们试一试,其返回应是。 symsum(1/(2*n-1)2,1,inf) ans= 1/8*pi2 变换函数本节提出许多工具,将符号表达式变换成数值或反之。有极少数的符号函数可返回

12、数值。然而请注意,某些符号函数能自动地将一个数字变换成它的符号表达式,如果该数字是函数许多参量中的一个。函数sym可获取一个数字参量并将其转换为符号表达式。函数 numneric的功能正好相反,它把一个符号常数(无变量符号表达式)变换为一个数值。view plaincopy to clipboardprint?phi=(1+sqrt(5)/2%thegoldenratio phi= (1+sqrt(5)/2%converttoanumericvalue numeric(phi) ans= 1.6180 正如第六章所介绍,函数eval将字符串传给MATLAB以便计算。所以 eval是另一个可用于

13、把符号常数变换为数字或计算表达式的函数。 eval_r(phi) % execute the string (1+sqrt(5)/2ans=1.6180正如所期望那样,numeric和eval返回相同数值。符号函数sym2poly将符号多项式变换成它的MATLAB等价系数向量。函数poly2syrn功能正好相反,并让用户指定用于所得结果表达式中的变量。view plaincopy to clipboardprint?f=2*x2+x3-3*x+5%fisthesymbolicpolynomials f= 2*x2+x3-3*x+5 n=sym2poly(f)%extractehtnumeric

14、coefficientvector n= 12-35 poly2sym(n)%recreatethepolynomialsinx(thedefault) ans= 2*x2+x3-3*x+5 poly2sym(n,s)%recreatethepolynomialsins ans= s3+2*s2-3*s+5 变量替换假设有一个以x为变量的符号表达式,并希望将变量转换为y。MATLAB提供一个工具称作subs,以便在符号表达式中进行变量替换。其格式为 subs(f,old,new),其中f是符号表达式,new和old是字符、字符串或其它符号表达式。新字符串将代替表达式f中各个旧字符串。以下有几个

15、例子:view plaincopy to clipboardprint?f=a*x2+b*x+c%createafunctionf(x) f= a*x2+b*x+c subs(f,s,x)%substitutesforxintheexpressionf ans= a*s2+b*s+c subs(f,alpha,a)%substitutealphaforainf ans= alpha*x2+b*x+c g=3*x2+5*x-4%createanotherfunction g= 3*x2+5*x-4 h=subs(g,2,x)%substitute2forxing h= 18 isstr(h)%s

16、howthattheresultisasymbolicexpression ans= 1 最后一个例子表明subs如何进行替换,并力图简化表达式。因为替换结果是一个符号常数,MATLLAB可以将其简化为一个符号值。注意,因为 subs是一个符号函数,所以它返回一个符号表达式。尽管看似数字,实质上是一个符号常数。为了得到数字,我们需要使用函数numeric或eval来转换字符串。view plaincopy to clipboardprint?numeric(h)%convertasymbolicexpressiontoanumber ans= 18 isstr(ans)%showthattheresultisanumericvalue ans= 0

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

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