资源描述:
《MATLAB的符号计算1(1).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、MATLAB的符号计算教学目标本章将介绍MATLAB的符号运算功能。通过对本章的学习,应掌握符号表达式和符号矩阵的操作、符号微积分、符号线性方程和符号微分方程等的运算。教学重点符号表达式和符号矩阵的操作符号微积分符号线性方程符号微分方程符号运算与数值运算的区别※数值运算中必须先对变量赋值,然后才能参与运算。※符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。MathWorks公司以Maple的内核作为符号计算引擎,依赖Maple已有的函数库,开发了实现符号计算的两个工具箱:基本符号工具箱和扩展符号工具箱.使得matlab不仅具有数值运算功能,还有符号计算的工具包Symbolic
2、MathToolbox,这个符号计算工具包是通过调用Maple软件实现符号计算的。maple软件——主要功能是符号运算,它占据符号软件的主导地位。一、符号计算基础(一)定义符号变量参与符号运算的对象可以是符号变量、符号表达式或符号矩阵。符号变量要先定义,后引用。可以用sym函数、syms函数将运算量定义为符号型数据。引用符号运算函数时,可以指定函数执行过程中的变量参数;若没有指定变量参数,则使用findsym函数默认的变量作为函数的变量参数。1、sym函数sym函数的主要功能是创建单个符号变量,符号字符串可以是常量、变量、函数或表达式,也可以用于创建符号表达式或符号矩阵。用sym函数创建符号
3、变量的一般格式为:x=sym(‘x’)目的是将’x’创建为符号变量,以x作为输出变量名。每次调用该函数,可以定义一个符号变量。【例】作符号计算:a,b,x,y均为符号运算量。在符号运算前,应先将a,b,x,y定义为符号运算量a=sym(‘a’);%定义‘a’为符号运算量,输出变量名为ab=sym(‘b’);x=sym(‘x’);y=sym(‘y‘);%(后面会介绍同时定义多个符号运算量的命令)[x,y]=solve(a*x-b*y-1,a*x+b*y-5,x,y)%以a,b为符号常数,x,y为符号变量即可得到方程组的解:x=3/a,y=2/b说明:如f=‘sin(x)+5x’,其中f——符号
4、变量名sin(x)+5x——符号表达式''——符号标识符号表达式一定要用''单引号括起来matlab才能识别。''的内容可以是符号表达式,也可以是符号方程。例:f1='ax^2+bx+c'——二次三项式f2='ax^2+bx+c=0'——方程f3='Dy+y^2=1'——微分方程※符号表达式或符号方程可以赋给符号变量,以后调用方便;也可以不赋给符号变量直接参与运算2、syms函数函数sym一次只能定义一个符号变量,使用不方便。MATLAB提供了另一个函数syms,一次可以定义多个符号变量。syms函数的功能与sym函数类似,其一般格式为:symsarg1arg2…argN用于将arg
5、1,arg2,…,argN等符号创建为符号型数据。用这种格式定义符号变量时不要在变量名上加字符串分界符(‘),变量间用空格而不要用逗号分隔。(二)默认符号变量在数学表达式中,一般习惯于使用排在字母表中前面的字母作为变量的系数,而用排在后面的字母表示变量。例如:f=ax2+bx+c表达式中的a,b,c通常被认为是常数,用作变量的系数;而将x看作自变量。例如,数学表达式f=x^ng=sin(at+b)根据数学式中表示自变量的习惯,默认a,b,c为符号常数,x为符号变量。若在MATLAB中表示上述表达式,首先用syms函数定义a,b,n,t,x为符号对象。在进行导数运算时,由于没有指定符号变量,则
6、系统采用数学习惯来确定表达式中的自变量,默认a,b,c为符号常数,x,t为符号变量。即:对函数f求导为:df/dx对函数g求导为:dg/dt(三)符号变量的基本操作findsym函数用于寻找符号变量数值型变量与符号型变量的转换形式符号表达式中变量的确定为了了解函数引用过程中使用的符号变量个数及变量名,可以用findsym函数查询默认的变量。该函数的引用格式为:findsym(f,n)该函数返回符号表达式f中的n个符号变量.f为用户定义的符号函数,n为正整数,表示查询变量的个数。n=i表示查询i个系统默认变量。n值省略时表示查询符号函数中全部系统默认变量。例用findsym函数寻找符号变量>>
7、symsaalphabx1y>>findsym(alpha+a+b)ans=a,alpha,b>>findsym(cos(alpha)*b*x1+14*y,2)ans=x1,y>>findsym(y*(4+3*i)+6*j)ans=y例查询符号函数f=x^n,g=sin(at+b)中的系统默认变量。symsabntx%定义符号变量f=x^n;%给定符号函数g=sin(a*t+b);findsym(f,1)%在