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

StackOverflow https://stackoverflow.com/questions/1828855

  •  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):
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top