从 Maple 中 Series 命令的结果定义一个函数

Define a function from a result of Series command in Maple

有没有一种简单的方法可以从系列命令的结果中定义一个函数? (即没有余项)

例如

[> series(cos(x), x=0, 5); 1-1/2*x^2+1/24*x^4+O(x^5)

我想定义一个函数

[> f:=(x)->1-1/2*x^2+1/24*x^4;

我不知道没有手动操作的简单方法 copy/paste,我需要动态地进行操作。目前我的做法真的很麻烦:

[> S:=series(cos(x), x=0, 5); f:=unapply(`+`(seq(op(S)[2*k-1]*x^(op(S)[2*k]), k=1..nops(S)/2-1)), x);

如果是generalized series requiring fractional exponents我可以这样做:

[> S:=series(sqrt(sin(x)), x=0, 4); f:=unapply(S-op(S)[nops(S)], x);

我不知道将两种情况合并为一个的可靠方法(第二种情况的项数与顺序相似,而第一种情况几乎翻倍,但这不是可靠的方法,因为有些函数即使是高阶函数也可能只有很少的项。

此方法以相同的方式涵盖两个示例。

restart;

S:=series(cos(x), x=0, 5);

                      1  2   1   4    / 6\
             S := 1 - - x  + -- x  + O\x /
                      2      24   

P:=convert(S, polynom);

                          1  2   1   4
                 P := 1 - - x  + -- x 
                          2      24   

F:=unapply(P, x);

                             1  2   1   4
               F := x -> 1 - - x  + -- x 
                             2      24   

F(0.3);

                      0.9553375000

cos(0.3);

                      0.9553364891

还有一个,

restart;

S:=series(sqrt(sin(x)), x=0, 5);

         (1/2)   1   (5/2)    1    (9/2)    / (13/2)\
   S := x      - -- x      + ---- x      + O\x      /
                 12          1440                    

P:=convert(S, polynom);

               (1/2)   1   (5/2)    1    (9/2)
         P := x      - -- x      + ---- x     
                       12          1440       

F:=unapply(P, x);

                  (1/2)   1   (5/2)    1    (9/2)
       F := x -> x      - -- x      + ---- x     
                          12          1440       

F(0.3);

                      0.5436177192

sqrt(sin(0.3));

                      0.5436177027

您可以在 series 本身的 help page 示例中看到您遗漏的这一步(从 convertpolynom)。