资源描述:
《第4章MATLAB符号计算》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第四章MATLAB符号计算4.1符号计算基础4.2微分运算4.3积分运算4.4级数4.5求解方程4.6积分变换4.1符号计算基础符号对象的创建sym函数:用来创建单个符号变量syms函数:用来创建多个符号变量格式:a=sym(‘a’);symsabc:符号变量a和非符号变量a是不同的,非符号变量运算前必须赋值,变量的运算实际上是对应值的运算.符号变量运算前不需要赋值,结果为一个由参与运算的变量名组成的表达式.注意例:a=sym('a');b=sym('b');c=sym('c');d=sym('d');A=[a,b;c,d];A=[a,b][c,d]det(A)an
2、s=a*d-b*c注意:sym还可定义符号常数,但与数值常数有些差别a=sym(‘8’);b=8;sqrt(a);ans=2*2^(1/2)sqrt(b);ans=2.8284创建符号表达式方式:1、直接使用sym函数创建。2、使用已经定义的符号变量来创建。例:f=sym(‘a*x^2+b*x+c’);f=a*x^2+b*x+csymsabcxf=a*x^2+b*x+c创建符号矩阵与创建符号表达式第二种方法相近symsa11a12a13a21a22a23a31a32a33A=[a11a12a13;a21a22a23;a31a32a33]A=[a11,a12,a13]
3、[a21,a22,a23][a31,a32,a33]基本符号运算factor(f)对符号表达式或符号矩阵进行因式分解expand(f)对符号表达式或符号矩阵进行展开collect(f)对符号表达式或符号矩阵合并同类项collect(f,v)对符号表达式或符号矩阵按变量v进行合并同类项例symsx,y;f=(2*x+3*y)*(x+1);a=expand(f)a=2*x^2+2*x+3*y*x+3*ya=collect(a,x)a=2*x^2+(2+3*y)*x+3*yfactor(a)ans=(2*x+3*y)*(x+1)4.2微分运算符号运算的极限格式:limit
4、(f,x,a)说明:参数x,a可以省略,当x省略时按默认原则确定极限变量;当a省略时,matlab默认变量趋近于0.例:求极限symsx;limit(sin(x)/x,x,0);ans=1limit函数求单边极限格式:limit(f,x,a,’right’);limit(f,x,a,’lift’);例:求symsx;limit(1/x,x,0)ans=NaNlimit(1/x,x,0,’left’)ans=-inflimit(1/x,x,0,’right’)ans=inf符号函数的微分格式:diff(f,x,n)symsx;diff(x*cos(x),x)ans=c
5、os(x)-x*sin(x)diff(x*cos(x),x,2)ans=-2*sin(x)-x*cos(x)4.3积分运算符号函数的不定积分格式:int(f,x)例如:求不定积分symsxint(1/(x^2+1),x)ans=atan(x)symsxyf=int(x*y,x);f=1/2*x^2*yint(f,y)ans=1/4*x^2*y^2有时积分过于复杂,其积分未必存在,或存在但计算机无法找到他,MATLAB会简单的返回命令窗口,包含积分变量但未进行任何计算。当积分含有其他参变量时,当常数处理。注意符号函数的定积分int(f,x,a,b)例:symsxtf1
6、=x^2/(x+1);a1=int(f1,x,1,2)a1=log(3)+1/2-log(2)double(a1)ans=0.9055f2=1/(x^2+1);a2=int(f2,x,-inf,inf)a2=pif3=2*t*x;a3=int(f3,x,1,sin(t));a3=t*(sin(t)^2-1)4.4级数4.4.1泰勒级数泰勒级数可以将任意一个函数表示成幂级数,在多数工程运算中取幂级数的有限项即可。格式:taylor(f,x,n,a)将函数f按变量x展开为泰勒级数到第n项。(变量x的n-1次幂)n的默认值为6,参数a指定函数f在自变量a处展开,a的默认值
7、为0。例展开到第5项symsxf=(1+2*x+3*x^2)/(1-2*x-3*x^2);taylor(f,x,5);f=(1+2*x+3*x^2)/(1-2*x-3*x^2)ans=1+4*x+14*x^2+40*x^3+122*x^44.4.2级数的符号求和函数及格式symsum(a,v,m,n)a为通项,v为求和变量,省略时为默认变量,m和n为求和起始和终止项.例:求下列级数的和4.5求解方程代数方程函数:solve(f)函数默认参数是0,求解变量x例:求一元二次方程的解symsxabcy=a*x^2+b*x+c;solve(y);ans=[1/2/a*(