资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,MATLAB,软件使用简介,之二,1,14.2 符号运算功能,一、符号表达式的生成,1用单引号设定后输入或赋值, f=log(x),f =,log(x),2用命令sym(生成符号对象),例如,创建符号函数,例如,创建符号方程, eqation=sym(a*x2+b*x+c=0),eqation =,a*x2+b*x+c=0,2,3用命令sym(确定多个符号对象),可用whos检查存在的空间的各种变量及其所属类型, syms x y abcd alfa, whos,Name Size Bytes Class,abcd 1x1 132 sym object,alfa 1x1 132 sym object,eqation 1x1 150 sym object,f 1x6 12 char array,x 1x1 126 sym object,y 1x1 126 sym object,Grand total is 34 elements using 678 bytes,二、符号函数的运算,1复合函数的运算,3,复合函数运算可通过功能函数compose来实现,其调用格式为:,(1)compose(f,g) 返回当f=f(x)和g=g(y)时的复合函数f(g(y)。,(2)compose(f,g,z) 返回复合函数以z为自变量。,(3)compose(f,g,x,z) 返回复合函数f(g(z),且使x为f的独立变量。,例如, syms x y z t, f=1/(1+x2);, g=sin(y);, h=xt;, compose(f,g),ans =,1/(1+sin(y)2), compose(f,g,z),ans =,1/(1+sin(z)2), compose(h,g,x,z),ans =,sin(z)t,4,2反函数的运算,反函数运算可通过功能函数finverse(f)来实现,其调用格式为:,(1)g=finverse(f) 符号函数f的反函数。,(2)g=finverse(f,z) 返回符号函数的自变量为z。, f=x3+y;, finverse(f,y),ans =,-x3+y, finverse(f),Warning: finverse(x3+y) is not unique., In C:MATLAB6P1toolboxsymbolicsymfinverse.m at line 43,ans =,(-y+x)(1/3),5,三、符号的矩阵的创立与运算,1符号矩阵的创立,符号矩阵的创立与和创立数值矩阵的方法相似,只不过要用到符号定义函数sym。我们可以使用sym函数直接建立符号矩阵;可以通过建立子矩阵的方法建立符号矩阵;也可以使用sym函数将数值矩阵转化为符号矩阵。, a=sym(1 1/s+x sin(x);y/x 1+1/y,tan(x+y);3+4,exp(x2+y2),log(tanh(y),a =, 1, 1/s+x, sin(x), y/x, 1+1/y, tan(x+y), 3+4, exp(x2+y2), log(tanh(y), b=1 2 3 5;7 9 10 11;13 15 17 18;, c=sym(b),6,c =, 1, 2, 3, 5, 7, 9, 10, 11, 13, 15, 17, 18,2符号矩阵的运算,符号矩阵的运算与数值矩阵的运算相同,(1)四则运算:, a=sym(1/x 1/(x+1);1/(x+2) 1/(x+3);, b=sym(x,1;x+2,0);, ab,ans =, -6*x-2*x3-7*x2, 3/2*x2+x+1/2*x3, 6+2*x3+10*x2+14*x, -1/2*x3-2*x2-3/2*x,(2)求逆运算“inv”,行列式运算“det”,幂运算“”、求秩运算“rank”、指数运算“exp”和对数运算“log”, inv(a),ans =, 1/2*x*(x+1)*(x+2), -1/2*x*(x+3)*(x+2), -1/2*x*(x+3)*(x+1), 1/2*(x+3)*(x+1)*(x+2),7,(3)矩阵分解函数:特征值函数“eig”,约当标准型函数“Jordan”,三角提取函数“diag”、“tril”、“triu”, u,v=eig(b),u =, (1/2*x+1/2*(x2+4*x+8)(1/2)/(x+2), (1/2*x-1/2*(x2+4*x+8)(1/2)/(x+2), 1, 1,v =, 1/2*x+1/2*(x2+4*x+8)(1/2), 0, 0, 1/2*x-1/2*(x2+4*x+8)(1/2),四、符号微积分,1符号极限,符号函数的极限是由limit函数来实现,其调用格式如下:,8,limit(f,x,a) 计算符号表达式f在xa时的极限,limit(f) 计算符号表达式f在x0时的极限, syms x t;, limit(1+2*t*sin(1/x)(3*x),x,inf),ans =,exp(6*t),2符号积分,积分函数int函数的调用格式为:,int(S,t) 计算符号表达式S对符号变量t的不定积分,int(S,a,b) 计算符号表达式S对默认符号变量从a到b的不定积分, syms x y t;, A=cos(x*t),sin(x+t);exp(t/x),log(x-t),9,A =, cos(x*t), sin(x+t), exp(t/x), log(x-t), int(A,t),ans =, 1/x*sin(x*t), -cos(x+t), exp(t/x)*x, -log(x-t)*(x-t)+x-t, int(sqrt(1+y2),y),ans =,1/2*y*(1+y2)(1/2)+1/2*asinh(y), int(sqrt(1+y2),0,1),ans =,1/2*2(1/2)-1/2*log(2(1/2)-1),如,计算二次积分,10, int(int(x2+y2),x,sqrt(y),1),y,0,1),ans =26/105,3符号微分,微分diff,其调用格式为,diff(S) 表示对表达式S的微分。,diff(S,v) 或diff(S,sym(v) 表示对变量v,求表达式S的微分。,diff(S,n) 对整数n,对表达式S微分n次。,diff(S,v,n) 和diff(S,n,v) 都表示对变量v,求表达式S的微分n次。, syms x t;, diff(sin(x2),ans =,2*cos(x2)*x,11,设, syms x y;, z=x*log(x*y);, diff(diff(z,x),y,2),ans =,-1/y2,五、符号代数方程求解,1符号线性方程组的求解方法,可用linsolve和solve得到方程组的精确解。所得到的精确解可由函数vpa转换成浮点近似数值。, a=sym(10 -1 0;-1 10 -2;0 -2 10);, b=(9;7;6);,12, linsolve(a,b),ans =, 473/475, 91/95, 376/475, vpa(ans),ans =, .995789473684210526321, .957894736842105263211, .7921052632,2符号非线性方程组的求解方法,由函数fsolve实现,其调用格式为,X=fsolve(fun,X0) ,X=fsolve(fun,X0,options),X=fsolve(fun,X0,options,gradfun),13,例如,function y=fc(x),y(1)=x(1)-0.7*sin(x(1)-0.2*cos(x(2);,y(2)=x(2)-0.7*cos(x(1)-0.2*sin(x(2);,y=y(1),y(2);, x0=0.5,0.5;, fsolve(fc,x0),ans =,0.4442 0.7715,14,六、符号微分方程求解,常微分方程及微分方程组的符号求解由函数dsolve来实现,其调用格式为:,dsolve(equ1, equ2,),例如,求微分方程,的特解。, dsolve(t2+1)*D2y=2*t*Dy,y(0)=1,Dy(0)=3),ans =,1+t3+3*t,又如,求微分方程 的通解。, dsolve(D2y-2*Dy+y=exp(x)/x,x),ans =,-exp(x)*x+log(x)*exp(x)*x+C1*exp(x)+C2*exp(x)*x,15,又如,求下列微分方程组的特解,S =,u: 1x1 sym,v: 1x1 sym,w: 1x1 sym,也可使用命令, S=dsolve(Du=v,Dv=w,Dw-u,u(0)=0,v(0)=0,w(0)=1), syms u v w t, S=dsolve(Du=v,Dv=w,Dw-u,u(0)=0,v(0)=0,w(0)=1),查看解, S.u,ans = -1/3*3(1/2)*exp(-1/2*t)*sin(1/2*t*3(1/2)-1/3*exp(-1/2*t)*cos(1/2*t*3(1/2)+1/3*exp(t),16,七、级数,1常数项级数,级数求和用函数symsum来实现,其调用格式为:,symsum(一般项),symsum(一般项,变量),symsum(一般项,变量,起始,终止),例如,求级数 的前10项和及无穷和。, syms n;, symsum(1/n2,n,1,10),ans = 1968329/1270080, symsum(1/n2,n,1,inf),ans = 1/6*pi2,17,2幂级数,(1)用函数symsum求幂级数 的和函数。, syms x n, symsum(x(2*n-1)/(2*n-1),n,1,inf),ans =,1/2*log(1+x)/(1-x),(2)用taylor将函数展成泰勒级数,其调用格式为:,Taylor(f,n) 求函数f的n-1阶麦克劳林级数,Taylor(f,n,x0,x) 求函数f在x0处的以x为变量的n-1阶泰勒级数。,注:,后面3个参数的次序可以任意打乱,在不引起混淆的情况下均能给出正确结果。,18,求函数 阶泰勒展式, syms x,n;, taylor(exp(-x),x,8,7),ans =,exp(-7)-exp(-7)*(x-7)+1/2*exp(-7)*(x-7)2-1/6*exp(-7)*(x-7)3+1/24*exp(-7)*(x-7)4-1/120*exp(-7)*(x-7)5+1/720*exp(-7)*(x-7)6-1/5040*exp(-7)*(x-7)7,八、符号和数字之间的转换,1转化为符号变量命令:S=sym(f), S1=sym(3.456),S2=sym(3.456),S3=sym(23f),s4=sym(23;23;32),S1 = 3.456,S2 = 432/125,19,2转化为数值变量及符号函数值的计算,将得到的解析解进行数值转换,可通过函数digits(设置变量精度)和vpa(变量精度函数)来实现。通常与变量替换函数subs配合使用,也可通过函数numeric(转换符号矩阵成数值型)来实现。,(1)digits函数的调用格式为:digits(D),它设置有效数字个数为D的近似解精度。,2)vpa函数的调用格式如下:,x=vpa(S) 符号表达式S在digits设置下的精确的数值解。,vpa(S,D) 符号表达式S在digits(D)函数设置下的精确的数值解。,(3) subs 函数的调用格式为:subs(S,OLD,NEW),将符号表达式中的OLD变量替换为NEW变量。,20,(4)numeric函数的调用格式为:n=numeric(S),它将不含自由变量的符号表达式转换为数值形式。,求方程 的精确解和各种精度的近似解。, s=solve(3*x2-exp(x)=0),s =, -2*lambertw(-1/6*3(1/2), -2*lambertw(-1,-1/6*3(1/2), -2*lambertw(1/6*3(1/2), vpa(s),ans =, .9129575944, 3.733428434, -.458962267536948543408,21, vpa(s,6),ans =, .910008, 3.73308, -.458962,又如,求的具有20位有效数字的值。, digits(20),vpa(pi),ans =,3.14932385,求微分方程,的特解在x=0 ,0.2,0.4,0.6,0.8,1处的函数值,22,y=dsolve(D2y-10*Dy+25*y=0,y(0)=2,Dy(0)=1,x),y =,2*exp(5*x)-9*exp(5*x)*x, t=0:0.2:1,t =,0 0.2000 0.4000 0.6000 0.8000 1.0000,subs(y,x,t) %将变量x替换为t,ans =,1.0e+003 *,0.0020 0.0005 -0.0118 -0.0683 -0.2839 -1.0389,九、符号函数的二维图形,1用函数ezplot绘制一元符号函数图形,ezflot(f) 绘制f(x)的图形,x的近似范围为-2*pi,2*pi,23,ezflot(f,xmin,xmax), syms x;, f=(x2)(sin(x)2);, ezplot(f),或,Syms x, fplot(sin(1./tan(pi*x),-0.1,0.1),24,2用fplot命令绘制函数图形,fplot(fun,lims)绘制函数fun的图形,lims=xmin,xmax,或lims=xmin,xmax,ymin,ymax,fplot(fun,lims,tol) 其中tol fplot(f,-0.1,0.1,3e-4),25,再见,26,
展开阅读全文