版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章符号运算科学计算可分为两类:一类是纯数值的计算,例如求函数的值,以及方程的数值解等等;另一类计算是符号运算,又称代数运算,这是一种智能化的计算,处理的是符号。符号可以代表整数、有理数、实数和复数,也可以代表多项式、函数,还可以代表数学结构,如集合、群的表示等等。我们在数学的教学和研究中进行的数学运算多为符号运算。MATLAB中的符号数学工具箱(SymbolicMathToolbox)集成了丰富的符号运算功能。基本的符号数学工具箱包含100多个MATLAB函数,包括的内容有:微积分、线性代数、化简代数表达式、方程求解、特殊的数学函数、变量精度算法和数学变换等等。【学习目标】掌握对符号变量的定义和基本操作。掌握对符号表达式的定义和基本操作。掌握符号矩阵的生成和运算方法。了解符号微分、符号积分运算方法。掌握符号方程的求解方法。6.1符号变量、符号表达式和符号方程的生成符号数学工具箱定义了MATLAB的一个新的数据类型:符号对象(symbolicobject),其类型名标识为“sym”。符号对象内部的储存内容是字符串,用来表示符号变量、符号表达式以及矩阵等等。生成符号变量和符号表达式的函数是sym和syms。6.1.1使用sym函数生成符号变量和符号表达式sym函数可以生成单个的符号数值、符号变量和符号表达式。格式为:S=sym(x)它生成了一个符号对象S。x可以是字符、字符串、表达式或字符表达式等等。如果x是一个数值,则得到该数值的符号表示。如果x是一个字符串,则可生成一个符号变量或符号表达式。例如,>>sqrt(2)ans=1.4142>>aa=sqrt(sym(2))ans=2^(1/2)sqrt(2)是对数值2进行开方运算;而在式aa=sqrt(sym(2))中,将2用sym命令转化为符号对象,这样,就得到了使用字符串形式表示的“根号2”。可使用double命令获取符号对象aa对应的数值运算结果。>>double(aa)ans=1.4142如果表达式里面的元素都定义为符号对象,则表达式之间还可以按代数规则进行运算。比如:>>sym(2)/sym(5)+sym(1)/sym(3)ans=11/15【例6-1】使用sym函数创建符号变量和符号表达式。分别输入以下语句:x=sym('x')y=sym('hello')z=sym('(1+sqrt(5))/2')f=sym('a*x^2+b*x+c')f-a返回结果依次为:x=xy=helloz=(1+sqrt(5))/2f=a*x^2+b*x+c???Undefinedfunctionorvariable'a'.本例中,虽然符号表达式a*x^2+b*x+c创建成功并将其赋予变量f,但并没有定义符号变量a,因此系统不能进行f-a运算,给出了错误信息。6.1.2使用syms函数定义符号变量和符号表达式syms函数可以一次创建多个符号变量,调用格式为:symsvar1,var2,var3...
,变量名之间的间隔也可以是空格。【例6-2】使用syms函数定义符号变量和符号表达式。输入以下语句:symsabcxf=a*x^2+b*x+cf-a返回结果为:f=a*x^2+b*x+cans=a*x^2+b*x+c-a与例6-1相比,本例中f-a运算成功。6.1.3符号方程的生成方程与函数的区别在于函数是由数字和变量组成的代数式,而方程则是包含了函数的等式,在MATLAB中,生成符号方程的方法与使用sym函数生成符号表达式类似。【例6-3】用sym生成符号方程:
a*x^2+b*x+c=0。>>e1=sym('a*x^2+b*x+c=0')结果为:
e1=a*x^2+b*x+c=06.3符号表达式的基本操作用户可以对符号表达式进行各种操作,包括四则运算、合并同类项、多项式分解和简化等。6.3.1四则运算符号表达式也与通常的算术表达式一样,可以进行加、减、乘、除等四则运算。【例6-7】符号表达式的四则运算输入以下语句:symsxyabfun1=sin(x)+cos(y)fun2=a+bfun3=fun1*fun2转换结果为:fun1=sin(x)+cos(y)fun2=a+bfun3=(sin(x)+cos(y))*(a+b)6.3.2符号多项式的因式分解与展开MATLAB提供了对符号多项式进行因式分解与展开的函数,函数的调用格式为:factor(S):对符号多项式S分解因式。expand(S):对符号多项式S进行展开。collect(S):对符号多项式S按照默认变量x合并同类项。collect(S,v):对符号多项式S按变量v合并同类项。horner(f):将一般的符号多项式f转换成嵌套形式。【例6-8】对表达式f=a^3-1进行因式分解。输入:f=sym('a^3-1');factor(f)结果为:ans=(a-1)*(a^2+a+1)如果用syms命令如何定义函数?【例6-9】展开表达式f=(x+1)^5和f=sin(x-y)输入:>>symsxy>>f=(x+1)^5;>>expand(f)返回结果为:ans=x^5+5*x^4+10*x^3+10*x^2+5*x+1>>f=sin(x-y);>>expand(f)返回结果为:ans=sin(x)*cos(y)-cos(x)*sin(y)【例6-10】符号多项式的同类项合并。(自学)输入:f=sym('(exp(x)+x)*(x+2)*(y+1)');c1=collect(f)c2=collect(f,y)c3=collect(f,exp(x))返回结果为:c1=(y+1)*x^2+(exp(x)+2)*(y+1)*x+2*exp(x)*(y+1)c2=(exp(x)+x)*(x+2)*y+(exp(x)+x)*(x+2)c3=(x+2)*(y+1)*exp(x)+x*(x+2)*(y+1)我们分别按不同的变量进行同类项合并,得到了不同的结果。6.3.3提取有理式的分子和分母(自学)如果符号表达式是一个有理分式或可以展开为有理分式,可利用numden函数来提取符号表达式S中的分子和分母。其一般调用格式为:[n,d]=numden(S)该函数提取符号表达式S的分子(numerator)和分母(denominator),分别将它们存放在n与d中。【例6-12】求有理式f=x/y+y/x分子和分母。输入:symsxyf=x/y+y/x;[n,d]=numden(f)返回结果为:n=x^2+y^2d=y*x6.3.4符号表达式的化简在MATLAB中,使用simplify函数和simple函数对符号表达式进行化简。下面对它们进行分别介绍。1.simplify函数simplify函数利用Maple的化简规则对符号表达式进行化简。其中用到大量的代数恒等式以及大量的函数恒等式,包括求和、整数幂、开方、分数幂、三角函数、指数函数、对数函数、贝塞尔函数、超几何分布函数、伽马函数等等,力求得到最简结果。【例6-13】用simplify函数化简符号表达式。输入:f=sym('sin(x)^2+cos(x)^2');S=sym('exp(c*log(sqrt(a+b)))');simplify(f)simplify(S)返回结果为:ans=1ans=(a+b)^(1/2*c)2.simple函数的使用simple(f)也是一种化简的函数,它尝试用多种不同的化简算法对符号表达式进行化简,以找到对应的最简形式,其格式如下:[r,how]=simple(f)返回的r为化简后的符号表达式,how为所采用的简化方法。如果不指定输出项r和how,则会输出尝试的所有化简方法名称及对应的化简结果。【例6-14】用simple(f)函数化简符号表达式14*x^2/(22*x*y)输入:S=sym('14*x^2/(22*x*y)');[r,how]=simple(S)返回结果为:r=7/11*x/yhow=simplify6.4符号矩阵的生成和运算6.4.1符号矩阵的生成在MATLAB中,符号矩阵的生成与数值矩阵的相关操作很相似。创建符号矩阵的方法有以下几种:用sym命令直接创建符号矩阵;用类似创建普通数值矩阵的方法创建符号矩阵;由数值矩阵转换为符号矩阵。符号矩阵的输出格式与数值矩阵有所不同,其每一行用“[]”标记。1.用sym命令直接创建符号矩阵这时sym命令的使用方法与前面创建符号表达式及方程的用法类似。所创建的符号矩阵的元素可以是任何符号对象,且元素的长度允许不同。在输入格式上,矩阵行之间以“;”分割,各矩阵元素之间用“,”或空格分隔。【例6-18】用sym函数创建符号矩阵。>>A=sym('[a,b;c,d]')A=[a,b][c,d]>>B=sym(‘[x+3*x,5*z+6*z;y-y,z/z]’)B=[x+3*x,5*z+6*z][y-y,z/z]2.以数值矩阵生成方法创建符号矩阵用这种方法创建符号矩阵之前,需要预先定义所有需要的符号变量。【例6-19】用生成数值矩阵的方法创建符号矩阵>>symsxyz>>B=[x+3*x,5*z+6*z;y-y,z/z]B=[4*x,11*z][0,1]3.由数值矩阵转换为符号矩阵由于数值型对象和符号型对象分属于两个不同的数据类型,它们之间不能直接运算,但却可以相互转换。将数值对象M转化为符号对象S时,可以应用sym函数,格式为:S=sym(M)【例6-20】使用sym函数将3阶Hilbert矩阵转换为符号矩阵。>>h=hilb(3)h=1.00000.50000.33330.50000.33330.25000.33330.25000.2000>>h1=sym(h)h1=[1,1/2,1/3][1/2,1/3,1/4][1/3,1/4,1/5]>>S=rand(2)S=0.81470.12700.90580.9134>>S1=sym(S)S1=[7338378580900475*2^(-53),4575182228323196*2^(-55)][8158648460577917*2^(-53),8226958330713791*2^(-53)]从本例可以看出,不管原来数值矩阵M是以分数还是浮点数形式赋值的,但当它被转化为符号矩阵后,都将以最接近原数的精确有理式给出。6.4.2符号矩阵的运算(自学)符号矩阵的运算方法与数值矩阵类似,我们将常见的运算类型概述如下(设A和B是已存在的两个符号矩阵):1.A+B、A-B符号阵列的加法与减法。若A与B为同型阵列时,A+B、A-B分别对对应元素进行加减;若A与B中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的元素进行加减。2.A*B,符号矩阵乘法。为线性代数中定义的矩阵乘法。按乘法定义要求必须有矩阵A的列数等于矩阵B的行数,或者至少有一个为标量时,方可进行乘法操作,否则将返回一出错信息。3.A.*B,对应元素相乘。A.*B为按参量A与B对应的元素进行相乘。A与B必须为同型阵列,或至少有一个为标量。6.5符号微积分微积分是高等数学的基础,MATLAB的符号数学工具箱提供了许多关于微积分计算的功能。6.5.1符号极限limit函数用来求符号函数的极限。其格式如下:limit(F,x,a)计算符号表达式F在x→a条件下的极限;limit(F,a)计算符号表达式F中由默认自变量趋向于a条件下的极限;limit(F)计算符号表达式F在默认自变量趋向于0条件下的极限;limit(F,x,a,‘right’)和limit(F,x,a,’left’)计算符号表达式F在x→a条件下的右极限和左极限。【例6-22】分别计算表达式,,分别输入下列语句:symsxlimit(sin(x)/x)limit(1/x,x,0,'right')limit(1/x,x,0,'left')返回结果依次为:ans=1ans=infans=-inf6.5.2符号微分(自学)diff函数用来求符号微分,其格式如下:diff(S),求符号表达式S对于默认自变量的微分;diff(S,‘v’),求符号表达式S对于自变量v的微分;diff(S,n),求符号表达式S对于默认自变量的n次微分;diff(S,‘v’,n),求符号表达式S对自变量v的n次微分。【例6-23】符号表达式的微分运算。>>S1=sym('6*x^3-4*x^2+b*x-5');>>S2=sym('sin(a)');>>S3=sym('(1-t^3)/(1+t^4)');>>diff(S1)ans=18*x^2-8*x+b
>>diff(S1,2)
ans=36*x-8>>diff(S1,'b')ans=x>>diff(S2)ans=cos(a)>>diff(S3)ans=-3*t^2/(1+t^4)-4*(1-t^3)/(1+t^4)^2*t^3>>simplify(diff(S3))ans=t^2*(-3+t^4-4*t)/(1+t^4)^26.5.3符号积分(自学)int函数用来求解符号积分,其格式如下:int(S),求符号表达式S对于默认自变量的不定积分;int(S,’v’),求符号表达式S对于自变量v的不定积分;int(S,a,b),求符号表达式S对于默认自变量从a到b的定积分;int(S,’v’,a,b),求符号表达式S中自变量v计算从a到b的定积分。6.6符号积分变换(自学)在科学计算和各种工程实际中,常常要用到各种积分变换,比较常见的有Fourier变换、Laplace变换和z变换等。下面分别对他们进行介绍。6.7符号方程的求解6.7.1代数方程求解MATLAB的符号数学工具箱提供了solve函数对代数方程求解。其格式如下:g=solve(eq),求解代数方程eq=0,自变量为默认自变量;g=solve(eq,var),求解代数方程eq=0,自变量为var;g=solve(eq1,eq2,…,eqn,var1,var2,…,varn)),求解符号表达式eq1,eq2,…eqn组成的代数方程组,自变量分别为var1,var2,…varn。方程组的解将存入结构变量g。【例6-31】求一元二次方程a*x^2+b*x+c=0的根.>>f=sym('a*x^2+b*x+c');>>solve(f)%以x为自变量,求解方程f=0ans=1/2/a*(-b+(b^2-4*a*c)^(1/2))1/2/a*(-b-(b^2-4*a*c)^(1/2))>>solve(f,a)%以a为自变量,求解方程f=0ans=-(b*x+c)/x^2【例6-32】求解由方程x^2-y^2+z=10,x+y-5z=0,2x-4y+z=0构成的线性方程组。依次输入以下语句:sym
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 16 太阳 教案 统编版五年级语文上册
- 2024年九年级道德与法治下册 第一单元 我们共同的世界 第一课 同住地球村 第2框 复杂多变的关系说课稿 新人教版
- 2 学会宽容 第一课时 说课稿-2023-2024学年道德与法治六年级下册统编版
- 2025如何写农村土地承包合同范文
- 2025服装代理商合同协议书范本
- 2《花的学校》说课稿-2024-2025学年统编版语文三年级上册
- 隧道拆除专项施工方案
- 2024年五年级数学上册 二 小数乘法 2小数的乘法第2课时 小数乘小数说课稿 冀教版
- 军训训合同范例
- 黔江办公室铝扣板施工方案
- 做投标文件培训
- 9.4+跨学科实践:制作简易活塞式抽水机课件+-2024-2025学年人教版物理八年级下册
- 建筑工程工作计划
- 2025年中国国际投资促进中心限责任公司招聘管理单位笔试遴选500模拟题附带答案详解
- 瓶装液化气送气工培训
- 外科护理课程思政课程标准
- 船舶航行安全
- 道德经全文完整版本
- 9.2溶解度(第1课时饱和溶液不饱和溶液)+教学设计-2024-2025学年九年级化学人教版(2024)下册
- 2024年审计局公务员招录事业单位招聘考试招录139人完整版附答案【研优卷】
- 潍坊市人民医院招聘真题
评论
0/150
提交评论