最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

matlab符号运算函数大全

来源:动视网 责编:小OO 时间:2025-09-29 06:26:39
文档

matlab符号运算函数大全

2.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=
推荐度:
导读2.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=
2.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,…,m。或者至少有一个为标量时,方可进行乘法操作,否则将返回一出错信息。

A.*B   符号数组的乘法。

A.*B为按参量A与B对应的分量进行相乘。A与B必须为同型阵列,或至少有一个为标量。即:An*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    矩阵的左除法。

X=A\\B为符号线性方程组A*X=B的解。我们指出的是,A\\B近似地等于inv(A)*B。若X不存在或者不唯一,则产生一警告信息。矩阵A可以是矩形矩阵(即非正方形矩阵),但此时要求方程组必须是相容的。

A.\\B 数组的左除法。

A.\\B为按对应的分量进行相除。若A与B为同型阵列时,An*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    数组的右除法。

A./B为按对应的分量进行相除。若A与B为同型阵列时,An*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    矩阵的方幂。

计算矩阵A的整数B次方幂。若A为标量而B为方阵,A^B用方阵B的特征值与特征向量计算数值。若A与B同时为矩阵,则返回一错误信息。

A.^B    数组的方幂。

A.^B为按A与B对应的分量进行方幂计算。若A与B为同型阵列时,An*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'      矩阵的Hermition转置。

若A为复数矩阵,则A'为复数矩阵的共轭转置。即,若A=(aij)=(xij+i*yij),则 。

A.'      数组转置。

A.'为真正的矩阵转置,其没有进行共轭转置。

例2-1

>>syms a b c d e f g h;

>>A = [a b; c d];

>>B = [e f; g h];

>>C1 = A.*B

>>C2 = A.^B

>>C3 = A*B/A

>>C4 = A.*A-A^2

>>syms 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*h]

C2 =

   [ a^e, b^f]

    [ c^g, d^h]

C3 =

   [ -(a*c*f+c*b*h-a*e*d-b*d*g)/(a*d-b*c),   (a*b*h-b^2*g+a^2*f-b*a*e)/(a*d-b*c)]

    [ -(-c*e*d+c*d*h+c^2*f-d^2*g)/(a*d-b*c),   (a*d*h+a*c*f-b*c*e-b*d*g)/(a*d-b*c)]

C4 =

   [        -b*c, b^2-a*b-b*d]

    [ c^2-a*c-d*c,        -b*c]

x1 =

    (-a22*b1+b2*a21)/(a12*a21-a11*a22)

x2 =

   -(-a12*b1+a11*b2)/(a12*a21-a11*a22)

       2.2 基本运算

命令1 合并同类项

函数 collect

格式 R = collect(S)    %对于多项式S中的每一函数,collect(S)按缺省变量x的次数合并系数。

R = collect(S,v)   %对指定的变量v计算,操作同上。

例2-2

>>syms x y;

>>R1 = collect((exp(x)+x)*(x+2))

>>R2 = collect((x+y)*(x^2+y^2+1), y)

>>R3 = collect([(x+1)*(y+1),x+y])

计算结果为:

R1 =

     x^2+(exp(x)+2)*x+2*exp(x)

R2 =

     y^3+x*y^2+(x^2+1)*y+x*(x^2+1)

R3 =

     [ (y+1)*x+y+1, x+y]

命令2 列空间的基

函数 colspace

格式 B = colspace(A)   %返回矩阵B,其列向量形成由矩阵A的列向量形成的空间的坐标基,其中A可以是符号或数值矩阵。而size(colspace(A),2)等于rank(A)。即由A生成的空间维数等于A的秩。

例2-3

>>syms a b c

>>A = sym([1,a;2,b;3,c])

>>B = colspace(A)

计算结果为:

   A =

       [ 1, a]

       [ 2, b]

       [ 3, c]

   B =

       [                1,                0]

       [                0,                1]

       [ -(3*b-2*c)/(-b+2*a),   (-c+3*a)/(-b+2*a)]

命令3 复合函数计算

函数 compose

格式 compose(f,g)   %返回复合函数f[g(y)],其中f=f(x),g=g(y)。其中符号x为函数f中由命令findsym(f) 确定的符号变量,符号y为函数g中由命令findsym(g) 确定的符号变量。

compose(f,g,z)   %返回复合函数f[g(z)],其中f=f(x),g=g(y),符号x、y为函数f、g中由命令findsym确定的符号变量。

compose(f,g,x,z)   %返回复合函数f[g(z)],而令变量x为函数f中的自变量f=f(x)。令x=g(z),再将x=g(z)代入函数f中。

compose(f,g,x,y,z)   %返回复合函数f[g(z)]。而令变量x为函数f中的自变量f=f(x),而令变量y为函数g中的自变量g=g(y)。令x=g(y),再将x=g(y)代入函数f=f(x)中,得f[g(y)],最后用指定的变量z代替变量y,得f[g(z)]。

例2 -4

>>syms x y z t u v;

>>f = 1/(1 + x^2*y); h = x^t; 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 = 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)^t

C4 =

       x^sin(z)

C5 =

       ((-z/u)^(1/2))^t

C6 =

       x^((-y/z)^(1/2))

命令4 符号复数的共轭

函数 conj

格式 conj(X)   %返回符号复数X的共轭复数

例2-5

    X=real(X) + i*imag(X),则conj(X)=real(X) - i*imag(X)

命令5 符号复数的实数部分

函数 real

格式 real(Z)   %返回符号复数z的实数部分

命令6 符号复数的虚数部分

函数 imag

格式 imag(Z) %返回符号复数z的虚数部分

命令7 余弦函数的整函数

格式 Y = cosint(X)   %计算余弦函数在点X处的整函数值。其中X可以是数值矩阵,或符号矩阵。余弦函数的整函数定义为: ,其中 为Euler常数, =0.577215690153286060651209… i=1,2,…,size(X)。Euler常数可以通过命令vpa('eulergamma')获得。

例2-6

>>cosint(7.2)

>>cosint([0:0.1:1])

>>syms x;

>>f = cosint(x);

>>diff(x)

计算结果为:

ans =

     0.0960

ans =

    Columns 1 through 7 

         Inf   -1.7279   -1.0422   -0.92   -0.3788   -0.1778   -0.0223

    Columns 8 through 11 

      0.1005    0.1983    0.2761    0.3374

ans =

1

命令8 设置变量的精度

函数 digits

格式 digits(d)   %设置当前的可变算术精度的位数为整数d位

      d = digits   %返回当前的可变算术精度位数给d

      digits      %显示当前可变算术精度的位数

说明 设置有意义的十进制数值的、在Maple软件中用于做可变算术精度(命令为:vpa)计算的数字位数。其缺省值为32位数字。

例2-7

>>z = 1.0e-16    % z为一很小的数

>>x = 1.0e+2    % x为较大的数

>>digits(14)

>>y1 = vpa(x*z+1)   % 大数1“吃掉”小数x*y

>>digits(15)

>>y2 = vpa(x*z+1) % 防止“去掉”小数x*y

计算结果为:

z =

    1.0000e-016

x =

    100

y1 =

    1.0000000000000

y2 =

    1.00000000000001

命令9 将符号转换为MATLAB的数值形式

函数 double

格式 R = double(S)   %将符号对象S转换为数值对象R。若S为符号常数或表达式常数,double返回S的双精度浮点数值表示形式;若S为每一元素是符号常数或表达式常数的符号矩阵,double返回S每一元素的双精度浮点数值表示的数值矩阵R。

例2-8

>>gold_ratio = double(sym('(sqrt(5)-1)/2'))   % 计算黄金分割率。

>>T = sym(hilb(4))

>>R = double(T)

计算结果为:

gold_ratio =

          0.6180

T =

    [ 1, 1/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/7]

R =

    1.0000    0.5000    0.3333    0.2500

    0.5000    0.3333    0.2500    0.2000

    0.3333    0.2500    0.2000    0.1667

    0.2500    0.2000    0.1667    0.1429

命令10 符号表达式的展开

函数 expand

格式 R = expand(S)   %对符号表达式S中每个因式的乘积进行展开计算。该命令通常用于计算多项式函数、三角函数、指数函数与对数函数等表达式的展开式。

例2-9

>>syms x y a b c t

>>E1 = 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 =

     x^2*y-x^2*t-6*x*y+6*x*t+8*y-8*t

E2 =

     cos(x)*cos(y)-sin(x)*sin(y)

E3 =

     exp(a^3)*exp(a^2*b)^3*exp(a*b^2)^3*exp(b^3)

