是否有一种简单的方法可以从系列命令的结果中定义函数? (即没有剩余期限)
例如
[> 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;
我不知道如何在没有手动复制/粘贴的情况下执行此操作的简单方法,我需要动态地执行此操作。目前,我这样做非常麻烦:
[> 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);
我不知道将两种情况合二为一的可靠方法(第二种情况下的术语数与命令相似,而在第一种情况下它几乎是两倍,但由于某些功能,它不是一种可靠的方法即使是高阶,也可能只有很少的条款。)
答案 0 :(得分:1)
这种方法以同样的方式涵盖了两个例子。
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
您可以在[{1}}本身help page的示例中看到您遗失的这一步骤(convert
至polynom
)。