0

我正在尝试在 Maple 中以编程方式使用泰勒多项式,但以下似乎不起作用...

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);.

有没有一种方法可以做到这一点,而无需将 convert 的输出复制并粘贴到 的定义中f

4

3 回答 3

2

如果我对您的理解正确,则可以实现您想要的:

f := proc(z)
    local p :: polynom;
    p := convert(T[6], polynom); 
    return subs(x = z, p)
end proc
于 2009-12-02T09:28:07.677 回答
2

涉及过程和子程序的几个较早的答案将对每个输入进行整个泰勒级数推导,以及转换为多项式。那是非常低效的。

您只需要生成一次泰勒结果并转换为多项式。有了这个结果,您就可以创建一个运算符(只需通过评估该点的多项式,就可以根据需要对任意数量的输入进行操作,而无需重新计算整个泰勒答案)。

下面是一种创建过程 f 的方法,使用该过程 f 可以在任何给定点对参数 x 进行评估。它计算(截断的)泰勒级数并仅转换为多项式

> f:=unapply(convert(taylor(sin(x),x=Pi/4,6),polynom),x):
于 2010-05-11T23:31:01.497 回答
1

将 T 定义为函数也可能很自然。

T:=y->subs(x=y,convert(taylor(sin(x),x=Pi/4,6),polynom));

T(1);
于 2009-12-02T14:53:40.063 回答