E4 =

     log(a*b/c^(1/2))

E5 =

     [ 2*sin(t)*cos(t),    2*cos(t)^2-1]

命令11 符号因式分解

函数 factor

格式 factor(X)   %参量x可以是正整数、符号表达式阵列或符号整数阵列。若X为一正整数,则factor(X)返回X的质数分解式。若x为多项式或整数矩阵,则factor(X)分解矩阵的每一元素。若整数阵列中有一元素位数超过16位,用户必须用命令sym生成该元素。

例2-10

>>syms a b x y

>>F1 = factor(x^4-y^4)

>>F2 = factor([a^2-b^2, x^3+y^3])

>>F3 = factor(sym('1234567012345670'))

计算结果为:

F1 =

      (x-y)*(x+y)*(x^2+y^2)

F2 =

     [(a-b)*(a+b), (x+y)*(x^2-x*y+y^2)]

F3 =

     (2)*(3)^2*(5)*(101)*(3803)*(3607)*(27961)*(3541)

命令12 符号表达式的分子与分母

函数 numden

格式 [N,D] = numden(A) 

说明 将符号或数值矩阵A中的每一元素转换成整系数多项式的有理式形式,其中分子与分母是相对互素的。输出的参量N为分子的符号矩阵,输出的参量D为分母的符号矩阵。

例2-11

>>syms x y a b c d;

>>[n1,d1] = numden(sym(sin(4/5)))

>>[n2,d2] = numden(x/y + y/x)

>>A = [a, 1/b;1/c d];

>>[n3,d3] = numden(A)

计算结果为:

n1 =

     61369247334093

d1 =

     9007199254740992

n2 =

     x^2+y^2

d2 =

    y*x

n3 =

    [ a, 1]

    [ 1, d]

d3 =

    [ 1, b]

    [ c, 1]

命令13 搜索符号表达式的最简形式

函数 simple

格式 r = simple(S)   %该命令试图找出符号表达式S的代数上的简单形式,显示任意的能使表达式S长度变短的表达式,且返回其中最短的一个。若S为一矩阵,则结果为整个矩阵的最短形式,而非是每一个元素的最简形式。若没有输出参量r,则该命令将显示所有可能使用的算法与表达式,同时返回最短的一个。

[r,how] = simple(S)   %没有显示中间的化简结果,但返回能找到的最短的一个。输出参量r为一符号,how为一字符串,用于表示算法。

例2-12

>>syms x

>>R1 = simple(cos(x)^4+sin(x)^4)

>>R2 = 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(x^3+3*x^2+3*x+1)

>> [R8,how] = simple(cos(3*acos(x)))

计算的结果为:

R1 =

     1/4*cos(4*x)+3/4

R2 =

     3*cos(x)^2-1

R3 =

     cos(2*x)

R4 =

     cos(x)+i*sin(x)

R5 =

     exp(i*x)

R6 =

     x ^3-x

R7 =

     (x+1)^3

R8 =

     4*x^3-3*x

how =

      expand

命令14 符号表达式的化简

函数 simplify

格式 R = simplify(S) 

说明 使用Maple软件中的化简规则,将化简符号矩阵S中每一元素。

例2-13

>>syms x a b c

>>R1 = simplify(sin(x)^4 + cos(x)^4)

>>R2 = simplify(exp(c*log(sqrt(a+b))))

>>S = [(x^2+5*x+6)/(x+2),sqrt(16)];

>>R3 = simplify(S)

计算结果为:

R1 =

     2*cos(x)^4+1-2*cos(x)^2

R2 =

     (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为列方向。

例2-14

>>syms a b c d

>>A = [a b c ; a b d; d c b; c b a];

>>d = size(A)

>>r = size(A, 2)

计算结果为:

d =

     4     3

r =

     3

命令16 代数方程的符号解析解

函数 solve

格式 g = solve(eq)   %输入参量eq可以是符号表达式或字符串。若eq是一符号表达式x^2 -2*x-1或一没有等号的字符串’x^2-2*x-1’,则solve(eq)对方程eq中的缺省变量(由命令findsym(eq)确定的变量)求解方程eq=0。若输出参量g为单一变量,则对于有多重解的非线性方程,g为一行向量。

g = solve(eq,var)   %对符号表达式或没有等号的字符串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求解。

注意:对于单个的方程或方程组,若不存在符号解,则返回方程(组)的数值解。

例2-15

>>solve('a*x^2 + b*x + c')

>>solve('a*x^2 + b*x + c','b')

>>solve('x + y = 1','x - 11*y = 5')

>>A = solve('a*u^2 + v^2', 'u - v = 1', 'a^2 - 5*a +6')

计算结果为:

ans =

[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))]

[ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]

ans =

-(a*x^2+c)/x

ans = 

    x: [1x1 sym]

    y: [1x1 sym]

A = 

    a: [4x1 sym]

    u: [4x1 sym]

    v: [4x1 sym]

命令17 以共同的子表达式形式重写一符号表达式

函数 subexpr

格式 [Y,SIGMA] = subexpr(X,SIGMA)

[Y,SIGMA] = subexpr(X,'SIGMA') 

说明 找出符号表达式 X中相同的子表达式,再结合命令pretty(X)将X中相同的、比较复杂的子字符串用符号%1,%2,…代替。而用命令pretty(Y)将X中相同的、比较复杂的子字符串用符号SIGMA代替。

例2-16

>>t = solve('a*x^3+b*x^2+c*x+d = 0');

>> [r,s] = subexpr(t,'s');

>>pretty(t)

>>pretty(r)

计算结果为:(略)

命令18 特征多项式

函数 poly

格式 p = poly(A)或p = poly(A, v) 

说明 若A为一数值阵列,则返回矩阵A的特征多项式的系数,且有:命令poly(sym(A))近似等于poly2sym(poly(A))。其近似程度取决于舍入误差的大小。若A为一符号矩阵,则返回矩阵A的变量为x的特征多项式。若带上参量v,则返回变量为v的特征多项式。

例2-17

>>A = hilb(4);

>>p = poly(A)

>>q = poly(sym(A))

>>s = poly(sym(A),z)

计算结果为:

p =

    1.0000   -1.6762    0.2652   -0.0017    0.0000

q =

    x^4-176/105*x^3+3341/12600*x^2-41/23625*x+1/6048000

s =

    -176/105*z^3+3341/12600*z^2-41/23625*z+1/6048000+z^4

命令19 将多项式系数向量转化为带符号变量的多项式

函数 poly2sym

格式 r = poly2sym(c)和r = poly2sym(c, v) 

说明 将系数在数值向量c中的多项式转化成相应的带符号变量的多项式(按次数的降幂排列)。缺省的符号变量为x;

若带上参量v,则符号变量用v显示。poly2sym使用命令sym的缺省转换模式(有理形式)将数值型系数转换为符号常数。该模式将数值转换成接近的整数比值的表达式,否则用2的幂指数表示。若x有一数值值,且命令sym能将c的元素精确表示,则eval(poly2sym(c))的结果与polyval(c,x)相同。

例2-18

>>r1 = poly2sym([1 2 3 4])

>>r2 = poly2sym([.694228, sqrt(2), sin(pi/3)])

>>r3 = poly2sym([1 0 1 -1 2], y)

计算结果为:

   r1 =

       x^3+2*x^2+3*x+4

   r2 =

       6253049924220329/9007199254740992*x^2+x*2^(1/2)+1/2*3^(1/2)

   r3 =

       y^4+y^2-y+2

命令20 将复杂的符号表达式显示成我们习惯的数学书写形式

函数 pretty

格式 pretty(S)    %用缺省的线型宽度79显示符号矩阵s中每一元素

      pretty(S,n)   %用指定的线型宽度n显示

例2-19

>>A = sym(pascal(3));

>>B = eig(A)

>>pretty(B,50) % 多看几次结果,会发现该命令显示的特点

>>syms x

>>y=log(x)/sqrt(x);

>>dy = diff(y)

>>pretty(dy)

计算结果为:

B =

     [         1]

     [ 4+15^(1/2)]

     [ 4 -15^(1/2)]

[    1    ]

[         ]

[      1/2]

[4 + 15   ]

[         ]

[      1/2]

[4 - 15   ]

dy =

    1/x^(3/2)-1/2*log(x)/x^(3/2)

1          log(x~)

---- - 1/2   -------

3/2          3/2

x~          x~

命令21 从一符号表达式中或矩阵中找出符号变量

函数 findsym

