No puedo invocar función en Matlab (Valoración de 5.00 sobre 5, resultante de 1 votos)

Aplicaciones y herramientas informáticas, internet y otros sucedáneos informáticos
Avatar de Usuario
por
#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
por
#336090
A mí me funciona correctamente.

El motivo más obvio que se me ocurre es que no hayas escrito igual el nombre de la función y la llamada a la función.
Avatar de Usuario
por
#336092
Efectivamente. Lo había guardado como SumaParcialç y no sumo como SumoParcial, la cedilla siempre presente..... Muchísimas gracias, yo por mí ya puedo cerrar el hilo.

Por cierto, como tengo que hacer cosas de ésto para la asignatura de Métodos Numéricos o Cálculo Numérico, no sé cómo se llama, y lo voy haciendo por ordenador, si a alguien le interesa lo puedo ir subiendo, por si a alguien le ayuda.
por
#336096
Es una buena idea :smile

Personalmente te recomiendo que comentes TODO LO QUE PUEDAS el código (usando %), aunque te pueda parecer muy redundante, pero intenta comentarlo todo. No sólo para que lo entiendan cuando lo compartas, sino para ayudarte a tí mismo cuando leas código que lleves tiempo sin usar. Te lo digo por experiencia :lol :lol
Palabras clave
Temas similares

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

Permisos de mensaje

No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro