zoukankan      html  css  js  c++  java
  • MATLAB符号运算(1)

    3章  符号运算

    3.1  算术符号操作

    命令  +-*.*\、.\、/./、^、.^、’、.’

    功能  符号矩阵的算术操作

    用法如下:

    A+BA-B  符号阵列的加法与减法。

    AB为同型阵列时,A+BA-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对应的分量进行相乘。AB必须为同型阵列,或至少有一个为标量。即: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为按对应的分量进行相除。若AB为同型阵列时,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为按对应的分量进行相除。若AB为同型阵列时,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对应的分量进行方幂计算。若AB为同型阵列时,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.'为真正的矩阵转置,其没有进行共轭转置。

    3-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)

    3.2  基本运算

    命令1  合并同类项

    函数  collect

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

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

    3-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的秩。

    3-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)]

    命令 复合函数计算

    函数  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),符号xy为函数fg中由命令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)]。

    3-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))

    命令 符号复数的共轭

    函数  conj

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

    3-5

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

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

    函数  real

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

    命令 符号复数的虚数部分

    函数  imag

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

    命令 余弦函数的整函数

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

    3-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.6492   -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位数字。

    3-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。

    3-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中每个因式的乘积进行展开计算。该命令通常用于计算多项式函数、三角函数、指数函数与对数函数等表达式的展开式。

    3-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生成该元素。

    3-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('12345678901234567890'))

    计算结果为:

    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为分母的符号矩阵。

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

         6461369247334093

    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为一字符串,用于表示算法。

    3-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中每一元素。

    3-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)       %Am*n阶的符号矩阵,则输出结果d=[mn]

          [m,n] = size(A)    %分别返回矩阵A的行数于m,列数于n

          d= size(A, n)     %返回由标量n指定的A的方向的维数:n=1为行方向,n=2为列方向。

    3-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求解。

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

    3-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代替。

    3-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的特征多项式。

    3-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)相同。

    3-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显示

    3-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中的所有符号变量(注:符号变量为由字母(除了ij)与数字构成的、字母打头的字符串)。若S中没有任何的符号变量,则findsym返回一空字符串。

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

    3-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(x)。若f的反函数存在,设为g,则有g[f(x)] = x。

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

    3-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\toolbox\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)确定的)从0k-1求和

    r = symsum(s,v)    %对符号表达式s中指定的符号变量v0v-1求和

    r = symsum(s,a,b)   %对符号表达式s中的符号变量k(由命令findsym(s)确定的)从ab求和

    r = symsum(s,v,a,b)   %对符号表达式s中指定的符号变量vab求和

    3-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,bchypergeom([a,b],c, z)Gauss超几何函数2F1(a,b;c,z)。

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

    3-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)

  • 相关阅读:
    ubuntu 安装 redis desktop manager
    ubuntu 升级内核
    Ubuntu 内核升级,导致无法正常启动
    spring mvc 上传文件,但是接收到文件后发现文件变大,且文件打不开(multipartfile)
    angular5 open modal
    POJ 1426 Find the Multiple(二维DP)
    POJ 3093 Margritas
    POJ 3260 The Fewest Coins
    POJ 1837 Balance(二维DP)
    POJ 1337 A Lazy Worker
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2330563.html
Copyright © 2011-2022 走看看