Usando Taylor Polinômios programação em Maple
-
11-09-2019 - |
Pergunta
Eu estou tentando usar um polinômio Taylor programaticamente em Maple, mas o seguinte não parece trabalho ...
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);
Todo o seguindo também não trabalho:
-
f:=convert(T[6], polynom);
-
f:=convert(T[6], polynom, x);
-
f:=x->convert(T[6], polynom);
-
f:=x->convert(T[6], polynom, x);
.
Existe uma maneira de fazer isso sem copiar e colar a saída do converso na definição de f
?
Solução
Também pode ser natural definir T como uma função.
T:=y->subs(x=y,convert(taylor(sin(x),x=Pi/4,6),polynom));
T(1);
Outras dicas
Se eu entendi bem, este realiza o que você quer:
f := proc(z)
local p :: polynom;
p := convert(T[6], polynom);
return subs(x = z, p)
end proc
Várias respostas anteriores envolvendo procedimentos e subs vai fazer toda a derivação série de Taylor, bem como a conversão para polynom, para cada entrada. Isso é altamente ineficiente.
Você só precisa produzir o resultado Taylor, e convertido ao polynom, uma vez. Com esse resultado em mãos, você pode criar um operador (com o qual a agir em tantas entradas como você deseja, apenas através da avaliação do polinômio no ponto, mas sem ter que recalcular toda a resposta taylor).
Abaixo está uma maneira de criar um procedimento f com que avaliar em qualquer ponto para o argumento x. Ele calcula o (truncado) série de Taylor e convertidos para polynom apenas uma vez .
> f:=unapply(convert(taylor(sin(x),x=Pi/4,6),polynom),x):