《之二符号运算功能.ppt》由会员分享,可在线阅读,更多相关《之二符号运算功能.ppt(26页珍藏版)》请在三一文库上搜索。
1、MATLAB 软件使用简介,之二,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,3用命令sym(确定多个符号对象),可用whos检查存在的空间的各种变量及其所属类型, syms x y abcd alfa whos Name Size Bytes Class abcd 1x1 132 sym object alfa 1x1 132 sym object e
2、qation 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复合函数的运算,复合函数运算可通过功能函数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的独
3、立变量。,例如, 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,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)
4、Warning: finverse(x3+y) is not unique., In C:MATLAB6P1toolboxsymbolicsymfinverse.m at line 43 ans = (-y+x)(1/3),三、符号的矩阵的创立与运算,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(
5、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),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
6、*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),(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
7、/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函数来实现,其调用格式如下:,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
8、的不定积分 int(S,a,b) 计算符号表达式S对默认符号变量从a到b的不定积分, syms x y t; A=cos(x*t),sin(x+t);exp(t/x),log(x-t),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)-
9、1/2*log(2(1/2)-1),如,计算二次积分, 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,设, syms x y; z=x*log(x*y); dif
10、f(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);, linsolve(a,b) ans = 473/475 91/95 376/475 vpa(ans) ans = .99578947368421052631578947368421 .95789473684210526315789473684211 .79157894736842105263157
11、894736842,2符号非线性方程组的求解方法,由函数fsolve实现,其调用格式为,X=fsolve(fun,X0) ,X=fsolve(fun,X0,options) X=fsolve(fun,X0,options,gradfun),例如,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,六、符号微分方程求解,常微分方程及微分方程组的符号求解
12、由函数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,又如,求下列微分方程组的特解,S = u: 1x1 sym v: 1x1 sym w: 1x1 sym,也可使用命令 S=dsolve(Du=v,Dv=w,Dw-u,u(0)=0,
13、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),七、级数,1常数项级数,级数求和用函数symsum来实现,其调用格式为:,symsum(一般项) symsum(一般项,变量) symsum(一般项,变量,起始,终止),例如,求级数 的前10项和及无穷和。, syms n; symsum(1/n2,
14、n,1,10) ans = 1968329/1270080 symsum(1/n2,n,1,inf) ans = 1/6*pi2,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个参数的次序可以任意打乱,在不引起混淆的情况下均能给出正确结果。,求函数
15、 阶泰勒展式, 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 = 43
16、2/125,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),将符号表达式中的O
17、LD变量替换为NEW变量。,(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 = .91000757248870906065733829575944 3.7330790286328142006199540298434 -.45896226753694851459857243
18、243408, vpa(s,6) ans = .910008 3.73308 -.458962,又如,求的具有20位有效数字的值。, digits(20) vpa(pi) ans = 3.1415926535897932385,求微分方程 的特解在x=0 ,0.2,0.4,0.6,0.8,1处的函数值,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
19、 = 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,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),2用fplot命令绘制函数图形,fplot(fun,lims)绘制函数fun的图形,lims=xmin,xmax,或lims=xmin,xmax,ymin,ymax,fplot(fun,lims,tol) 其中tol1用来指定相对误差精度,默认值tol=0.002。,fplot(fun,lims,n) 其中是正整数,指定以最少n+1点来绘制函数图。,function y=f(x) y=sin(1./tan(pi*x); fplot(f,-0.1,0.1,3e-4),再见,
链接地址:https://www.31doc.com/p-2712782.html