Программное использование полиномов Тейлора в Maple

Я пытаюсь программно использовать полином Тейлора в 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?


person kzh    schedule 01.12.2009    source источник
comment
Обратите внимание, что convert (в данном случае) принимает только два аргумента: серию и полином имени. Все остальное отбрасывается, поэтому convert(T,polynom,x) делает не больше, чем convert(T,polynom).   -  person qedi    schedule 02.12.2009


Ответы (3)


Также может быть естественным определить T как функцию.

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

T(1);
person qedi    schedule 02.12.2009

Если я правильно понял вас, это выполняет то, что вы хотите:

f := proc(z)
    local p :: polynom;
    p := convert(T[6], polynom); 
    return subs(x = z, p)
end proc
person jmbr    schedule 02.12.2009

Несколько более ранних ответов, включающих процедуры и подпрограммы, будут выполнять весь вывод ряда Тейлора, а также преобразование в полином для каждого входа. Это крайне неэффективно.

Вам нужно только один раз получить результат Тейлора и преобразовать его в многочлен. Имея этот результат, вы можете затем создать оператор (с помощью которого можно воздействовать на любое количество входных данных, просто оценивая полином в точке, но без повторного вычисления всего ответа Тейлора).

Ниже приведен способ создания процедуры f, с помощью которой в любой заданной точке вычисляется аргумент x. Он вычисляет (усеченный) ряд Тейлора и преобразует его в многочлен всего один раз.

> f:=unapply(convert(taylor(sin(x),x=Pi/4,6),polynom),x):
person acer    schedule 11.05.2010
comment
Поскольку сейчас лето, а школа не работает, у меня нет копии Maple, чтобы проверить ваш ответ, но +1 за очень хорошо продуманный ответ. Вам придется подождать до осени, чтобы увидеть, получите ли вы зеленую галочку за отличные навыки ответов. - person kzh; 13.05.2010