格式 r = findsym(S)   %以字母表的顺序返回表达式S中的所有符号变量(注:符号变量为由字母(除了i与j)与数字构成的、字母打头的字符串)。若S中没有任何的符号变量,则findsym返回一空字符串。

r = findsym(S,n) %返回字母表中接近x的n个符号变量

例2-20

>>syms a x y z t alpha beta

>>1 = findsym(sin(pi*t*alpha+beta))

>>S2 = findsym(x+i*y-j*z+eps-nan)

>>S3 = findsym(a+y,pi)

计算结果为;

   S1 =

        pi, alpha, beta, t

   S2 =

       NaN, x, y, z

   S3 =

       a, y

命令22 函数的反函数

函数 finverse

格式 g = finverse(f)   %返回函数f 的反函数。其中f为单值的一元数学函数,如f=f(x)。若f的反函数存在,设为g,则有g[f(x)] = x。

g = finverse(f,u) %若符号函数f中有几个符号变量时,对指定的符号自变量v计算其反函数。若其反函数存在,设为g,则有g[f(v)] = v。

例2-21

>>syms x p q u v;

>>V1 = finverse(1/((x^2+p)*(x^2+q)))

>>V2 = finverse(exp(u-2*v),u)

计算结果为:

   Warning: finverse(1/(x^2+p)/(x^2+q)) is not unique.

> In D:\\MATLABR12\oolbox\\symbolic\\@sym\\finverse.m at line 43

   V1 =

       1/2/x*2^(1/2)*(x*(-x*q-x*p+(x^2*q^2-2*x^2*q*p+x^2*p^2+4*x)^(1/2)))^(1/2)

   V2 =

       2*v+log(u)

命令23 嵌套形式的多项式的表达式

函数 horner

格式 R = horner(P)   %若P为一符号多项式的矩阵,该命令将矩阵的每一元素转换成嵌套形式的表达式R。

例3-22

>>syms x y

>>H1 = horner(2*x^4-6*x^3+9*x^2-6*x-4)

>>H2 = horner([x^2+x*y;y^3-2*y])

计算结果为:

   H1 =

       -4+(-6+(9+(-6+2*x)*x)*x)*x

   H2 =

       [ x^2+x*y]

       [ (-2+y^2)*y]

命令24 符号表达式求和

函数 symsum

格式 r = symsum(s)     %对符号表达式s中的符号变量k(由命令findsym(s)确定的)从0到k-1求和

r = symsum(s,v)   %对符号表达式s中指定的符号变量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求和

例2-23

>>syms k n x

>>r1 = symsum(k^3)

>>r2 = symsum(k^2-k)

>>r3 = symsum(sin(k*pi)/k,0,n)

>>r4 = symsum(k^2,0,10)

>>r5 = symsum(x^k/sym('k!'), k, 0,inf)   %为使k!通过MATLAB表达式的检验,必须把它作为一符号表达式。

计算结果为:

r1 = 

    1/4*k^4-1/2*k^3+1/4*k^2

r2 =

    1/3*k^3-k^2+2/3*k

r3 =

     -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 =

     385

r5 =

     exp(x)

命令25 广义超几何函数

函数 hypergeom

格式 hypergeom(n, d, z)   %该命令为广义超几何函数F(n,d,z),即已知的Barnes扩展超几何函数,记做jFk,其中j=length(n),k=length(d)。对于标量a,b与c,hypergeom([a,b],c, z)为Gauss超几何函数2F1(a,b;c,z)。

说明 超几何函数的定义为: , 其中 

例2-24

>>syms a z n

>>H1 = 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,-z^2/4)

>>H7 = hypergeom([-n, n],1/2,(1-z)/2)

计算结果为:

H1 =

     exp(z)

H2 =

    -1/(-1+z)

H3 =

    (exp(z)-1)/z

H4 =

    -2*(-exp(z)+1+z)/z^2

H5 =

    (1-z)^(-a)

H6 =

    besselj(0,z)

H7 =

    hypergeom([n, -n],[1/2],1/2-1/2*z)

2.2.1 函数计算器

函数 funtool

格式 funtool   %该命令将生成三个图形窗口,Figure No.1用于显示函数f的图形,Figure No.2用于显示函数g的图形,Figure No.3为一可视化的、可操作与显示一元函数的计算器界面。在该界面上由许多按钮,可以显示两个由用户输入的函数的计算结果:加、乘、微分等。funtool还有一函数存储器,允许用户将函数存入,以便后面调用。在开始时,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中画出图形;

g = :显示代表函数g的符号表达式,可在该行输入其他有效的表达式来定义g,再按回车键即可在Figure No.2中画出g图形;

x = :显示用于画函数f与g的区间。可在该行输入其他的不同区间,再按回车键即可改变Figure No.1与Figure No.2中的区间;

a = :显示一用于改变函数f的常量因子(见下面的操作按钮)。可在该行输入不同的常数。

控制按钮区域:该区域有一些按钮,按下它们将对函数f转换成不同的形式与执行不同的操作。

df/dx:函数f的导数;

int f:函数f的积分(没有常数的一个原函数),当函数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);

f^a:用f(x)^a代替函数f(x);

f(x+a):用f(x+a)代替函数f(x);

f(x*a):用f(x-a)代替函数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);

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 微积分

命令1 极限

函数 limit

格式 limit(F,x,a)   %计算符号表达式F=F(x)的极限值,当x→a时。

limit(F,a)   %用命令findsym(F)确定F中的自变量,设为变量x,再计算F的极限值,当x→a时。

limit(F)      %用命令findsym(F)确定F中的自变量,设为变量x,再计算F的极限值,当x→0时。

limit(F,x,a,'right')或limit(F,x,a,'left')   %计算符号函数F的单侧极限:左极限x→a- 或右极限x→a+。

例2-25

>>syms x a t h n;

>>L1 = limit((cos(x)-1)/x)

