Программное использование полиномов Тейлора в Maple
-
11-09-2019 - |
Вопрос
Я пытаюсь использовать полином Тейлора программно в 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);
.
Есть ли способ сделать это без копирования и вставки вывода преобразования в определение f
?
Решение
Также было бы естественно определить T как функцию.
T:=y->subs(x=y,convert(taylor(sin(x),x=Pi/4,6),polynom));
T(1);
Другие советы
Если я вас правильно понял, это выполняет то, что вы хотите:
f := proc(z)
local p :: polynom;
p := convert(T[6], polynom);
return subs(x = z, p)
end proc
Несколько предыдущих ответов, включающих процедуры и подпрограммы, будут выполнять весь вывод ряда Тейлора, а также преобразование в полином для каждого входного сигнала.Это крайне неэффективно.
Вам нужно только один раз получить результат Тейлора и преобразовать его в полином.Имея этот результат, вы можете затем создать оператор (с помощью которого можно воздействовать на любое количество входных данных, просто оценивая полином в точке, но без необходимость пересчитывать весь ответ Тейлора).
Ниже приведен способ создания процедуры f, с помощью которой можно оценить в любой заданной точке аргумент x.Он вычисляет (усеченный) ряд Тейлора и просто преобразует его в полином. один раз.
> f:=unapply(convert(taylor(sin(x),x=Pi/4,6),polynom),x):