1、第 3 章 符号运算95第 3 章 符号运算3.1 算术符号操作命令 +、- 、*、.*、.、/、./、. 、 、.功能 符号矩阵的算术操作用法如下:A+B、A-B 符号阵列的加法与减法。若 A 与 B 为同型阵列时,A+B、A-B 分别对对应分量进行加减;若 A 与 B 中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的分量进行加减。A*B 符号矩阵乘法。A*B 为线性代数中定义的矩阵乘法。按乘法定义要求必须有矩阵 A 的列数等于矩阵 B 的行数。即:若 An*k*Bk*m=(aij)n*k.*(bij)k*m=Cn*m=(cij)n*m,则,i=1,2,n ; j=1,2,
2、m。或者至少有一个为标量时,方可进k1ssjiijbac行乘法操作,否则将返回一出错信息。A.*B 符号数组的乘法。A.*B 为按参量 A 与 B 对应的分量进行相乘。A 与 B 必须为同型阵列,或至少有一个为标量。即:A n*m.*Bn*m=(aij)n*m.*(bij)n*m=Cn*m=(cij)n*m,则 cij= aij* bij,i=1,2,n; j=1,2,m。AB 矩阵的左除法。X=AB 为符号线性方程组 A*X=B 的解。我们指出的是,AB 近似地等于inv(A)*B。若 X 不存在或者不唯一,则产生一警告信息。矩阵 A 可以是矩形矩阵(即非正方形矩阵) ,但此时要求方程组必须
3、是相容的。A.B 数组的左除法。A.B 为按对应的分量进行相除。若 A 与 B 为同型阵列时,A n*m.Bn*m=(aij)n*m.(bij)n*m=Cn*m=(cij)n*m,则 cij= aij bij,i=1,2,n;j=1,2,m。若若 A 与 B中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的分量进行操作。A/B 矩阵的右除法。X=B/A 为符号线性方程组 X*A=B 的解。我们指出的是,B/A 粗略地等于B*inv(A)。若 X 不存在或者不唯一,则产生一警告信息。矩阵 A 可以是矩形矩阵(即非正方形矩阵) ,但此时要求方程组必须是相容的。A./B 数组的右除法
4、。A./B 为按对应的分量进行相除。若 A 与 B 为同型阵列时,A n*m./Bn*m=(aij)MATLAB6.0 数学手册96n*m./(bij)n*m=Cn*m=(cij)n*m,则 cij= aij/bij,i=1,2,n;j=1,2,m。若 A 与 B 中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的分量进行操作。AB 矩阵的方幂。计算矩阵 A 的整数 B 次方幂。若 A 为标量而 B 为方阵,AB 用方阵 B 的特征值与特征向量计算数值。若 A 与 B 同时为矩阵,则返回一错误信息。A.B 数组的方幂。A.B 为按 A 与 B 对应的分量进行方幂计算。若 A 与
5、 B 为同型阵列时,An*mBn*m=(aij)n*m(bij)n*m=Cn*m=(cij)n*m,则 cij= aijbij,i=1,2,n;j=1,2,m。若 A 与 B 中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的分量进行操作。A 矩阵的 Hermition 转置。若 A 为复数矩阵,则 A为复数矩阵的共轭转置。即,若 A=(aij)=(xij+i*yij),则 。)yix()a(jjijji A. 数组转置。A.为真正的矩阵转置,其没有进行共轭转置。例 3-1syms a b c d e f g h;A = a b; c d;B = e f; g h;C1 = A
6、.*BC2 = A.BC3 = A*B/AC4 = A.*A-A2syms a11 a12 a21 a22 b1 b2;A = a11 a12; a21 a22;B = b1 b2;X = B/A; % 求解符号线性方程组 X*A=B 的解x1 = X(1)x2 = X(2)计算结果为:C1 = a*e, b*f c*g, d*hC2 = ae, bf cg, dhC3 = -(a*c*f+c*b*h-a*e*d-b*d*g)/(a*d-b*c), (a*b*h-b2*g+a2*f-b*a*e)/(a*d-b*c) -(-c*e*d+c*d*h+c2*f-d2*g)/(a*d-b*c), (a
7、*d*h+a*c*f-b*c*e-b*d*g)/(a*d-b*c)C4 = -b*c, b2-a*b-b*d c2-a*c-d*c, -b*cx1 =(-a22*b1+b2*a21)/(a12*a21-a11*a22)x2 =-(-a12*b1+a11*b2)/(a12*a21-a11*a22)第 3 章 符号运算973.2 基本运算命令 1 合并同类项函数 collect格式 R = collect(S) %对于多项式 S 中的每一函数,collect(S) 按缺省变量 x 的次数合并系数。R = collect(S,v) %对指定的变量 v 计算,操作同上。例 3-2syms x y;R1
8、 = collect(exp(x)+x)*(x+2)R2 = collect(x+y)*(x2+y2+1), y)R3 = collect(x+1)*(y+1),x+y)计算结果为:R1 =x2+(exp(x)+2)*x+2*exp(x)R2 =y3+x*y2+(x2+1)*y+x*(x2+1)R3 = (y+1)*x+y+1, x+y命令 2 列空间的基函数 colspace格式 B = colspace(A) %返回矩阵 B,其列向量形成由矩阵 A 的列向量形成的空间的坐标基,其中 A 可以是符号或数值矩阵。而 size(colspace(A),2)等于rank(A)。即由 A 生成的空间
9、维数等于 A 的秩。例 3-3syms a b cA = sym(1,a;2,b;3,c)B = colspace(A)计算结果为:A = 1, a 2, b 3, cB = 1, 0 0, 1 -(3*b-2*c)/(-b+2*a), (-c+3*a)/(-b+2*a)命令 3 复合函数计算函数 compose格式 compose(f,g) %返回复合函数 fg(y),其中 f=f(x),g=g(y)。其中符号 x 为函数 f 中由命令 findsym(f) 确定的符号变量,符号 y 为函数 g 中由命令 findsym(g) 确定的符号变量。compose(f,g,z) %返回复合函数 f
10、g(z),其中 f=f(x),g=g(y) ,符号 x、y 为函数 f、g 中由命令 findsym 确定的符号变量。MATLAB6.0 数学手册98compose(f,g,x,z) %返回复合函数 fg(z),而令变量 x 为函数 f 中的自变量f=f(x)。令 x=g(z),再将 x=g(z)代入函数 f 中。compose(f,g,x,y,z) %返回复合函数 fg(z)。而令变量 x 为函数 f 中的自变量f=f(x),而令变量 y 为函数 g 中的自变量 g=g(y)。令 x=g(y),再将 x=g(y)代入函数 f=f(x)中,得 fg(y),最后用指定的变量 z 代替变量 y,得
11、 fg(z)。例 3-4syms x y z t u v;f = 1/(1 + x2*y); h = xt; g = sin(y); p = sqrt(-y/u);C1 = compose(f,g) % 令 x=g=sin(y),再替换 f 中的变量 x=findsym(f)。C2 = compose(f,g,t) % 令 x=g=sin(t),再替换 f 中的变量 x=findsym(f)。C3 = compose(h,g,x,z) % 令 x=g=sin(z),再替换 h 中的变量 x。C4 = compose(h,g,t,z) % 令 t=g=sin(z),再替换 h 中的变量 t。C5
12、 = compose(h,p,x,y,z) % 令 x=p(y)=sqrt(-y/u),替换 h 中的变量 x,再将 y 换成 z。C6 = compose(h,p,t,u,z) % 令 t=p(u)=sqrt(-y/u),替换 h 中的变量 t,再将 u 换成 z。计算结果为:C1 =1/(1+sin(y)2*y)C2 =1/(1+sin(t)2*y)C3 =sin(z)tC4 =xsin(z)C5 =(-z/u)(1/2)tC6 =x(-y/z)(1/2)命令 4 符号复数的共轭函数 conj格式 conj(X) %返回符号复数 X 的共轭复数例 3-5X=real(X) + i*imag
13、(X),则 conj(X)=real(X) - i*imag(X)命令 5 符号复数的实数部分函数 real格式 real(Z) %返回符号复数 z 的实数部分命令 6 符号复数的虚数部分函数 imag格式 imag(Z) %返回符号复数 z 的虚数部分命令 7 余弦函数的整函数格式 Y = cosint(X) %计算余弦函数在点 X 处的整函数值。其中 X 可以是数值矩阵,或符号矩阵。余弦函数的整函数定义为: ,其中dtYiii01cosln为 Euler 常数, =0.57721566490153286060651209 i=1,2,size(X)。Euler 常数可以通过命令 vpa(e
14、ulergamma)获得。第 3 章 符号运算99例 3-6cosint(7.2) cosint(0:0.1:1)syms x;f = cosint(x);diff(x)计算结果为:ans =0.0960ans =Columns 1 through 7 Inf -1.7279 -1.0422 -0.6492 -0.3788 -0.1778 -0.0223Columns 8 through 11 0.1005 0.1983 0.2761 0.3374ans =1命令 8 设置变量的精度函数 digits格式 digits(d) %设置当前的可变算术精度的位数为整数 d 位d = digits %
15、返回当前的可变算术精度位数给 ddigits %显示当前可变算术精度的位数说明 设置有意义的十进制数值的、在 Maple 软件中用于做可变算术精度(命令为:vpa)计算的数字位数。其缺省值为 32 位数字。例 3-7z = 1.0e-16 % z 为一很小的数x = 1.0e+2 % x 为较大的数digits(14) y1 = vpa(x*z+1) % 大数 1“吃掉”小数 x*ydigits(15)y2 = vpa(x*z+1) % 防止“去掉 ”小数 x*y计算结果为:z =1.0000e-016x =100y1 =1.0000000000000y2 =1.00000000000001命
16、令 9 将符号转换为 MATLAB 的数值形式函数 double格式 R = double(S) %将符号对象 S 转换为数值对象 R。若 S 为符号常数或表达式常数,double 返回 S 的双精度浮点数值表示形式;若 S 为每一元素是符号常数或表达式常数的符号矩阵,double 返回 S 每一元素的双精度浮点数值表示的数值矩阵 R。例 3-8gold_ratio = double(sym(sqrt(5)-1)/2) % 计算黄金分割率。MATLAB6.0 数学手册100T = sym(hilb(4)R = double(T)计算结果为:gold_ratio =0.6180T = 1, 1/
17、2, 1/3, 1/4 1/2, 1/3, 1/4, 1/5 1/3, 1/4, 1/5, 1/6 1/4, 1/5, 1/6, 1/7R =1.0000 0.5000 0.3333 0.25000.5000 0.3333 0.2500 0.20000.3333 0.2500 0.2000 0.16670.2500 0.2000 0.1667 0.1429命令 10 符号表达式的展开函数 expand格式 R = expand(S) %对符号表达式 S 中每个因式的乘积进行展开计算。该命令通常用于计算多项式函数、三角函数、指数函数与对数函数等表达式的展开式。例 3-9syms x y a b
18、c tE1 = expand(x-2)*(x-4)*(y-t)E2 = expand(cos(x+y)E3 = expand(exp(a+b)3) E4 = expand(log(a*b/sqrt(c) E5 = expand(sin(2*t), cos(2*t)计算结果为:E1 =x2*y-x2*t-6*x*y+6*x*t+8*y-8*tE2 =cos(x)*cos(y)-sin(x)*sin(y)E3 =exp(a3)*exp(a2*b)3*exp(a*b2)3*exp(b3)E4 =log(a*b/c(1/2)E5 = 2*sin(t)*cos(t), 2*cos(t)2-1命令 11
19、符号因式分解函数 factor格式 factor(X) %参量 x 可以是正整数、符号表达式阵列或符号整数阵列。若 X 为一正整数,则 factor(X)返回 X 的质数分解式。若 x 为多项式或整数矩阵,则 factor(X)分解矩阵的每一元素。若整数阵列中有一元素位数超过 16 位,用户必须用命令 sym 生成该元素。例 3-10syms a b x yF1 = factor(x4-y4) F2 = factor(a2-b2, x3+y3) F3 = factor(sym(12345678901234567890)第 3 章 符号运算101计算结果为:F1 =(x-y)*(x+y)*(x2
20、+y2)F2 =(a-b)*(a+b), (x+y)*(x2-x*y+y2)F3 =(2)*(3)2*(5)*(101)*(3803)*(3607)*(27961)*(3541)命令 12 符号表达式的分子与分母函数 numden格式 N,D = numden(A) 说明 将符号或数值矩阵 A 中的每一元素转换成整系数多项式的有理式形式,其中分子与分母是相对互素的。输出的参量 N 为分子的符号矩阵,输出的参量 D 为分母的符号矩阵。例 3-11syms x y a b c d;n1,d1 = numden(sym(sin(4/5) n2,d2 = numden(x/y + y/x)A = a,
21、 1/b;1/c d;n3,d3 = numden(A)计算结果为:n1 =6461369247334093d1 =9007199254740992n2 =x2+y2d2 =y*xn3 = a, 1 1, dd3 = 1, b c, 1命令 13 搜索符号表达式的最简形式函数 simple格式 r = simple(S) %该命令试图找出符号表达式 S 的代数上的简单形式,显示任意的能使表达式 S 长度变短的表达式,且返回其中最短的一个。若 S 为一矩阵,则结果为整个矩阵的最短形式,而非是每一个元素的最简形式。若没有输出参量 r,则该命令将显示所有可能使用的算法与表达式,同时返回最短的一个。r
22、,how = simple(S) %没有显示中间的化简结果,但返回能找到的最短的一个。输出参量 r 为一符号,how 为一字符串,用于表示算法。例 3-12syms xR1 = simple(cos(x)4+sin(x)4)MATLAB6.0 数学手册102R2 = simple(2*cos(x)2-sin(x)2)R3 = simple(cos(x)2-sin(x)2)R4 = simple(cos(x)+(-sin(x)2)(1/2)R5 = simple(cos(x)+i*sin(x)R6 = simple( (x+1)*x*(x-1)R7 = simple(x3+3*x2+3*x+1)
23、 R8,how = simple(cos(3*acos(x)计算的结果为:R1 =1/4*cos(4*x)+3/4R2 =3*cos(x)2-1R3 =cos(2*x)R4 =cos(x)+i*sin(x)R5 =exp(i*x)R6 =x 3-xR7 =(x+1)3R8 =4*x3-3*xhow =expand命令 14 符号表达式的化简函数 simplify格式 R = simplify(S) 说明 使用 Maple 软件中的化简规则,将化简符号矩阵 S 中每一元素。例 3-13syms x a b cR1 = simplify(sin(x)4 + cos(x)4) R2 = simpli
24、fy(exp(c*log(sqrt(a+b)S = (x2+5*x+6)/(x+2),sqrt(16);R3 = simplify(S)计算结果为:R1 =2*cos(x)4+1-2*cos(x)2R2 =(a+b)(1/2*c)R3 = x+3, 4 命令 15 符号矩阵的维数函数 size格式 d = size(A) %若 A 为 m*n 阶的符号矩阵,则输出结果 d=m,n。m,n = size(A) %分别返回矩阵 A 的行数于 m,列数于 n。d= size(A, n) %返回由标量 n 指定的 A 的方向的维数:n=1 为行方向,n=2为列方向。第 3 章 符号运算103例 3-1
25、4syms a b c dA = a b c ; a b d; d c b; c b a;d = size(A)r = size(A, 2)计算结果为:d =4 3r =3命令 16 代数方程的符号解析解函数 solve格式 g = solve(eq) %输入参量 eq 可以是符号表达式或字符串。若 eq 是一符号表达式 x2 -2*x-1 或一没有等号的字符串x2-2*x-1,则 solve(eq)对方程 eq 中的缺省变量(由命令 findsym(eq)确定的变量) 求解方程 eq=0。若输出参量 g为单一变量,则对于有多重解的非线性方程,g 为一行向量。g = solve(eq,var)
26、 %对符号表达式或没有等号的字符串 eq 中指定的变量 var 求解方程 eq(var)=0。g = solve(eq1,eq2,eqn) %输入参量 eq1,eq2,eqn 可以是符号表达式或字符串。该命令对方程组 eq1,eq2,eqn 中由命令 findsym 确定的 n 个变量如x1,x2,xn 求解。若 g 为一单个变量,则 g 为一包含 n 个解的结构;若 g为有 n 个变量的向量,则分别返回结果给相应的变量。g = solve(eq1,eq2,eqn,var1,var2,varn) %对方程组 eq1,eq2,eqn 中指定的n 个变量如 var1,var2,varn 求解。注意
27、:对于单个的方程或方程组,若不存在符号解,则返回方程(组)的数值解。例 3-15solve(a*x2 + b*x + c) solve(a*x2 + b*x + c,b) solve(x + y = 1,x - 11*y = 5) A = solve(a*u2 + v2, u - v = 1, a2 - 5*a +6)计算结果为:ans = 1/2/a*(-b+(b2-4*a*c)(1/2) 1/2/a*(-b-(b2-4*a*c)(1/2)ans =-(a*x2+c)/xans = x: 1x1 symy: 1x1 symA = a: 4x1 symu: 4x1 symv: 4x1 sym命
28、令 17 以共同的子表达式形式重写一符号表达式函数 subexprMATLAB6.0 数学手册104格式 Y,SIGMA = subexpr(X,SIGMA)Y,SIGMA = subexpr(X,SIGMA) 说明 找出符号表达式 X 中相同的子表达式,再结合命令 pretty(X)将 X 中相同的、比较复杂的子字符串用符号%1,%2,代替。而用命令 pretty(Y)将 X 中相同的、比较复杂的子字符串用符号 SIGMA 代替。例 3-16t = solve(a*x3+b*x2+c*x+d = 0); r,s = subexpr(t,s);pretty(t)pretty(r)计算结果为:(
29、略)命令 18 特征多项式函数 poly格式 p = poly(A)或 p = poly(A, v) 说明 若 A 为一数值阵列,则返回矩阵 A 的特征多项式的系数,且有:命令poly(sym(A)近似等于 poly2sym(poly(A)。其近似程度取决于舍入误差的大小。若 A 为一符号矩阵,则返回矩阵 A 的变量为 x 的特征多项式。若带上参量 v,则返回变量为 v 的特征多项式。例 3-17A = hilb(4); p = poly(A)q = poly(sym(A)s = poly(sym(A),z)计算结果为:p =1.0000 -1.6762 0.2652 -0.0017 0.00
30、00q =x4-176/105*x3+3341/12600*x2-41/23625*x+1/6048000s =-176/105*z3+3341/12600*z2-41/23625*z+1/6048000+z4命令 19 将多项式系数向量转化为带符号变量的多项式函数 poly2sym格式 r = poly2sym(c)和 r = poly2sym(c, v) 说明 将系数在数值向量 c 中的多项式转化成相应的带符号变量的多项式(按次数的降幂排列) 。缺省的符号变量为 x;若带上参量 v,则符号变量用 v 显示。poly2sym 使用命令 sym 的缺省转换模式(有理形式)将数值型系数转换为符号
31、常数。该模式将数值转换成接近的整数比值的表达式,否则用 2 的幂指数表示。若 x 有一数值值,且命令 sym 能将 c 的元素精确表示,则eval(poly2sym(c)的结果与 polyval(c,x)相同。例 3-18r1 = poly2sym(1 2 3 4) r2 = poly2sym(.694228, sqrt(2), sin(pi/3) r3 = poly2sym(1 0 1 -1 2, y)计算结果为:第 3 章 符号运算105r1 =x3+2*x2+3*x+4r2 =6253049924220329/9007199254740992*x2+x*2(1/2)+1/2*3(1/2)
32、r3 =y4+y2-y+2命令 20 将复杂的符号表达式显示成我们习惯的数学书写形式函数 pretty格式 pretty(S) %用缺省的线型宽度 79 显示符号矩阵 s 中每一元素pretty(S,n) %用指定的线型宽度 n 显示例 3-19A = sym(pascal(3);B = eig(A)pretty(B,50) % 多看几次结果,会发现该命令显示的特点syms xy=log(x)/sqrt(x);dy = diff(y)pretty(dy) 计算结果为:B = 1 4+15(1/2) 4 -15(1/2) 1 1/24 + 15 1/24 - 15 dy =1/x(3/2)-1/
33、2*log(x)/x(3/2)1 log(x)- - 1/2 -3/2 3/2x x命令 21 从一符号表达式中或矩阵中找出符号变量函数 findsym格式 r = findsym(S) %以字母表的顺序返回表达式 S 中的所有符号变量(注:符号变量为由字母(除了 i 与 j)与数字构成的、字母打头的字符串) 。若 S 中没有任何的符号变量,则 findsym 返回一空字符串。r = findsym(S,n) %返回字母表中接近 x 的 n 个符号变量例 3-20syms a x y z t alpha beta1 = findsym(sin(pi*t*alpha+beta)S2 = find
34、sym(x+i*y-j*z+eps-nan)S3 = findsym(a+y,pi)计算结果为;S1 =MATLAB6.0 数学手册106pi, alpha, beta, tS2 =NaN, x, y, zS3 =a, y命令 22 函数的反函数函数 finverse格式 g = finverse(f) %返回函数 f 的反函数。其中 f 为单值的一元数学函数,如f=f(x)。若 f 的反函数存在,设为 g,则有 gf(x) = x。g = finverse(f,u) %若符号函数 f 中有几个符号变量时,对指定的符号自变量 v计算其反函数。若其反函数存在,设为 g,则有 gf(v) = v。
35、例 3-21syms x p q u v;V1 = finverse(1/(x2+p)*(x2+q) V2 = finverse(exp(u-2*v),u)计算结果为:Warning: finverse(1/(x2+p)/(x2+q) is not unique. In D:MATLABR12toolboxsymbolicsymfinverse.m at line 43V1 =1/2/x*2(1/2)*(x*(-x*q-x*p+(x2*q2-2*x2*q*p+x2*p2+4*x)(1/2)(1/2)V2 =2*v+log(u)命令 23 嵌套形式的多项式的表达式函数 horner格式 R =
36、horner(P) %若 P 为一符号多项式的矩阵,该命令将矩阵的每一元素转换成嵌套形式的表达式 R。例 3-22syms x yH1 = horner(2*x4-6*x3+9*x2-6*x-4) H2 = horner(x2+x*y;y3-2*y)计算结果为:H1 =-4+(-6+(9+(-6+2*x)*x)*x)*xH2 = x2+x*y (-2+y2)*y命令 24 符号表达式求和函数 symsum格式 r = symsum(s) %对符号表达式 s 中的符号变量 k(由命令 findsym(s)确定的)从 0 到 k-1 求和r = symsum(s,v) %对符号表达式 s 中指定的
37、符号变量 v 从 0 到 v-1 求和r = symsum(s,a,b) %对符号表达式 s 中的符号变量 k(由命令 findsym(s)确定的)从 a 到 b 求和r = symsum(s,v,a,b) %对符号表达式 s 中指定的符号变量 v 从 a 到 b 求和例 3-23第 3 章 符号运算107syms k n xr1 = symsum(k3) r2 = symsum(k2-k) r3 = symsum(sin(k*pi)/k,0,n) r4 = symsum(k2,0,10) r5 = symsum(xk/sym(k!), k, 0,inf) %为使 k!通过 MATLAB 表达
38、式的检验,必须把它作为一符号表达式。计算结果为:r1 = 1/4*k4-1/2*k3+1/4*k2r2 =1/3*k3-k2+2/3*kr3 =-1/2*sin(k*(n+1)/k+1/2*sin(k)/k/(cos(k)-1)*cos(k*(n+1)-1/2*sin(k)/k/(cos(k)-1)r4 =385r5 =exp(x)命令 25 广义超几何函数函数 hypergeom格式 hypergeom(n, d, z) %该命令为广义超几何函数 F(n,d,z),即已知的 Barnes 扩展超几何函数,记做 jFk,其中 j=length(n),k=length(d)。对于标量 a,b 与
39、 c,hypergeom(a,b,c, z)为 Gauss 超几何函数2F1(a,b;c,z)。说明 超几何函数的定义为: , 其中1kk,dn!zC)z,( v1jjk, )(C例 3-24syms a z nH1 = hypergeom(,z)H2 = hypergeom(1,z) H3 = hypergeom(1,2,z) H4 = hypergeom(1,2,2,3,z)H5 = hypergeom(a,z) H6 = hypergeom(,1,-z2/4)H7 = hypergeom(-n, n,1/2,(1-z)/2) 计算结果为:H1 =exp(z)H2 =-1/(-1+z)H3
40、 =(exp(z)-1)/zH4 =-2*(-exp(z)+1+z)/z2H5 =(1-z)(-a)H6 =besselj(0,z)H7 =MATLAB6.0 数学手册108hypergeom(n, -n,1/2,1/2-1/2*z)3.2.1 函数计算器函数 funtool格式 funtool %该命令将生成三个图形窗口,Figure No.1 用于显示函数 f 的图形,Figure No.2 用于显示函数 g 的图形,Figure No.3 为一可视化的、可操作与显示一元函数的计算器界面。在该界面上由许多按钮,可以显示两个由用户输入的函数的计算结果:加、乘、微分等。funtool还有一函数
41、存储器,允许用户将函数存入,以便后面调用。在开始时,funtool 显示两个函数 f(x) = x 与 g(x) = 1 在区间-2*pi, 2*pi上的图形。Funtool 同时在下面显示一控制面板,允许用户对函数 f、g进行保存、更正、重新输入、联合与转换等操作。输入命令 funtool 后,生成的界面如下:图 3-1 函数工具 funtool 界面图 3-2 函数 f 的图形 图 3-3 函数 g 的图形说明 文本输入框区域:控制面板的上面几行,可以输入文本;f = :显示代表函数 f 的符号表达式,可在该行输入其他有效的表达式来定义 f,再按回车键即可在 Figure No.1 中画出
42、图形;g = :显示代表函数 g 的符号表达式,可在该行输入其他有效的表达式来定义 g,再按回车键即可在 Figure No.2 中画出 g 图形;x = :显示用于画函数 f 与 g 的区间。可在该行输入其他的不同区间,再按回车键即可第 3 章 符号运算109改变 Figure No.1 与 Figure No.2 中的区间;a = :显示一用于改变函数 f 的常量因子( 见下面的操作按钮)。可在该行输入不同的常数。控制按钮区域:该区域有一些按钮,按下它们将对函数 f 转换成不同的形式与执行不同的操作。df/dx:函数 f 的导数;int f:函数 f 的积分( 没有常数的一个原函数) ,当
43、函数 f 的原函数不能用初等函数表示时,操作可能失败;simple f:化简函数 f(若有可能) ;num f:函数 f 的分子;den f:函数 f 的分母;1/f:函数 f 的倒数;finv:函数 f 的反函数,若函数 f 的反函数不存在,操作可能失败;f+a:用 f(x)+a 代替函数 f(x);f-a:用 f(x)-a 代替函数 f(x);f*a:用 f(x)+a 代替函数 f(x);f/a:用 f(x)/a 代替函数 f(x);fa:用 f(x)a 代替函数 f(x);f(x+a):用 f(x+a)代替函数 f(x);f(x*a):用 f(x-a)代替函数 f(x);f+g:用 f(
44、x)+g(x)代替函数 f(x);f-g:用 f(x)-g(x)代替函数 f(x);f*g:用 f(x)*g(x)代替函数 f(x);f/g:用 f(x)/g(x)代替函数 f(x);g=f:用函数 f(x)代替函数 g(x);swap:函数 f(x)与 g(x)互换;Insert:将函数 f(x)保存到函数内存列表中的最后;Cycle:用内存函数列表中的第二项代替函数 f(x);Delete:从内存函数列表中删除函数 f(x);Reset:重新设置计算器为初始状态;Help:显示在线的关于计算器的帮助;Demo:运行该计算器的演示程序;Close:关闭计算器的三个窗口。3.2.2 微积分命令
45、 1 极限函数 limit格式 limit(F,x,a) %计算符号表达式 F=F(x)的极限值,当 xa 时。limit(F,a) %用命令 findsym(F)确定 F 中的自变量,设为变量 x,再计算 FMATLAB6.0 数学手册110的极限值,当 xa 时。limit(F) %用命令 findsym(F)确定 F 中的自变量,设为变量 x,再计算 F 的极限值,当 x0 时。limit(F,x,a,right)或 limit(F,x,a,left) %计算符号函数 F 的单侧极限:左极限xa - 或右极限 xa+。例 3-25syms x a t h n; L1 = limit(co
46、s(x)-1)/x)L2 = limit(1/x2,x,0,right)L3 = limit(1/x,x,0,left)L4 = limit(log(x+h)-log(x)/h,h,0)v = (1+a/x)x, exp(-x);L5 = limit(v,x,inf,left)L6 = limit(1+2/n)(3*n),n,inf)计算结果为:L1 =0L2 =infL3 =-infL4 =1/xL5 = exp(a), 0L6 =exp(6)命令 2 导数(包括偏导数)函数 diff格式 diff(S,v)、diff(S,sym(v) %对表达式 S 中指定符号变量 v 计算 S 的 1
47、阶导数。diff(S) %对表达式 S 中的符号变量 v 计算 S 的 1 阶导数,其中 v=findsym(S)。diff(S,n) %对表达式 S 中的符号变量 v 计算 S 的 n 阶导数,其中 v=findsym(S)。diff(S,v,n) %对表达式 S 中指定的符号变量 v 计算 S 的 n 阶导数。例 3-26syms x y tD1 = diff(sin(x2)*y2,2) %计算 22xsinyD2 = diff(D1,y) %计算 D3 = diff(t6,6)计算结果为:D1 =-4*sin(x2)*x2*y2+2*cos(x2)*y2第 3 章 符号运算111D2 = -8*sin(x2)*x2*y+4*cos(x2)*yD3 =720命令 3 符号函数的积分函数 int格式 R = int(S,v) %对符号表达式 S 中指定的符号变量 v 计算不定积分。注意的是,表达式 R 只是函数 S 的一个原函数,后面没有带任意常数 C。R = int(S) %对符号