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?

¿Fue útil?

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):
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top