从 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 示例中看到您遗漏的这一步(从 convert
到 polynom
)。
有没有一种简单的方法可以从系列命令的结果中定义一个函数? (即没有余项)
例如
[> 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 示例中看到您遗漏的这一步(从 convert
到 polynom
)。