
之二符号运算功能.ppt
26页§14.2 符号运算功能符号运算功能 一、符号表达式的生成一、符号表达式的生成 1.用单引号设定后输入或赋值.用单引号设定后输入或赋值 >> f='log(x)'f =log(x)2.用命令.用命令sym(生成符号对象)(生成符号对象) 例如,创建符号函数例如,创建符号函数 例如,创建符号方程例如,创建符号方程 >> eqation=sym('a*x^2+b*x+c=0') eqation = a*x^2+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 eqation 1x1 150 sym object f 1x6 12 char array x 1x1 126 sym object y 1x1 126 sym objectGrand 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的独立变量的独立变量 例如例如 >> syms x y z t>> f=1/(1+x^2);>> g=sin(y);>> h=x^t;>> 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=x^3+y;>> finverse(f,y)ans =-x^3+y>> finverse(f) Warning: finverse(x^3+y) is not unique.> In C:\MATLAB6P1\toolbox\symbolic\@sym\finverse.m at line 43ans =(-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(x^2+y^2),log(tanh(y))]')a =[ 1, 1/s+x, sin(x)][ y/x, 1+1/y, tan(x+y)][ 3+4, exp(x^2+y^2), 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]');>> a\b ans =[ -6*x-2*x^3-7*x^2, 3/2*x^2+x+1/2*x^3][ 6+2*x^3+10*x^2+14*x, -1/2*x^3-2*x^2-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*(x^2+4*x+8)^(1/2))/(x+2), (1/2*x-1/2*(x^2+4*x+8)^(1/2))/(x+2)][ 1, 1]v =[ 1/2*x+1/2*(x^2+4*x+8)^(1/2), 0][ 0, 1/2*x-1/2*(x^2+4*x+8)^(1/2)] 四、符号微积分四、符号微积分 1.符号极限.符号极限 符号函数的极限是由符号函数的极限是由limit函数来实现,其调用格式如下:函数来实现,其调用格式如下: limit((f,,x,,a)) 计算符号表达式计算符号表达式f在在x→a时的极限时的极限limit((f)) 计算符号表达式计算符号表达式f在在x→0时的极限时的极限 >> 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)]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+y^2),y)ans =1/2*y*(1+y^2)^(1/2)+1/2*asinh(y)>> int(sqrt(1+y^2),0,1)ans =1/2*2^(1/2)-1/2*log(2^(1/2)-1)如,计算二次积分如,计算二次积分 >> int(int((x^2+y^2),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(x^2)) ans = 2*cos(x^2)*x设设 >> syms x y;>> z=x*log(x*y);>> diff(diff(z,'x'),'y',2)ans =-1/y^2五、符号代数方程求解五、符号代数方程求解 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][ .79157894736842105263157894736842] 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 六、符号微分方程求解六、符号微分方程求解 常微分方程及微分方程组的符号求解由函数常微分方程及微分方程组的符号求解由函数dsolve来实现,来实现,其调用格式为:其调用格式为: dsolve(‘equ1’,, ‘equ2’,,…) 例如,求微分方程例如,求微分方程 的特解。
的特解 >> dsolve('(t^2+1)*D2y=2*t*Dy','y(0)=1,Dy(0)=3')ans =1+t^3+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,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/n^2,n,1,10) ans = 1968329/1270080>> symsum(1/n^2,n,1,inf) ans = 1/6*pi^2 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个参数的次序可以任意打乱,在不引起混淆的个参数的次序可以任意打乱,在不引起混淆的情况下均能给出正确结果情况下均能给出正确结果 求函数求函数 阶泰勒展式阶泰勒展式 >> 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 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变量 ((4))numeric函数的调用格式为:函数的调用格式为:n=numeric(S),它将,它将不含自由变量的符号表达式转换为数值形式不含自由变量的符号表达式转换为数值形式 求方程求方程 的精确解和各种精度的近似解。
的精确解和各种精度的近似解 >> s=solve('3*x^2-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][ -.45896226753694851459857243243408] >> 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:1t = 0 0.2000 0.4000 0.6000 0.8000 1.0000subs(y,'x',t) %将变量将变量x替换为替换为tans = 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=(x^2)^(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) 其中其中tol<1用来指定相对误差精用来指定相对误差精度,默认值度,默认值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) 。












