资源描述:
《第3章 符号运算.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第3章符号运算科学计算可分为两类:一类是纯数值的计算,例如求函数的值,以及方程的数值解等等;另一类计算是符号运算,又称代数运算,这是一种智能化的计算,处理的是符号。我们在数学的教学和研究中进行的数学运算多为符号运算。MATLAB中的符号数学工具箱(SymbolicMathToolbox)集成了丰富的符号运算功能。基本的符号数学工具箱包含100多个MATLAB函数,包括的内容有:微积分、线性代数、化简代数表达式、方程求解、特殊的数学函数、变量精度算法等等。【教学内容】符号变量、符号表达式和符号方程的生成符号变量的基本操作符号表达式的操作符号矩阵及符号数组的生成和运算符号极限
2、求解符号微分、求导和积分符号代数方程的求解图示化符号函数计算器的使用方法【学习目标】掌握符号变量和符号表达式的定义和基本操作。掌握符号矩阵的生成和运算方法。掌握符号微积分运算方法。掌握符号方程的求解方法。了解符号函数计算器的使用3.1符号变量、符号表达式和符号方程的生成符号数学工具箱定义了MATLAB的一个新的数据类型:符号对象(symbolicobject),其类型名标识为“sym”。符号对象内部的储存内容是字符串,用来表示符号变量、符号表达式以及矩阵等等。生成符号变量和符号表达式的函数是sym和syms。3.1.1使用sym函数生成符号变量和符号表达式sym函数可以生
3、成单个的符号数值、符号变量和符号表达式。格式为:S=sym(A),如果A为字符串,则返回的结果为一个符号变量或者一个符号数值;如果A是一个数字或矩阵,则返回结果为该参数的符号表示。x=sym(‘x’),创建一个符号变量,该变量的内容为x,表达为x。x=sym(‘x’,‘real’),指定符号变量x为实数。x=sym('x','unreal'),指定x为一个纯粹的变量,而不具有其他属性。【例3-1】使用sym函数创建符号变量和符号表达式。分别输入以下语句:x=sym('x')y=sym('hello')z=sym('(1+sqrt(5))/2')f=sym('a*x^2+b
4、*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运算,给出了错误信息。3.1.2使用syms函数定义符号变量和符号表达式syms函数可以一次创建多个符号变量,调用格式为:symsvar1,var2,var3...,变量名之间的间隔也可以是空格。【例3-2】使用syms函数定义符号变量和符号表达式。输入以下语句:symsabcxf=
5、a*x^2+b*x+cf-a返回结果为:f=a*x^2+b*x+cans=a*x^2+b*x+c-a与例3-1相比,本例中f-a运算成功。3.1.3符号方程的生成方程与函数的区别在于函数是由数字和变量组成的代数式,而方程则是包含了函数的等式,在MATLAB中,生成符号方程的方法与使用sym函数生成符号表达式类似。【例3-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=03.2符号变量的基本操作findsym函数用于寻找符号变量符号运算的精度确定数值型变量与符号型变量的转换形式fi
6、ndsym可以实现对表达式中所有自由变量或指定数目的独立自变量的自动认定。具体格式如下:findsym(S)寻找表达式S中所有符号变量;findsym(S,n)从表达式S中找出最靠近字母x的n个符号变量。若S中有两个符号变量与x的距离相等,ASCII码大者优先。常量pi,i,j不作为符号变量。3.2.1Findsym函数:寻找符号变量【例3-4】创建符号变量a,b,n,x和t,建立函数f=axn+bt,然后求f的默认自变量。输入以下语句:symsabntxf=a*x^n+b*tfindsym(f,1)findsym(f,5)%找出表达式f中按最接近字母x的顺序排列的5个默
7、认自变量findsym(f)%找出表达式f中按最接近字母顺序排列的全部符号变量返回结果依次为:f=a*x^n+b*tans=xans=x,t,n,b,aans=a,b,n,t,x3.2.2符号运算的精度确定MATLAB提供了digits和vpa函数,用以控制符号运算的精度。(1)digits函数用于规定运算精度,比如:digits(20);这个语句就规定了运算精度是20位有效数字。(2)vpa函数:凡是需要控制精度的,都对运算表达式使用vpa函数。【例3-5】控制运算精度为5位有效数字:>>digits(5)>> a=vpa(