>>L2 = limit(1/x^2,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 =

     0

L2 =

     inf

L3 =

     -inf

L4 =

     1/x

L5 =

     [ exp(a),      0]

L6 =

     exp(6)

命令2 导数(包括偏导数)

函数 diff

格式 diff(S,'v')、diff(S,sym('v'))   %对表达式S中指定符号变量v计算S的1阶导数。

      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阶导数。

例2-26

>>syms x y t

>>D1 = diff(sin(x^2)*y^2,2) %计算 

>>D2 = diff(D1,y) %计算 

>>D3 = diff(t^6,6)

计算结果为:

D1 =

     -4*sin(x^2)*x^2*y^2+2*cos(x^2)*y^2

D2 = 

     -8*sin(x^2)*x^2*y+4*cos(x^2)*y

D3 =

     720

命令3 符号函数的积分

函数 int

格式 R = int(S,v)   %对符号表达式S中指定的符号变量v计算不定积分。注意的是,表达式R只是函数S的一个原函数,后面没有带任意常数C。

R = int(S) %对符号表达式S中的符号变量v计算不定积分,其中v=findsym(S)。

R = int(S,v,a,b)   %对表达式s中指定的符号变量v计算从a到b的定积分

R = int(S,a,b)     %对符号表达式s中的符号变量v计算从a到b的定积分,其中v=findsym(S)。

例2-27

>>syms x z t alpha

>>INT1 = int(-2*x/(1+x^3)^2)

>>INT2 = int(x/(1+z^2),z)

>>INT3 = int(INT2,x)

>>INT4 = int(x*log(1+x),0,1)

>>INT5 = int(2*x, sin(t), 1)

>>INT6 = int([exp(t),exp(alpha*t)])

计算结果为:

INT1 =

      -2/9/(x+1)+2/9*log(x+1)-1/9*log(x^2-x+1)-2/9*3^(1/2)*atan(1/3*(2*x-1)*… 3^(1/2))-2/9*(2*x-1)/(x^2-x+1)

INT2 =

       x*atan(z)

INT3 =

       1/2*x^2*atan(z)

INT4 =

       1/4

INT5 =

       1-sin(t)^2

INT6 =

       [ exp(t), 1/alpha*exp(alpha*t)]

命令4 常微分方程的符号解

函数 dsolve

格式 r = dsolve('eq1,eq2,…','cond1,cond2,…','v')

说明 对给定的常微分方程(组)eq1,eq2,…中指定的符号自变量v,与给定的边界条件和初始条件cond1,cond2,….求符号解(即解析解)r;若没有指定变量v,则缺省变量为t;在微分方程(组)的表达式eq中,大写字母D表示对自变量(设为x)的微分算子:D=d/dx,D2=d2/dx2,…。微分算子D后面的字母则表示为因变量,即待求解的未知函数。初始和边界条件由字符串表示:y(a)=b,Dy(c)=d,D2y(e)=f,等等,分别表示 , , ;若边界条件少于方程(组)的阶数,则返回的结果r中会出现任意常数C1,C2,…;dsolve命令最多可以接受12个输入参量(包括方程组与定解条件个数,当然我们可以做到输入的方程个数多于12个,只要将多个方程置于一字符串内即可)。若没有给定输出参量,则在命令窗口显示解列表。若该命令找不到解析解,则返回一警告信息,同时返回一空的sym对象。这时,用户可以用命令ode23或ode45求解方程组的数值解。

例2-28

>>D1 = dsolve('D2y – Dy =exp(x)')

>>D2 = dsolve('t*D2f = Df*log((Dy)/t)')

>>D3 = dsolve('(Dy)^2 + y^2 = 1','s')

>>D4 = dsolve('Dy = a*y', 'y(0) = b') % 带一个定解条件

>>D5 = dsolve('D2y = -a^2*y', 'y(0) = 1', 'Dy(pi/a) = 0') % 带两个定解条件

>>[x,y] = dsolve('Dx = y', 'Dy = -x') % 求解线性微分方程组

>>[u,v] = dsolve(‘Du=u+v,Dv=u-v’)

计算结果为:

D1 =

     -exp(x)*t+C1+C2*exp(t)

D2 =

     y(t)=Int(exp(t*diff(f(t),`$`(t,2))/diff(f(t),t))*t,t)+C1

D3 =

     [        -1]

     [        1]

     [ sin(s-C1)]

     [ -sin(s-C1)]

D4 =

     b*exp(a*t)

D5 =

     cos(a*t)

x = 

     cos(t)*C1+sin(t)*C2 

y =

     -sin(t)*C1+cos(t)*C2

u = 

    1/2*C1*exp(2^(1/2)*t) - 1/4*C1*2^(1/2)*exp(-2^(1/2)*t) + 1/4*C1*2^(1/2) *exp (2^(1/2)*t) + 1/2*C1*exp(-2^(1/2)*t) - 1/4*C2*2^(1/2)*exp(-2^(1/2)*t) +   1/4*C2 *2^(1/2)*exp(2^(1/2)*t)

v = 

   -1/4*C1*2^(1/2)*exp(-2^(1/2)*t)+1/4*C1*2^(1/2)*exp(2^(1/2)*t)+1/2*C2*exp

         (2^(1/2)*t)+1/4*C2*2^(1/2)*exp(-2^(1/2)*t)-1/4*C2*2^(1/2)*exp(2^(1/2)*t)+ 1/2*C2*exp(-2^(1/2)*t)

2.2.3 符号函数的作图

命令1 画符号函数的等高线图

函数 ezcontour

格式 ezcontour(f)   %画出二元符号函数f=f(x,y)的等高线图。函数f将被显示于缺省的平面区域[-2πezcontour(f,domain)   %在指定的定义域domain内画出二元函数f(x,y),参量domain可以是四维向量[xmin,xmax,ymin,ymax]或二维向量[min,max](其中显示区域为:minezcontour(…,n)   %用指定n*n个栅格点(对定义域的一种划分),在缺省(若没有指定)的区域内画出函数f的图形。n的缺省值为60。

说明 该命令用函数表达式作为标题显示,同时显示坐标轴的恰当的刻度标签。

例2-29

>>syms x y

>>f = (1-x)^2*exp(-(x^2)-(y+1)^2)-5*(x/5-x^3-y^5)*sin(-x^2-y^2)-1/3*exp(-(x+1)^2-y^2);

     ezcontour(f,[-3,3],49)

图形结果为图3-4。

命令2 用不同颜色填充的等高线图

函数 ezcontourf

格式 ezcontourf(f)   %画出二元符号函数f=f(x,y)的等高线图,且在不同的等高线之间自动用不同的颜色进行填充。函数f将被显示于缺省的平面区域[-2πezcontourf(f,domain) %在指定的定义域domain内画出二元函数f(x,y)的等高线图,且在不同的等高线之间自动用不同的颜色进行填充。定义域domain可以是四维向量[xmin,xmax,ymin,ymax]或二维向量[min,max](其中显示区域为:minezcontourf(…,n)   %用指定n*n个栅格点(对定义域的一种划分),在缺省(若没有指定)的区域内画出函数f的等高线图,且在不同的等高线之间自动用不同的颜色进行填充。n的缺省值为60。

例3-30

>>syms x y

>>f = (1-x)^2*exp(-(x^2)-(y+1)^2)-5*(x/5-x^3-y^5)*sin(-x^2-y^2)-1/3*exp(-(x+1)^2-y^2);

ezcontourf(f,[-3,3],)

图形结果为图3-5。

     

图3-4 等高线图                               图3-5 等高线填充图

命令3 符号函数的三维网格图

函数 ezmesh

格式 ezmesh(f)   %画出二元数学符号函数f=f(x,y)的网格图。函数f将显示于缺省的平面区域[-2πezmesh(f,domain)   %在指定的定义域domain内画出二元函数f(x,y)的网格图,定义域domain可以是四维向量[xmin,xmax,ymin,ymax]或二维向量[min,max](其中显示区域为:minezmesh(x,y,z)    %在缺省的矩形定义域范围[-2πezmesh(x,y,z,[smin,smax,tmin,tmax]) %在指定的矩形定义域范围[sminezmesh(x,y,z,[min,max])   %用指定的矩形定义域[minezmesh(f,…,n)   %用指定n*n个栅格点,在缺省(若没有指定)的区域内画出函数f网的图形。n的缺省值为60。

ezmesh(…,'circ')   %在一圆形区域(圆心位于定义域在中心)的范围内画出函数f的网格图形。

例3-31

>>syms x y

>>ezmesh(x*sin(-x^2-y^2),40,’circ’)

>>colormap [0 0 1]

图形结果为:(图3-6)

命令4 同时画出曲面网格图与等高线图

函数 ezmeshc

格式 ezmeshc(f)   %画出二元数学符号函数z=f(x,y)的网格图形,同时在xy平面上显示其等高线图。函数f将被显示于缺省的平面区域[-2πezmeshc(f,domain) %在指定的定义域domain内画出二元函数f(x,y)的网格图及其等高线图,domain可以是四维向量[xmin,xmax,ymin,ymax]或二维向量[min,max](其中显示区域为:minezmeshc(x,y,z)   %在缺省的矩形定义域范围[-2πezmeshc(x,y,z,[smin,smax,tmin,tmax]) %在指定的矩形定义域范围[sminezsurfc(x,y,z,[min,max])   %用指定的定义域[minezmeshc(f,…,n)   %用指定n*n个栅格点,在缺省(若没有指定)的区域内画出函数f的网格图形与等高线图。n的缺省值为60。

ezmeshc(…,'circ')   %在一圆形区域(圆心位于定义域在中心)的范围内画出函数f的网格图形及其等高线图。

例3-32

>>syms x y

>>ezmeshc(x*y/(1 + x^2 + y^2),[-5,5,-2*pi,2*pi],35)

图形结果为图3-7。

     

图3-6 三维网格图                      图3-7 网格等高线图

命令5 画符号函数的图形

函数 ezplot

格式 ezplot(f)   %对于显式函数f=f(x),在缺省的范围[-πezplot(f,[min,max])   %在指定的范围[minezplot(f,[xmin xmax],fign)   %在指定标号fign的窗口中、指定的范围[xmin xmax]内画出函数f=f(x)的图形。

ezplot(f,[xmin,xmax,ymin,ymax])   %在平面矩形区域[xminezplot(x,y)   %在缺省的范围0ezplot(x,y,[tmin,tmax])   %在指定的范围[tmin < t < tmax]内画参数形式函数x=x(t)与y=y(t)的图形。

ezplot(…,figure)   %在由参量figure句柄指定的图形窗口中画函数图形。

例3-33

>>syms x y

>>ezplot(x^6-y^2)

图形结果为图3-8。

例3-34

>>syms x

>>ezplot(exp(x)*sin(x)/x)

>>grid on

图形结果为图3-9。

命令6 三维参量曲线图

函数 ezplot3

格式 ezplot3(x,y,z)   %在缺省的范围0ezplot3(x,y,z,[tmin,tmax])   %在指定的范围tmin < t < tmax.内画空间参数形式的曲线x=x(t)、y=y(t)与z=z(t)的图形。

ezplot3(…,'animate')   %以动画形式画出空间三维曲线。

     

图3-8 隐函数图                       图3-9 显函数图

例3-35

>>syms t;

>>ezplot3(t*sin(t), t*cos(t), t,[0,20*pi])

图形结果为图3-10。

命令7 画极坐标图形

函数 ezpolar

格式 ezpolar(f)   %在缺省的范围0ezpolar(f,[a,b])   %在指定的范围a例3-36

>>syms t

>>ezpolar(1+cos(5*t))

命令8 三维带颜色的曲面图

函数 ezsurf

格式 ezsurf(f)   %画出二元数学符号函数z=f(x,y)的曲面图形。函数f将显示于缺省的平面区域[-2πezsurf(f,domain)   %在指定的定义域domain内画出二元函数f(x,y)的曲面图形,domain可以是四维向量[xmin,xmax,ymin,ymax],或者是二维向量[min,max] (其中有minezsurf(x,y,z)   %在缺省的矩形定义域范围-2πezsurf(x,y,z,[smin,smax,tmin,tmax])或ezsurf(x,y,z,[min,max])   %用指定的定义域画出参数形式的曲面图形

ezsurf(…,n)   %用指定n*n个栅格点,在缺省(若没有指定)的区域内画出函数f的图形,n的缺省值为60。

ezsurf(…,'circ')   %在一圆形中心位于定义域在中心的范围内画出函数f的曲面图形

例3-37

>>syms x y

>>ezsurf(real(atan(x+i*y)))

图形结果为图3-12。

命令9 同时画出曲面图与等高线图

函数 ezsurfc

格式 ezsurfc(f)   %画出二元数学符号函数z=f(x,y)的曲面图形与其等高线图。函数f将显示于缺省的平面区域[-2πezsurfc(f,domain)   %在指定的定义域domain内画出二元函数f(x,y)的曲面图形及其等高线图,domain可以是四维向量[xmin,xmax,ymin,ymax]或二维向量[min,max](其中有minezsurfc(x,y,z)   %在缺省的矩形定义域范围-2πezsurfc(x,y,z,[smin,smax,tmin,tmax])或ezsurfc(x,y,z,[min,max])   %用指定的定义域画出参数形式的曲面图形与等高线图

ezsurfc(…,n)   %用指定n*n个栅格点,在缺省(若没有指定)的区域内画出函数f的曲面图形与等高线图,n的缺省值为60。

ezsurfc(…,'circ') 在一圆形中心位于定义域的中心范围内画出函数f的曲面图形与等高线图

例3-38

>>syms x y

>>ezsurfc(x*y/(1 + x^2 + y^2),[-5,5,-2*pi,2*pi],35,’circ’)

3.2.4 积分变换

命令1 Fourier积分变换

函数 fourier

格式 F = fourier(f)   

说明 对符号单值函数f中的缺省变量x(由命令findsym确定)计算Fourier变换形式。缺省的输出结果F是变量w的函数: 

若f = f(w),则fourier(f)返回变量为t的函数:F= F(t)。

F = fourier(f,v) 对符号单值函数f中的指定变量v计算Fourier变换形式:

F = fourier(f,u,v) 令符号函数f为变量u的函数,而F为变量v的函数: 

例3-39

>>syms x w u v

>>f = sin(x)*exp(-x^2); F1 = fourier(f)

>>g = log(abs(w)); F2 = fourier(g)

>>h = x*exp(-abs(x)); F3 = fourier(h,u)

>>syms x real

>>k = cosh(-x^2*abs(v))*sinh(u)/v

>>F4 = fourier(k,v,u)

计算结果为:

F1 =

     -1/2*i*pi^(1/2)*exp(-1/4*(w-1)^2)+1/2*i*pi^(1/2)*exp(-1/4*(w+1)^2)

F2 =

     fourier(log(abs(w)),w,t)

F3 =

    -4*i/(1+u^2)^2*u

F4 =

     sinh(u)*(1/2*fourier(1/v*exp(x^2*abs(v)),v,u)-i*atan(u/x^2))

命令2 逆Fourier积分变换

函数 ifourier

格式 f = ifourier(F) 

说明 输出参量f = f(x)为缺省变量w的标量符号对象F的逆Fourier积分变换。即:F = F(w) → f = f(x)。若F = F(x),ifourier(F)返回变量t的函数:即:F = F(x) → f = f(t)。逆Fourier积分变换定义为: 

f = ifourier(F,u) 使函数f为变量u(u为标量符号对象)的函数: 

f = ifourier(F,v,u) 使F为变量v的函数,f为变量u的函数: 

例3-40

>>syms w v x t

>>syms a real

>>f = sqrt(exp(-w^2/(4*a^2)));

>>IF1 = ifourier(f)

>>g = exp(-abs(x));

>>IF2 = ifourier(g)

>>h = sinh(-abs(w)) – 1;

>>IF3 = simple(ifourier(h,t))

>>syms w real

>>k = exp(-w^2*abs(v))*sin(v)/v;

>>IF4 = ifourier(k,v,t)

计算结果为:

IF1 =

     ifourier(exp(-1/4*w^2/a^2)^(1/2),w,x)

IF2 =

     1/(1+t^2)/pi

IF3 =

    -1/2*(pi*ifourier(exp(abs(w)),w,t)+pi*ifourier(exp(abs(w)),w,t)*t^2-… 1+2*pi*Dirac(t))/(1+t^2)/pi

IF4 =

    1/2*(atan((t+1)/w^2)-atan((t-1)/w^2))/pi

命令3 Laplace变换

函数 laplace

格式 L = laplace(F) 

说明 输出参量L = L(s)为有缺省符号自变量t的标量符号对象F的Laplace变换。即:F = F(t) → L = L(s)。若F = F(s),则fourier(F)返回变量为t的函数L。

即:F = F(s) → L = L(t)。Laplace变换定义为: 

laplace(F,t) 使函数L为变量t(t为标量符号自变量)的函数: 

fourier(F,w,z) 使L为变量z的函数,F为变量w的函数: 

例3-41

>>syms x s t v

>>f1= sqrt(t);

>>L1 = laplace(f)

>>f2 = 1/sqrt(s);

>>L2 = laplace(f2)

>>f3 = exp(-a*t);

>>L3 = laplace(f3,x)

>>f4 = 1 - sin(t*v);

>>L4 = laplace(f4,v,x)

计算结果为:

L1 =

     1/(s-1/s^2)

L2 =

     (pi/t)^(1/2)

L3 =

     1/(x+a)

L4 =

     1/x-t/(x^2+t^2)

命令4 逆Laplace变换

函数 ilaplace

格式 F = ilaplace(L)

说明 输出参量F = F(t)为缺省变量s的标量符号对象L的逆Laplace变换

即:F = F(w) → f = f(x)。若L = L(t),则ifourier(L)返回变量为x的函数F。即:F = F(x) → f = f(t)。逆Laplace变换定义为: 

其中c为使函数L(s)的所有的奇点位于直线s = c左边的实数。

F = ilaplace(L,y) 使函数F为变量y(y为标量符号对象)的函数: 

F = ilaplace(L,y,x) 使F为变量x的函数,L为变量y的函数: 

例3-42

>>syms a s t u v x

>>f = exp(x/s^2);

>>IL1 = ilaplace(f)

>>g = 1/(t-a)^2;

>>IL2 = ilaplace(g)

>>k = 1/(u^2-a^2);

>>IL3 = ilaplace(k,x)

>>y = s^3*v/(s^2+v^2);

>>IL4 = ilaplace(y,v,x)

计算结果为:

IL1 =

      ilaplace(exp(x/s^2),s,t)

IL2 =

      x*exp(a*x)

IL3 =

     1/(-a^2)^(1/2)*sin((-a^2)^(1/2)*x)

IL4 =

     s^3*cos((s^2)^(1/2)*x)

命令5 Riemann ζ-函数

函数 zeta

格式 Y = zeta(X)   %计算数值矩阵、或符号矩阵参量x中每一元素的ζ-函数值。ζ-函数定义为: 

      Y = zeta(n, X)   %返回ζ(X)函数的n阶导数

例3-43

>>syms x y

>>Y1 = zeta(1.5)

>>Y2 = zeta(1.2:0.1:2.1)

>>Y3 = zeta([x 2;4 x+y])

>>DZ = diff(zeta(x),x,3)

计算结果为:

Y1 =

    2.6124

Y2 =

  Columns 1 through 7 

    5.5916    3.9319    3.1055    2.6124    2.2858    2.0543    1.8822

  Columns 8 through 10 

      1.7497    1.49    1.5602

Y3 =

     [   zeta(x,2),   zeta(2,2)]

     [   zeta(4,2), zeta(x+y,2)]

DZ =

     zeta(3,x)

命令6 z-变换

函数 ztrans

格式 F = ztrans(f)   %对缺省自变量为n(就像由命令findsym确定的一样)的单值函数f计算z-变换。输出参量F为变量z的函数:f = f(n) → F = F(z)。函数f的z-变换定义为: 

若函数f = f (z),则ztrans(f)返回一变量为w的函数:f = f(z) → F = F(w)

      F = ztrans(f,w) %用符号变量w代替缺省的z作为函数F的自变量

F = ztrans(f,k,w) %对函数f中指定的符号变量k计算z-变换: 

例3-44

>>syms a k w x n z

>>f1 = n^4;

>>ZF1 = ztrans(f)

>>f2 = a^z;

>>ZF2 = ztrans(g)

>>f3 = sin(a*n);

>>ZF3 = ztrans(f,w)

>>f4 = exp(k*n^2)*cos(k*n);

>>ZF4 = ztrans(f,k,x)

计算结果为:

   ZF1 =

         z*(z^3+11*z^2+11*z+1)/(z-1)^5

   ZF2 =

         w/a/(w/a-1)

   ZF3 =

        -w*sin(a)/(-w^2+2*w*cos(a)-1)

   ZF5 =

        (x/exp(n^2)-cos(n))*x/exp(n^2)/(x^2/exp(n^2)^2-2*x/exp(n^2)*cos(n)+1)

命令7 逆z-变换

函数 iztrans

格式 f = iztrans(F) 

说明 输出参量f = f(n)为有缺省变量z的单值符号函数F的逆z-变换。即:F = F(z) → f = f(n)。若F = F(n),则iztrans(F)返回变量为k的函数f(k)。

即:F = F(n) → f = f(k)。逆z-变换定义为: ,n =1,2,3,…

其中R为一正实数,它使函数F(z)在圆域之外 |z|≥R是解析的。

f = iztrans(F,k) 使函数f为变量k(k为标量符号对象)的函数f(k): ,k=1,2,3,…

f = iztrans(F,w,k)   使函数F为变量w的函数,f为变量k的函数: ,k=1,2,3,…

例3-45

>>syms a n k x z

>>f1= 2*z/(z^2+2)^2;

>>IZ1 = iztrans(f1)

>>f2 = n/(n+1);

>>IZ2 = iztrans(f2)

>>f3 = z/sqrt(z-a);

>>IZ3 = iztrans(f3,k)

>>f4 = exp(z)/(x^2-2*x*exp(z));

>>IZ4 = iztrans(f4,x,k)

计算结果为:

     IZ1 =

           -1/8*sum(1/_alpha*(1/_alpha)^n,_alpha

     IZ2 =

           (-1)^k

     IZ3 =

           iztrans(z/(z-a)^(1/2),z,k)

     IZ4 =

           1/4*(-charfcn[0](k)-2*charfcn[1](k)*exp(z)+2^k*exp(z)^k)/exp(z)

3.2.5 Taylor级数

命令1 符号函数的Taylor级数展开式

函数 taylor

格式 r = taylor(f,n,v)   %返回符号表达式f中的、指定的符号自变量v(若表达式f中有多个变量时)的n-1阶的Maclaurin多项式(即在零点附近v=0)近似式,其中v可以是字符串或符号变量。

r = taylor(f)    %返回符号表达式f中的、符号变量v的6阶的Maclaurin多项式(即在零点附近v=0)近似式,其中v=findsym(f)。

r = taylor(f,n,v,a) %返回符号表达式f中的、指定的符号自变量v的n-1阶的Taylor级数(在指定的a点附近v=a)的展开式。其中a可以是一数值、符号、代表一数字值的字符串或未知变量。我们指出的是,用户可以以任意的次序输入参量n、v与a,命令taylor能从它们的位置与类型确定它们的目的。解析函数f(x)在点x=a的Taylor级数定义为: 

例3-46

>>syms x y a pi m m1 m2

>>f = sin(x+pi/3);

>>T1 = taylor(f)

>>T2 = taylor(f,9)

>>T3 = taylor(f,a)

>>T4 = taylor(f,m1,m2)

>>T5 = taylor(f,m,a)

>>T6 = taylor(f,y)

>>T7 = taylor(f,y,m)   % 或taylor(f,m,y)

>>T8 = taylor(f,m,y,a)

>>T9 = taylor(f,y,a)

计算结果为:

T1 =

1/2*3^(1/2)+1/2*x-1/4*3^(1/2)*x^2-1/12*x^3+1/48*3^(1/2)*x^4+1/240*x^5

T2 =

1/2*3^(1/2)+1/2*x-1/4*3^(1/2)*x^2-1/12*x^3+1/48*3^(1/2)*x^4+1/240*x^5-1/1440*3^(1/2)* x^6-1/10080*x^7+1/800*3^(1/2)*x^8

T3 =

sin(a+1/3*pi)+cos(a+1/3*pi)*(x-a)-1/2*sin(a+1/3*pi)*(x-a)^2-1/6*cos(a+1/3*pi)* (x-a)^3+1/24*sin(a+1/3*pi)*(x-a)^4+1/120*cos(a+1/3*pi)*(x-a)^5

T4 =

sin(m2+1/3*pi)+cos(m2+1/3*pi)*(x-m2)-1/2*sin(m2+1/3*pi)*(x-m2)^2-1/6* cos(m2+1/3*pi)*(x-m2)^3+1/24*sin(m2+1/3*pi)*(x-m2)^4+1/120* 

cos(m2+1/3*pi)*(x-m2)^5

T5 =

sin(a+1/3*pi)+cos(a+1/3*pi)*(x-a)-1/2*sin(a+1/3*pi)*(x-a)^2-1/6*cos(a+1/3*pi)* (x-a)^3+1/24*sin(a+1/3*pi)*(x-a)^4+1/120*cos(a+1/3*pi)*(x-a)^5

T6 =

sin(y+1/3*pi)+cos(y+1/3*pi)*(x-y)-1/2*sin(y+1/3*pi)*(x-y)^2-1/6*cos(y+1/3*pi) *(x-y)^3+1/24*sin(y+1/3*pi)*(x-y)^4+1/120*cos(y+1/3*pi)*(x-y)^5

T7 =

sin(m+1/3*pi)+cos(m+1/3*pi)*(x-m)-1/2*sin(m+1/3*pi)*(x-m)^2-1/6*cos(m+1/3*pi) *(x-m)^3+1/24*sin(m+1/3*pi)*(x-m)^4+1/120*cos(m+1/3*pi)*(x-m)^5

T8 =

sin(a+1/3*pi)+cos(a+1/3*pi)*(x-a)-1/2*sin(a+1/3*pi)*(x-a)^2-1/6*cos(a+1/3*pi)* (x-a)^3+1/24*sin(a+1/3*pi)*(x-a)^4+1/120*cos(a+1/3*pi)*(x-a)^5

T9 =

sin(a+1/3*pi)+cos(a+1/3*pi)*(x-a)-1/2*sin(a+1/3*pi)*(x-a)^2-1/6*cos(a+1/3*pi)* (x-a)^3+1/24*sin(a+1/3*pi)*(x-a)^4+1/120*cos(a+1/3*pi)*(x-a)^5

命令2 Taylor级数计算器

函数 taylortool

格式 taylortool   %该命令生成一图形用户界面,显示缺省函数f=x*cos(x)在区间[-2*pi,2*pi]内的图形,同时显示函数f的前N=7项的Taylor多项式级数和(在a=0附近的)图形,如图1。通过更改f(x)项可得不同的函数图形。

taylortool('f') %对指定的函数f,用图形用户界面显示出Taylor展开式。(图3-14)

例3-47

>>taylortool('sin(x*sin(x))')

再通过改变相关的参量,可得如图3-15。

3.2.6 其它

命令1 Jacobian矩阵

函数 jacobian

格式 R = jacobian(w,v)   

说明 计算w对v的Jacobian矩阵。其中w为符号单值函数表达式或符号列向量,v为一符号行向量。输出参量R=(rij)的元素rij 为: ,i=1,2,…,size(w),j=1,2,…,length(v)

例3-48

>>syms x y z u v w

>>w = [x*y*z; y; x+z];

>>v = [x,y,z];

>>R = jacobian(w,v)

>>b = jacobian(x+u, v)

计算结果为:

R =

    [ y*z, x*z, x*y]

    [   0,   1,   0]

    [   1,   0,   1]

b =

    [ 1, 0, 0]

命令2 Jordan标准形

函数 jordan

格式 J = jordan(A) %计算矩阵A的Jordan标准形。其中A为一确切已知的符号或数值矩阵。即它的元素必须是整数或小整数的比值。任何的矩阵输入误差将导致不同的Jordan标准形。即Jordan标准形对数据是敏感的。

[V,J] = jordan(A)   %返回Jordan标准形矩阵J与相似变换矩阵V,其中V的列向量为矩阵A的广义特征向量。它们满足:V\\A*V=J。

例3-49

>>A = [1 -3 -2; -1 1 -1; 2 4 5]

>> [V,J] = jordan(A)

>>V = double(V);

>>Test = all(all(V\\A*V == J))

计算结果为:

V =

    -1    -1     1

     0    -1     0

     1     2     0

J =

     3     0     0

     0     2     1

     0     0     2

Test = 1

命令3 Lamber的W函数

函数 lambertw

格式 Y = lambertw(X)   %计算参量X的每一元素x的Lamber的W函数值,其中X为一数值或符号矩阵。Lamber的函数W=W(x)为方程的解:wew = x。

例3-50

>>W1 = lambertw([ -exp(-1); pi])

>>syms x y

>>W2 = lambertw([0 x;1 y])

计算结果为:

W1 =

     -1.0000 + 0.0000i

      1.0737        

W2 =

      [         0, lambertw(x)]

      [ lambertw(1), lambertw(y)]

命令4 符号表达式的LaTex的表示式

函数 latex

格式 latex(S)   %返回符号表达式S的LaTex格式的表示式。该格式可以使表达式S在图形窗口中进行显示(如命令title、text等)。

例3-51

>>syms x

>>f = taylor(sin(1+x));

>>Lat1 = latex(f)

>>M = sym(magic(3));

>>Lat2 = latex(M)

计算结果为:

Lat1 =

\\sin(1)+\\cos(1)\\mbox {{\t `x~`}}-1/2\\,\\sin(1){\\mbox {{\t `x~`}}}^{2}-1/6\\,\\cos(1){\\mbox {{\t `x~`}}}^{3}+1/24\\,\\sin(1){\\mbox {{\t `x~`}}}^{4}+{\\frac {1}{120}}\\,\\cos(1){\\mbox {{\t `x~`}}}^{5}

Lat2 =

\\left [\\begin {array}{ccc} 8&1&6\\\\\\noalign{\\medskip}3&5&7\\\\\\noalign{\\medskip}4…

&9&2\\end {array}\\right ]

命令5 调用Maple内核

函数 maple

格式 r = maple('statement')   %将参数命令statement传递给Maple内核,且返回计算结果。在必要时,可以在参量statement后面加上分号(;)。

r = maple('function',arg1,arg2,…)   %该命令接受任何的带引号的函数名'function',与相关的输入参量arg1,arg2,…。在必要时,要将输入参量转换成符号表达式。若输入参量为syms,则maple返回一sym,否则返回一类型为char的结果。

[r, status] = maple(…)   %有条件地返回警告/错误信息。当语句能顺利执行,则r为计算结果,status为0;若语句不能通过执行,r为相应的警告/错误信息,而status为一正整数。

maple('traceon') 、maple traceon、maple trace on   %将显示所有的后面的Maple语句与其相应的结果显示于屏幕上

maple('traceoff') 、maple traceoff、maple trace off   %将关闭上面的操作特性

例3-52

>>Pi = maple('evalf(Pi,100)')

>>syms x

>>v = [x^2-1;x^2-4]

>>maple traceon

>>w = factor(v)

计算结果为:

Pi =

3.1415926535793238462338327950288419716939937510582097494459230781…

                                           062862098628034825342117068

v =

    [ x^2-1]

    [ x^2-4]

statement:

   map(ifactor,array([[x^2-1],[x^2-4]]));

result:

   Error, (in ifactor) invalid arguments

statement:

   map(factor,array([[x^2-1],[x^2-4]]));

result:

   matrix([[(x-1)*(x+1)], [(x-2)*(x+2)]])

w =

[ (x-1)*(x+1)]

[ (x-2)*(x+2)]

命令6 初始化Maple内核

函数 mapleinit

格式 mapleinit 该命令用于确定包含Maple库的路径,再装载Maple的线性代数与积分变换包、初始化命令digits、指定几个别名。用户可以编辑mapleinit的M-文件,用于改变到Maple包的路径,只需按如下的方法改变变量initstring的值:

1.若用户已经有一Maple V,Release 5的库在目录C:\\Maple\\Lib上,在文件mapleinit.m中加入:maplelib = 'C:\\MAPLE\\LIB'

2.从MATLAB中删除旧的Maple包版本。

命令7 Maple数学函数的数值计算

函数 mfun

格式 Y = mfun('function',par1,par2,par3,par4) 

说明 计算一指定的Maple软件中已知的数学函数function的数值。每一参量par为该函数相应的具体数值。用户可以输入满4个参量。最后指定的参量可以是矩阵,通常对应于x。其他参量的位数取决于该函数规定的范围。用户可以通过下面的命令获得相关参数的信息:help mfunlist;mhelp function;Maple用16位精度计算函数function。函数function中的任何奇异值将返回NaN。

例3-53

>>M1 = mfun('dilog',5)

>>M2 = mfun('Psi',[3*i 0])

计算结果为:

M1 =

     -2.3699

M2 =

     1.1080 + 1.7375i      NaN

命令8 列出命令mfun中特定的Maple函数

函数 mfunlist

格式 mfunlist 

1.列出在使用命令mfun中用到的特殊的数学函数。下表中参量的一些约定:x,y:实数参量;z,z1,z2:复数参量;m,n:整数参量

表3-1 mfun特殊函数

函数名定   义

Mfun名

参量说明
Bernoulli数

与多项式

生成函数: 

Bernoulli(n)

Bernoulli(n,t)

n≥0

0<|t|<2π

Bessel函数

BesselI, BesselJ:第一类Bessel函数

BesselK, BesselY:第二类Bessel函数

BesselJ(v,x)

BesselY(v,x)

BesselI(v,x)

BesselK(v,x)

v为实数

Beta函数

Beta(x,y)
二项式系数Binomial(m,n)
完全椭圆积分第一、二、三类Legendre完全椭圆积分

LegendreKc(k)

LegendreEc(k)

LegendrePic(a,k)

a为任意实数

-∞k为任意实数

0

带余模的完全

椭圆积分

与余模相关的第一、二、三类Legendre完全椭圆积分

LegendreKc1(k)

LegendreEc1(k)

LegendrePic1(a,k)

a为任意实数

-∞k为任意实数

0

余差函数

与它的累积分

Erfc(z) = 

erfc(n,z) = 

erfc(z)

erfc(n,z)

n>0
Dawson积分

dawson(x)
Ψ-函数

Psi(x)
二重对数积分dilog(x)x>1
误差函数        erf(z)
Euler数与多项式

生成Euler数的函数:

euler(n)

euler(n,z)

n≥0

|t|<π/2

指数积分    Ei(n,z)

Ei(x)

n≥0

real(z)>0

Fresnel正弦

与余弦积分

FresnelC(x)

FresnelS(x)

Г-函数

GAMMA(z)
调和函数     =Ψ(n+1) + γ

harmonic(n)n>0
双曲正弦

与余弦积分

Chi(z) = γ+ln(z) +

       

Shi(z)

Chi(z)

广义超几何函数F(n,d,z) = hypergeom(n,d,x)

其中

n = [n1,n2,…]

d = [d1,d2,…]

n1,n2,… 为实数

d1,d2,… 为非负实数

不完全椭圆积分第一、二、三类不完全Legendre完全椭圆积分

LegendreF(x,k)

LegendreE(x,k)

LegendrePi(x,a,k)

0-∞0
不完全Г-函数

Г(a,z)= 

GAMMA(z1,z2)
Г-函数的对数

lnГ(z) = ln(Г(z))

lnGAMMA(z)
对数积分      = Ei(ln(x))Li(x)x>1
Г多项式函数

其中Ψ(z)为Γ-函数

Psi(n,z)N≥0

移位正弦积分Ssi(z)=Si(z) – π/2

Ssi(z)
对于上面的特殊函数function,用户可以通过下面的命令得到更多的帮助信息:mhelp function

总的来说,函数的精度跟它的根相比会较低,且当它的参数相对而言较大时,精度也较底。函数的执行时间取决于特定的函数与它的输入参量。总之,其计算将比标准的MATLAB计算慢一些。

2.正交多项式函数:

下面的函数需要Maple正交多项式包,它们仅仅对于MATLAB的扩展符号数学工具箱有用。在使用这些函数之前,用户要用下面的命令初始化Maple正交多项式包:maple('with','orthopoly')

表3-2 正交多项式函数

下表参量的约定:n:非负整数;x:任意实数

多 项 式

Maple名

参量说明
Gegenbauer多项式

G(n,a,x)a为非有理数代数表达式或者是大于-1/2的有理数

Hermite多项式

H(n,x)
Laguerre多项式

L(n,x)
广义Laguerre多项式

L(n,a,x)a为非有理数代数表达式或者是大于-1的有理数

LegendreP(n,x)
JacobiP(n,a,b,x)a与b为非有理数代数表达式或者是大于-1的有理数

第一、二类Chebyshev多项式

T(n,x)U(n,x)
命令9 Maple命令帮助

函数 mhelp

格式 mhelp topic、mhelp('topic') 

说明 返回Maple软件中指定的Maple标题topic的在线帮助文档信息。

命令10 交互式计算Riemann和

函数 rsums

格式 rsums(f)   %交互式地通过Riemann和计算函数f(x)的积分。rsums(f)显示函数f 的图形。用户可以通过拖动图形下方的滑块来调整Riemann和的项数,有效的项数从2到128。

例3-54

>>rsums sin(-5*x^2)

命令11 在一符号表达式或矩阵中进行符号替换

函数 subs

格式 R = subs(S)   %用从调用的函数中获得的变量值,或MATLAB的工作空间中存在的变量值,替换表达式S中所有出现的相同的变量,同时自动进行化简计算;若是数值表达式,则计算出结果。

R = subs(S,old,new)   %用新值new替换表达式s中的旧值old,参量old是一符号变量或代表一变量名的字符串,new是一符号/数值变量或表达式。若old与new为有相同大小的阵列,则用new中相应的元素替换old中的元素;若S与old为标量,而new为阵列或单元阵列,则标量S与old将扩展为与new同型的阵列;若new为数值矩阵的单元阵列,则替换按元素的方向执行。若subs(S,old,new)没有改变S,则subs(S,old,new)被证明是可靠的。这提供了对以前版本的向后兼容性,且不会交换参量的位置。

例3-55

>>a = 980,C1=3;

>>y = dsolve('Dy = -a*y')

>>syms b

>>subs(y)

>>subs(a+b,a,4)

>>subs(cos(a)+sin(b),{a,b},{sym('alpha'),2})

>>subs(exp(a*t),'a',-magic(2))

>>subs(x*y,{x,y},{[0 1;-1 0],[1 -1;-2 1]})

命令12 创建符号数值、变量与对象

函数 sym

格式 S = sym(A) %用输入参量A,构造一类型为‘sym’的对象s。若A为字符串,则S为符号数值或变量;若A为一数值标量或矩阵,则S为代表所给数值的符号表达式。

x = sym('x') %创建一名字为‘x’的符号变量,且将结果存于x。

pi = sym('pi') %创建一符号数值,这可避免了用浮点近似表示π的误差,pi的这种创建方法将暂时地代替了有相同名字、用于生成无理数π的近似值的内建数值函数pi.m。

x = sym('x','real')   %创建一实符号变量。若x有了具体的值,则命令clear x只能清除x的值,而不能改变x的“属性”。

x = sym('x','unreal') %使x变成一纯粹的、没有任何附加属性的符号变量。

S = sym(A,flag)   %将一数值标量或矩阵转换成符号形式。对浮点数值的转换方法要用第二个参量flag来指定。其中flag可以是'r'、'd'、'e'、'f'。

’f’:代表“浮点格式”。

’r’:代表“有理格式”(该方式为缺省转换格式)。

’e’:代表“估计误差”。

’d’:代表“十进制格式”。

命令13 创建多个符号对象的快捷命令

函数 syms

格式 syms arg1 arg2 …     %定义arg1、arg2为符号

syms arg1 arg2 … real   %该命令是下列命令的简洁形式:

arg1 = sym('arg1','real');

arg2 = sym('arg2','real'); …

syms arg1 arg2 … unreal   %该命令是下列命令的简洁形式:

arg1 = sym('arg1','unreal');

arg2 = sym('arg2','unreal'); …

注:clear x不能清除符号变量x的属性“real”,只能清除变量x。要想清除该属性,要输入:syms x unreal或clear mex或clear all。执行后面的两个命令后,Maple内核将重新装载入MATLAB的工作空间(这是不可取的,因为花费时间)。

例3-56

>>syms x beta real %符号对象已经生成,执行下面一些操作:

>>whos

将显示工作空间中存在变量的详细信息:

      Name       Size         Bytes Class

       beta       1x1            132 sym object

        x        1x1           126 sym object

      Grand total is 7 elements using 258 bytes

y = x + i*beta; clear x; y 

通过上面的操作,我们看到,当x被清除掉后,y的值并没有马上改变:

y =

     x+i*beta

命令14 将符号多项式转化为数值多项式

函数 sym2poly

格式 c = sym2poly(s)   %返回符号多项式s的数值系数行向量c。多项式自变量次数的系数按降幂排列。即行向量c的第一分量c1为多项式s的最高次数项的系数,c2为第二高次数项的系数,如此类推。

例3-57

>>syms x u;

>>c1 = sym2poly(3*x^3 - 2*x^2 – sqrt(5))

>>c2 = sym2poly(u^4 – 3 + 5*u^2)

计算结果为:

c1 =

    3.0000   -2.0000    0   -2.2361

c2 =

     1     0     5     0    -3

命令15 可变精度算法

函数 vpa

格式 R = vpa(A)   %用可变精度算法来计算A中的每一元素,使其成为有d位精确度的十进制数。其中d为命令digits设置的当前位数。R中的每一元素为一符号表达式。

R = vpa(A,d)或R = vpa A d   %用参量d指定的位数(而非命令digits设置的位数)来表示A中的每一元素。R中的每一元素为一符号表达式。

例3-58

>>digits(25)

>>q = vpa(sym(sin(pi/6)))

>>p = vpa(pi)

>>gold_ratioi = vpa('(sqrt(5)-1)/2')

>>vpa pi 75

>>A = vpa(gallery(5),8)

>>B = vpa(hilb(3),5)

计算结果为:

q =

    .5000000000000000000000000

p =

    3.14159265357932384623

gold_ratioi =

          .61803398874948482045870

ans =

     3.1415926535793238462338327950288419716939937510582097… 4944592307810629

A =

    [     -9.,     11.,    -21.,     63.,   -252.]

    [     70.,    -69.,    141.,   -421.,   1684.]

    [   -575.,    575., -1149.,   3451., -13801.]

    [   31., -31.,   7782., -23345., 93365.]

    [   1024., -1024.,   2048., -6144., 24572.]

B =

    [     1., .50000, .33333]

    [ .50000, .33333, .25000]

    [ .33333, .25000, .20000]

命令16 符号表达式的C语言代码

函数 ccode

格式 ccode(s)   %返回C语言的、用于计算符号表达式s的语句段落

例3-59

>>syms x

>>s = taylor(exp(x));

>>ccode(s)

计算结果为:

ans =

      t0 = 1.0+x+x*x/2.0+x*x*x/6.0+x*x*x*x/24.0+x*x*x*x*x/120.0;

注:t0为 在x=0附近的计算公式(Taylor展式)。

命令17 符号表达式的Fortran语言代码

函数 fortran

格式 fortan(s)   %返回一Fortan语言的、用于计算符号表达式s的语句段落

例3-60

>>syms x

>>f = taylor(sin(x));

>>F1 = fortran(f)

>>H = sym(hilb(4));

>>F2 = fortran(t*(H))

计算结果为:

F1 =

        t0 = x-x**3/6+x**5/120

F2 =

        T(1,1) = t         T(1,2) = t/2    T(1,3) = t/3    T(1,4) = t/4

        T(2,1) = t/2       T(2,2) = t/3    T(2,3) = t/4    T(2,4) = t/5

        T(3,1) = t/3       T(3,2) = t/4    T(3,3) = t/5    T(3,4) = t/6 

        T(4,1) = t/4       T(4,2) = t/5    T(4,3) = t/6    T(4,4) = t/7

文档

matlab符号运算函数大全

2.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=
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top