El uso de polinomios de Taylor mediante programación en Maple
-
11-09-2019 - |
Pregunta
Estoy tratando de utilizar un polinomio de Taylor de programación en Maple, pero no parece lo siguiente para trabajar ...
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 lo siguiente tampoco funcionan:
-
f:=convert(T[6], polynom);
-
f:=convert(T[6], polynom, x);
-
f:=x->convert(T[6], polynom);
-
f:=x->convert(T[6], polynom, x);
.
¿Hay una manera de hacer esto sin copiar y pegar el resultado de convertir en la definición de f
?
Solución
También podría ser natural definir T como una función.
T:=y->subs(x=y,convert(taylor(sin(x),x=Pi/4,6),polynom));
T(1);
Otros consejos
Si he entendido bien, esto logra lo que quiere:
f := proc(z)
local p :: polynom;
p := convert(T[6], polynom);
return subs(x = z, p)
end proc
Varias respuestas anteriores que implican procedimientos y submarinos va a hacer toda la serie de Taylor derivación, así como la conversión al polinomio, para todos y cada entrada. Esto es altamente ineficiente.
Sólo es necesario para producir el resultado Taylor, y convertir al polinomio, una vez. Con ese resultado en la mano, a continuación, puede crear un operador (con la que actuar en tantas entradas como desee, simplemente mediante la evaluación del polinomio en el punto pero sin tener que recalcular toda la respuesta de Taylor).
A continuación se muestra una forma de crear un procedimiento de f con los que evaluar en cualquier punto dado para el argumento x. Se calcula el (truncada) en serie de Taylor y se convierte en polinomio simplemente una vez .
> f:=unapply(convert(taylor(sin(x),x=Pi/4,6),polynom),x):