- 13 Mar 2014, 17:51
#336089
Hola, estoy empezando con Matlab y tengo una duda referente a la invocación de funciones(en hacer las funciones, con lo que sé de C no tengo problema).
El caso, para una función que me evalúa el polinomio de McLaurin de f(x)=e^(-x) y tiene como argumentos de entrada el punto a evaluar (me dan 4 puntos) y el grado del polinomio (que me dicen que tiene que proporcionar una aproximación con un error menor a 10^(-15). He hecho ambas funciones; las pongo aquí:
PARA EL GRADO DEL POLINOMIO:
%FUNCIÓN QUE CALCULA EL ORDEN DE UNA SERIE DE TAYLOR DE CUALQUIER FUNCIÓN
%PARA QUE SE DE UN ERROR MENOR AL DADO
function [t orden]=serietaylor(f,origen,error)
fx=sym(f);
v=findsym(fx);
orden=0;
t=taylor(fx,v,origen,'order',orden);%Calculamos la serie de Taylor de fx para el
%orden 0
while(abs(subs(fx)-subs(t)))>error %Bucle hasta que el error es menor al dado
orden=orden+1;
t=taylor(fx,v,origen,'order',orden);
end
PARA EVALUAR LA FUNCION EN LOS PUNTOS
function out=SumaParcial(x,N)
% evalua la suma parcial con N+1 terminos
out=0;
for k = 0:N
out=out+((-1)^k)*(x^k)/factorial(k);
end
Y ahora viene el problema, que no me había pasado nunca. Cuando quiero invocar la función para evaluar los puntos, meto ésto (suponiendo el punto x=0.001 y el grado N=5, que es el óptimo para esa condición):
out=SumaParcial(0.001,5)
Y me sale ésto:
Undefined function 'SumaParcial' for input arguments of type 'double'.
Supongo que sabéis inglés, pero por si acaso lo traduzco:
Función suma parcial no definida para argumentos entrantes de tipo double (de coma flotante). ¿Cómo puedo conseguir que me evalúe el punto?
¡Gracias de antemano!
P.D.: Sé que es una tontería, pero es la tontería que me fastidia y no me deja hacer lo demás
Última edición por felaresil el 13 Mar 2014, 19:08, editado 1 vez en total
Yo sé quién soy, y sé quién puedo ser....(Alonso Quijano; "El Quijote")
Say "hello" to my little friend (Tony Montana)
Todos somos aficionados. La vida es tan corta que no da para más(Charles Chaplin)