Maple Leaf中LaguerreL的计算问题

时间:2017-08-29 15:12:53

标签: maple polynomials mathematica-8

我正在尝试计算Maple中的LaguerreL(n, a x),但问题正在发生。

  1. 我认为它适用于小数和分数。

    含义,它适用于LaguerreL(m,n,0.5),而不适用于LaguerreL(m,n, 1/2)

    两者都不应该有用吗?

  2. 不计算负a的值。

    LaguerreL(3.0, 2.0, 2.0) = -1.33333333333   
    

    但是,

    LaguerreL(3.0, -2.0, 2.0) = Float(undefined) + Float (undefined)
    

    但是,负a的Laguerre有一个值。它没有未定义。

  3. 需要指定小数?

    LaguerreL(3,2,2) = LaguerreL(3,2,2)
    

    但是,

    LaguerreL(3.0,2.0,2.0) = -1.33333333333   
    
  4. Maple中的LaguerreL()与Mathematica中的LaguerreL[]有什么不同?

1 个答案:

答案 0 :(得分:0)

问题1:

这与问题3相同吗?

问题2:

restart;
ee:=LaguerreL(3, -2, 2);

                   ee := LaguerreL(3, -2, 2)

convert(ee, hypergeom); # weakness (bug reported)

                      LaguerreL(3, -2, 2)

convert(ee, elementary); # weakness (bug reported)

                      LaguerreL(3, -2, 2)

simplify(ee); # weakness (bug reported)

                      LaguerreL(3, -2, 2)

evalf(ee); # bug (bug reported)

             Float(undefined) + Float(undefined) I

以下是解决这个问题的几种方法:

restart;
ee:=LaguerreL(3, -2, 2);

                   ee := LaguerreL(3, -2, 2)

# One way:

# raise the second argument two times
ff:=convert(ee,LaguerreL,"raise b"$2):

lprint(%);
   (1/3)*LaguerreL(3, 2)-(13/12)*LaguerreL(3, 1, 2)
   +(1/2)*LaguerreL(3, 2, 2)

simplify(ff);

                             2
                             -
                             3

convert(ff,elementary);

                             2
                             -
                             3

evalf(ff);

                       0.6666666665

# Related...
ffh:=convert(ff, hypergeom):

lprint(%);
   (1/3)*hypergeom([-3], [1], 2)-(13/3)*hypergeom([-3], [2], 2)
   +5*hypergeom([-3], [3], 2)

convert(ffh,elementary);

                             2
                             -
                             3

simplify(ffh);

                             2
                             -
                             3

evalf(ffh);

                        0.6666666665

# Another (crude) way:
evalf(Limit(LaguerreL(3,a,2), a=-2.0));

                        0.6666666667

# Another (cruder) way
normal(convert(LaguerreL(3,a,2),elementary));

                       1  3   7     1
                       - a  - - a - -
                       6      6     3

eval(%,a=-2.0);

                        0.6666666667

问题3:

是的,这就是它的工作原理。另见问题4。

restart;
ee:=LaguerreL(3,2,2);

                   ee := LaguerreL(3, 2, 2)

simplify(ee);

                           -4/3

convert(ee, elementary);

                           -4/3

问题4:

比较各自在线文档中的定义。

https://reference.wolfram.com/language/ref/LaguerreL.html

https://www.maplesoft.com/support/help/maple/view.aspx?path=LaguerreL

在Mathematica页面上,您将看到以下转换为基本功能(在Maple中)是自动完成的。

restart;
ee:=LaguerreL(2, a, x);

                     ee := LaguerreL(2, a, x)

convert(ee, elementary);

                                                          2
           (1 + a) (a + 2)                (-a - 2) x
           --------------- + (-a - 2) x - -----------
                  2                         2 a + 4

expand(normal(%));

                 2                                2
            1/2 a  + 3/2 a + 1 - x a - 2 x + 1/2 x