我试图在Maple中以编程方式使用Taylor多项式,但以下似乎不起作用......
T[6]:=taylor(sin(x),x=Pi/4,6);convert(T[6], polynom, x);
f:=proc(x)
convert(T[6], polynom, x);
end proc;
f(1);
以下所有内容也不起作用:
f:=convert(T[6], polynom);
f:=convert(T[6], polynom, x);
f:=x->convert(T[6], polynom);
f:=x->convert(T[6], polynom, x);
。有没有一种方法可以做到这一点,而无需将转换输出复制并粘贴到f
的定义中?
答案 0 :(得分:2)
如果我理解正确,这可以实现你想要的:
f := proc(z)
local p :: polynom;
p := convert(T[6], polynom);
return subs(x = z, p)
end proc
答案 1 :(得分:2)
涉及过程和子的几个早期答案将为每个输入完成整个泰勒系列推导以及转换为多项式。这是非常低效的。
您只需要生成泰勒结果,并转换为多项式,一次。有了这个结果,你就可以创建一个操作符(用它来作用于你想要的任意数量的输入,只需要通过评估该点的多项式,但而不得不重新计算整个泰勒答案)。
下面是一种创建过程f的方法,用于在任何给定点评估参数x。它计算(截断的)泰勒系列并转换为多项式只需一次。
> f:=unapply(convert(taylor(sin(x),x=Pi/4,6),polynom),x):
答案 2 :(得分:1)
将T定义为函数也是很自然的。
T:=y->subs(x=y,convert(taylor(sin(x),x=Pi/4,6),polynom));
T(1);